Open Banking APIs: The Complete Integration Guide for Financial Services

Yilia Lin

Yilia Lin

May 20, 2026

Technology

What Is an API in Open Banking?

Open banking is transforming the financial services industry by requiring banks to share customer data with authorized third-party providers through standardized APIs. But what exactly is an API in open banking, and why does it matter?

An open banking API (Application Programming Interface) is a secure, standardized interface that allows authorized third-party applications to access customer financial data—with explicit customer consent—directly from banks and financial institutions. These APIs enable everything from account balance checks to payment initiations, creating an ecosystem where fintech companies can build innovative services on top of traditional banking infrastructure.

The rise of open banking regulations like PSD2 in Europe, Open Banking in the UK, and similar initiatives worldwide has made open banking APIs not just an option, but a regulatory requirement for financial institutions. According to recent industry reports, the global open banking market is expected to reach $123.7 billion by 2031, driven primarily by API-based integrations.

Understanding Open Banking API Architecture

Open banking relies on a multi-layered architecture where API Gateways play a critical role in managing, securing, and routing requests between third-party providers (TPPs) and core banking systems.

The Open Banking API Ecosystem

graph LR
    A[Customer] -->|Authorizes| B[Third-Party App]
    B -->|API Request| C[API Gateway]
    C -->|Authentication| D[OAuth 2.0 Server]
    C -->|Validates| E[Rate Limiter]
    C -->|Routes| F[Account Service]
    C -->|Routes| G[Payment Service]
    F -->|Data| H[Core Banking System]
    G -->|Transaction| H

    style C fill:#4CAF50
    style D fill:#2196F3
    style H fill:#FF9800

In this architecture:

  • Customer grants explicit consent through the third-party app
  • Third-party app (fintech, aggregator) makes API requests
  • API Gateway handles authentication, rate limiting, routing, and security
  • OAuth 2.0 Server manages authorization and access tokens
  • Core Banking System holds the actual customer data and processes transactions

Key Open Banking API Standards

Open banking APIs follow specific standards to ensure interoperability across different banks and regions:

1. UK Open Banking Standard

The UK's Open Banking Implementation Entity (OBIE) defines standardized APIs for:

  • Account Information APIs: Access account details, balances, transactions
  • Payment Initiation APIs: Initiate payments on behalf of customers
  • Confirmation of Funds APIs: Verify account funds availability

2. PSD2 Regulatory Technical Standards (RTS)

The European Banking Authority's PSD2 framework requires:

  • Strong Customer Authentication (SCA)
  • Secure API communication channels
  • Qualified certificate-based authentication

3. Regional Standards

  • Brazil's Open Banking: Central Bank of Brazil standards
  • Australia's CDR: Consumer Data Right APIs
  • Singapore's APIX: Financial API Exchange standards

Building Secure Open Banking Integration

Let's implement a production-ready open banking API gateway using Apache APISIX, focusing on the critical security and compliance requirements.

Step 1: OAuth 2.0 Authentication for Open Banking

Open banking APIs require OAuth 2.0 authorization flow. Here's how to configure APISIX to handle this:

curl -i "http://127.0.0.1:9180/apisix/admin/routes/1" -X PUT \ -H "X-API-KEY: ${admin_key}" \ -d ' { "uri": "/open-banking/accounts/*", "upstream": { "type": "roundrobin", "nodes": { "account-service.bank.internal:8080": 1 }, "scheme": "https" }, "plugins": { "openid-connect": { "client_id": "tpp-client-id", "client_secret": "$secret://vault/oauth/tpp-client-secret", "discovery": "https://auth.bank.com/.well-known/openid-configuration", "scope": "openid accounts", "bearer_only": true, "realm": "open-banking", "introspection_endpoint_auth_method": "client_secret_post" } } }'

This configuration:

  • Validates OAuth 2.0 bearer tokens
  • Integrates with your OpenID Connect provider
  • Enforces proper scopes for account access
  • Uses bearer-only mode appropriate for API authentication

Step 2: Rate Limiting for API Quotas

Financial regulators require rate limiting to prevent abuse. Implement tiered rate limiting based on TPP authorization level:

curl -i "http://127.0.0.1:9180/apisix/admin/routes/2" -X PUT \ -H "X-API-KEY: ${admin_key}" \ -d ' { "uri": "/open-banking/payments/*", "upstream": { "type": "roundrobin", "nodes": { "payment-service.bank.internal:8443": 1 }, "scheme": "https" }, "plugins": { "openid-connect": { "client_id": "payment-tpp-client", "client_secret": "$secret://vault/oauth/payment-tpp-secret", "discovery": "https://auth.bank.com/.well-known/openid-configuration", "scope": "openid payments" }, "limit-req": { "rate": 10, "burst": 5, "key": "http_x_client_id", "rejected_code": 429, "rejected_msg": "API rate limit exceeded. Maximum 10 requests per second." } } }'

