openapi: 3.0.3 info: title: Regions Open Banking API description: >- Regions Bank is implementing FDX-compliant open banking APIs through its partnership with Axway Amplify Open Banking. These APIs enable secure, consent-based financial data sharing for consumer banking, corporate banking, and wealth management, replacing legacy screen-scraping with standardized API access. Built to Financial Data Exchange (FDX) API v6.x standards. Regions joined FDX in 2021 and is targeting full compliance with CFPB open banking rules by April 2027. version: 1.0.0 contact: name: Regions Bank Developer Support url: https://www.regions.com x-api-id: regions-open-banking-api x-audience: partner x-standard: FDX servers: - url: https://api.regions.com/v1 description: Production tags: - name: Account Information description: Consumer and business account balances and details - name: Transactions description: Account transaction history - name: Customer description: Customer profile and identity - name: Payments description: Payment initiation and status - name: Consent description: Customer consent management for data sharing paths: /accounts: get: operationId: listAccounts summary: List Accounts description: >- Retrieve a list of accounts for the authenticated customer, including checking, savings, credit card, loan, and investment accounts. tags: - Account Information parameters: - name: accountType in: query description: Filter by account type required: false schema: type: string enum: - CHECKING - SAVINGS - CREDIT_CARD - LOAN - INVESTMENT - MORTGAGE - name: status in: query description: Filter by account status required: false schema: type: string enum: - OPEN - CLOSED responses: '200': description: List of accounts content: application/json: schema: type: object properties: accounts: type: array items: $ref: '#/components/schemas/Account' page: $ref: '#/components/schemas/PageInfo' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' /accounts/{accountId}: get: operationId: getAccount summary: Get Account description: Retrieve details for a specific account. tags: - Account Information parameters: - $ref: '#/components/parameters/AccountId' responses: '200': description: Account details content: application/json: schema: $ref: '#/components/schemas/Account' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' /accounts/{accountId}/transactions: get: operationId: listTransactions summary: List Transactions description: Retrieve transaction history for a specific account. tags: - Transactions parameters: - $ref: '#/components/parameters/AccountId' - name: startDate in: query description: Start date for transaction range (YYYY-MM-DD) required: false schema: type: string format: date - name: endDate in: query description: End date for transaction range (YYYY-MM-DD) required: false schema: type: string format: date - name: limit in: query required: false schema: type: integer default: 50 maximum: 500 - name: offset in: query required: false schema: type: integer default: 0 responses: '200': description: Transaction list content: application/json: schema: type: object properties: transactions: type: array items: $ref: '#/components/schemas/Transaction' page: $ref: '#/components/schemas/PageInfo' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /customers/current: get: operationId: getCurrentCustomer summary: Get Current Customer description: Retrieve the profile of the currently authenticated customer. tags: - Customer responses: '200': description: Customer profile content: application/json: schema: $ref: '#/components/schemas/Customer' '401': $ref: '#/components/responses/Unauthorized' /payments: post: operationId: initiatePayment summary: Initiate Payment description: Initiate a payment transfer from an authorized account. tags: - Payments requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentRequest' responses: '201': description: Payment initiated content: application/json: schema: $ref: '#/components/schemas/Payment' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '422': description: Insufficient funds or invalid account content: application/json: schema: $ref: '#/components/schemas/Error' /payments/{paymentId}: get: operationId: getPayment summary: Get Payment description: Retrieve status for a specific payment. tags: - Payments parameters: - name: paymentId in: path required: true schema: type: string responses: '200': description: Payment details content: application/json: schema: $ref: '#/components/schemas/Payment' '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' /consents: get: operationId: listConsents summary: List Consents description: List active data sharing consents granted by the customer. tags: - Consent responses: '200': description: List of active consents content: application/json: schema: type: object properties: consents: type: array items: $ref: '#/components/schemas/Consent' '401': $ref: '#/components/responses/Unauthorized' /consents/{consentId}: delete: operationId: revokeConsent summary: Revoke Consent description: Revoke a specific data sharing consent. tags: - Consent parameters: - name: consentId in: path required: true schema: type: string responses: '204': description: Consent revoked successfully '404': $ref: '#/components/responses/NotFound' '401': $ref: '#/components/responses/Unauthorized' components: securitySchemes: OAuth2: type: oauth2 description: OAuth 2.0 with customer consent (FDX standard) flows: authorizationCode: authorizationUrl: https://auth.regions.com/oauth/authorize tokenUrl: https://auth.regions.com/oauth/token scopes: accounts:read: Read account information transactions:read: Read transaction history customers:read: Read customer profile payments:write: Initiate payments parameters: AccountId: name: accountId in: path required: true schema: type: string description: Unique account identifier responses: Unauthorized: description: Missing or invalid OAuth2 token content: application/json: schema: $ref: '#/components/schemas/Error' Forbidden: description: Insufficient scope or consent not granted content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Account: type: object properties: accountId: type: string description: Unique account identifier accountType: type: string enum: - CHECKING - SAVINGS - CREDIT_CARD - LOAN - INVESTMENT - MORTGAGE accountNumber: type: string description: Masked account number (last 4 digits visible) nickname: type: string description: Customer-assigned account nickname status: type: string enum: - OPEN - CLOSED currency: type: string default: USD balance: $ref: '#/components/schemas/Balance' institution: type: string description: Institution name (Regions Bank) Balance: type: object properties: available: type: number format: float description: Available balance current: type: number format: float description: Current ledger balance limit: type: number format: float description: Credit limit (for credit accounts) currency: type: string default: USD asOf: type: string format: date-time description: Balance as-of timestamp Transaction: type: object properties: transactionId: type: string description: Unique transaction identifier accountId: type: string description: Account the transaction belongs to postedDate: type: string format: date description: Date transaction was posted transactionDate: type: string format: date description: Date transaction occurred amount: type: number format: float description: Transaction amount (negative for debits) currency: type: string default: USD description: type: string description: Transaction description category: type: string description: Spending category type: type: string enum: - DEBIT - CREDIT status: type: string enum: - PENDING - POSTED merchantName: type: string description: Merchant name for card transactions merchantCategory: type: string description: Merchant category code (MCC) Customer: type: object properties: customerId: type: string description: Unique customer identifier name: $ref: '#/components/schemas/Name' email: type: string format: email phone: type: string address: $ref: '#/components/schemas/Address' dateOfBirth: type: string format: date description: Customer date of birth (masked for privacy) Name: type: object properties: first: type: string middle: type: string last: type: string prefix: type: string suffix: type: string Address: type: object properties: line1: type: string line2: type: string city: type: string state: type: string postalCode: type: string country: type: string default: US PaymentRequest: type: object required: - sourceAccountId - amount - currency - paymentType properties: sourceAccountId: type: string description: Account to debit destinationAccountId: type: string description: Internal destination account ID (for internal transfers) amount: type: number format: float minimum: 0.01 currency: type: string default: USD paymentType: type: string enum: - INTERNAL_TRANSFER - ACH - WIRE memo: type: string description: Payment memo or description scheduledDate: type: string format: date description: Date to schedule payment (defaults to today) Payment: type: object properties: paymentId: type: string description: Unique payment identifier status: type: string enum: - PENDING - PROCESSING - COMPLETED - FAILED - CANCELLED sourceAccountId: type: string amount: type: number format: float currency: type: string default: USD paymentType: type: string scheduledDate: type: string format: date completedDate: type: string format: date-time memo: type: string createdAt: type: string format: date-time Consent: type: object properties: consentId: type: string description: Unique consent identifier thirdPartyName: type: string description: Name of the authorized third party scopes: type: array items: type: string description: Authorized data scopes grantedAt: type: string format: date-time expiresAt: type: string format: date-time status: type: string enum: - ACTIVE - EXPIRED - REVOKED PageInfo: type: object properties: total: type: integer limit: type: integer offset: type: integer hasMore: type: boolean Error: type: object properties: code: type: string message: type: string details: type: string traceId: type: string security: - OAuth2: - accounts:read