Step 3: Request and Response Validation

Open banking standards define strict API schemas. Implement validation to ensure compliance:

curl -i "http://127.0.0.1:9180/apisix/admin/routes/3" \ -H "X-API-KEY: ${admin_key}" \ -X PUT -d ' { "uri": "/open-banking/payments/initiate", "methods": ["POST"], "upstream": { "type": "roundrobin", "nodes": { "payment-service.bank.internal:8443": 1 }, "scheme": "https" }, "plugins": { "request-validation": { "header_schema": { "type": "object", "required": ["x-idempotency-key", "x-request-id"], "properties": { "x-idempotency-key": { "type": "string", "minLength": 1, "maxLength": 40 }, "x-request-id": { "type": "string", "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" } } }, "body_schema": { "type": "object", "required": ["Data"], "properties": { "Data": { "type": "object", "required": ["Initiation"], "properties": { "Initiation": { "type": "object", "required": ["InstructedAmount", "CreditorAccount"], "properties": { "InstructedAmount": { "type": "object", "required": ["Amount", "Currency"], "properties": { "Amount": {"type": "string", "pattern": "^\\d+\\.\\d{2}$"}, "Currency": {"type": "string", "enum": ["GBP", "EUR", "USD"]} } }, "CreditorAccount": { "type": "object", "required": ["SchemeName", "Identification"], "properties": { "SchemeName": {"type": "string", "enum": ["IBAN", "SortCodeAccountNumber"]}, "Identification": {"type": "string", "minLength": 1, "maxLength": 256}, "Name": {"type": "string", "maxLength": 350} } } } } } } } } } } }'

This validation ensures:

  • Required headers (idempotency keys, request IDs) are present
  • Request bodies conform to open banking payment initiation schema
  • Currency and amount formats are valid

Step 4: Mutual TLS (mTLS) for Transport Security

PSD2 and similar regulations require mTLS for secure communication:

curl -i "http://127.0.0.1:9180/apisix/admin/routes/4" \ -H "X-API-KEY: ${admin_key}" \ -X PUT -d ' { "uri": "/open-banking/accounts/transactions", "upstream": { "type": "roundrobin", "nodes": { "account-service.bank.internal:8443": 1 }, "scheme": "https", "tls": { "client_cert": "$secret://vault/tls/tpp-client-cert", "client_key": "$secret://vault/tls/tpp-client-key" } }, "plugins": { "openid-connect": { "client_id": "account-info-tpp", "client_secret": "$secret://vault/oauth/account-info-secret", "discovery": "https://auth.bank.com/.well-known/openid-configuration" } } }'

Configure the gateway to require client certificates:

curl -i "http://127.0.0.1:9180/apisix/admin/ssls/1" \ -H "X-API-KEY: ${admin_key}" \ -X PUT -d ' { "cert": "$secret://vault/tls/gateway-cert", "key": "$secret://vault/tls/gateway-key", "client": { "ca": "$secret://vault/tls/tpp-ca-bundle", "depth": 2, "skip_mtls_uri_regex": ["/health", "/metrics"] }, "snis": ["open-banking-api.bank.com"] }'

Open Banking Integration Patterns

Pattern 1: Account Aggregation

Third-party apps aggregate accounts from multiple banks:

sequenceDiagram
    participant C as Customer
    participant A as Aggregator App
    participant G as API Gateway
    participant B1 as Bank A
    participant B2 as Bank B

    C->>A: Connect bank accounts
    A->>G: Request Bank A accounts (OAuth token)
    G->>B1: Forward validated request
    B1-->>G: Account data
    G-->>A: Account data

    A->>G: Request Bank B accounts (OAuth token)
    G->>B2: Forward validated request
    B2-->>G: Account data
    G-->>A: Account data

    A-->>C: Unified account view

Pattern 2: Payment Initiation

Apps initiate payments directly from customer accounts:

sequenceDiagram
    participant C as Customer
    participant M as Merchant App
    participant G as API Gateway
    participant P as Payment Service
    participant B as Bank

    C->>M: Checkout
    M->>C: Request payment authorization
    C->>M: Authorize with bank
    M->>G: Initiate payment (OAuth + Payment details)
    G->>G: Validate request
    G->>P: Forward to payment service
    P->>B: Execute payment
    B-->>P: Payment confirmation
    P-->>G: Success response
    G-->>M: Payment confirmed
    M-->>C: Order complete

Compliance and Monitoring Requirements

Regulatory Compliance Checklist

Implement these observability features for compliance:

curl -i "http://127.0.0.1:9180/apisix/admin/routes/5" \ -H "X-API-KEY: ${admin_key}" \ -X PUT -d ' { "uri": "/open-banking/*", "upstream": { "type": "roundrobin", "nodes": { "banking-service:8443": 1 } }, "plugins": { "openid-connect": { "client_id": "open-banking-client", "client_secret": "$secret://vault/oauth/client-secret", "discovery": "https://auth.bank.com/.well-known/openid-configuration" }, "http-logger": { "uri": "https://log-collector.bank.com:9200/open-banking/audit", "batch_max_size": 100, "max_retry_count": 3, "include_req_body": true, "include_resp_body": true, "concat_method": "json" }, "prometheus": { "prefer_name": true } } }'

Key Metrics to Monitor

Track these metrics for regulatory reporting:

  1. API Availability: Uptime SLA (typically 99.5% required)
  2. Response Times: P50, P95, P99 latency
  3. Error Rates: 4xx and 5xx responses by endpoint
  4. Rate Limit Violations: Frequency and TPP patterns
  5. Authentication Failures: Failed OAuth attempts
  6. Certificate Expirations: mTLS certificate lifecycle

Real-World Open Banking Integration Scenario

Let's walk through a complete payment initiation flow:

Scenario: Customer Pays Merchant via Third-Party App

  1. Customer selects payment method in merchant app
  2. App redirects to bank for authorization (OAuth 2.0 authorization code flow)
  3. Customer authenticates with bank and grants consent
  4. Bank redirects back to app with authorization code
  5. App exchanges code for access token at gateway
  6. App initiates payment via API Gateway:
curl -X POST "https://open-banking-api.bank.com/payments/initiate" \ -H "Authorization: Bearer eyJhbGc..." \ -H "Content-Type: application/json" \ -H "x-idempotency-key: unique-payment-id-12345" \ -H "x-request-id: 550e8400-e29b-41d4-a716-446655440000" \ -d '{ "Data": { "Initiation": { "InstructedAmount": { "Amount": "100.00", "Currency": "USD" }, "CreditorAccount": { "SchemeName": "IBAN", "Identification": "US1234567890", "Name": "Merchant Inc" }, "RemittanceInformation": { "Reference": "ORDER-123456" } } } }'
  1. Gateway validates token, rate limits, request schema
  2. Gateway forwards to payment service with mTLS
  3. Payment service processes and returns confirmation
  4. Gateway logs transaction for compliance audit
  5. App receives payment confirmation
  6. Customer sees order completion

Security Best Practices for Open Banking APIs

1. Implement Strong Customer Authentication (SCA)

Ensure your OAuth flow supports multi-factor authentication as required by PSD2:

  • Dynamic linking: Payment details bound to authentication
  • Two-factor authentication: Something you know + something you have
  • Biometric authentication where supported

2. Certificate Management

Maintain strict certificate lifecycle management:

  • Monitor certificate expiration dates
  • Automate certificate renewal
  • Maintain certificate revocation lists (CRL)
  • Regular security audits of certificate authorities

3. Data Minimization

Only expose necessary data in API responses:

curl -i "http://127.0.0.1:9180/apisix/admin/routes/6" \ -H "X-API-KEY: ${admin_key}" \ -X PUT -d ' { "uri": "/open-banking/accounts/:accountId", "upstream": { "type": "roundrobin", "nodes": { "account-service:8443": 1 } }, "plugins": { "response-rewrite": { "body": "$body", "filters": [ { "regex": "\"internalAccountId\":\"[^\"]+\"", "scope": "body", "replace": "" }, { "regex": "\"customerId\":\"[^\"]+\"", "scope": "body", "replace": "" } ] } } }'

This configuration removes internal identifiers from responses, exposing only what TPPs need.

4. Idempotency for Payment Operations

Prevent duplicate payments with idempotency key validation:

  • Store idempotency keys with payment requests
  • Return original response for duplicate requests within time window
  • Implement key expiration (typically 24 hours)

Conclusion

Open banking APIs represent a fundamental shift in financial services, enabling innovation while maintaining security and regulatory compliance. Implementing a robust API Gateway solution is essential for:

  • Meeting regulatory requirements (PSD2, Open Banking standards)
  • Ensuring secure authentication and authorization
  • Managing rate limits and preventing abuse
  • Maintaining comprehensive audit logs
  • Enabling seamless integration for third-party providers

Apache APISIX and API7 Gateway provide the enterprise-grade features needed for production open banking deployments, with built-in support for OAuth 2.0, mTLS, request validation, and comprehensive observability.

As open banking adoption accelerates globally, having the right API Gateway infrastructure in place isn't just a technical decision—it's a competitive advantage.

Tags: