BBankConnectorDeveloper Docs

Connect your system to any bank. Send one JSON shape — BankConnector speaks every bank's dialect.

BankConnector is an ISO 20022 payment engine as a service. Send canonical payment JSON in, BankConnector validates it, converts it to the exact pain.001 flavour your bank expects, and delivers it — then normalises whatever comes back (camt.053, pain.002) into one shape. You write one integration; the bank-specific XML dialects are BankConnector's problem, not yours.

Get Started · API Reference · Guides

Which parts apply to me?

BankConnector is multi-tenant: Platform (a BankConnector customer) → Company (the Platform's end-user organisation) → User (a login). There are two kinds of reader — every guide page is tagged for one or both.

🔌 Integration Client — start here

You are a company connecting your own system to a bank. You'll hold an API key, submit payments, and receive results. Read, in order: Getting StartedAuthenticationCore ConceptsSubmitting PaymentsIdempotencyReceiving ResultsErrors & RetriesValidationBest PracticesGoing Live.

🏗️ Platform Operator

You run a BankConnector workspace for multiple companies — provisioning companies, managing tenants, and everything an Integration Client does too. Read the whole guide; operator-only surfaces are called out with 🏗️ where they appear.

Try it right now

This is a real request. GET /profiles is stateless and works with the public, read-only sandbox key — no signup required.

curl -H "X-API-Key: demo_sandbox_public_key_readonly" \
  https://sandbox.bankconnector.com/profiles

And here's the core of the integration — submitting a payment. This is the same canonical shape used in our own test suite, not an invented example:

curl -X POST https://sandbox.bankconnector.com/journal/payments \
  -H "X-API-Key: $BC_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-10432-v1" \
  -d '{
    "platformId": "<platformId>",
    "companyId":  "<companyId>",
    "bankKey":    "abn-amro-nl",
    "payment": {
      "messageId": "ORDER-2026-10432",
      "initiatingParty": { "name": "Acme Holding" },
      "payments": [{
        "paymentId": "p1",
        "paymentType": "sepa",
        "executionDate": "2026-07-15",
        "debtor": {
          "name": "Acme Holding",
          "account": { "iban": "NL91ABNA0417164300" },
          "agent": { "bic": "ABNANL2A" }
        },
        "transactions": [{
          "endToEndId": "e1",
          "amount": "1250.00",
          "currency": "EUR",
          "creditor": {
            "name": "Supplier BV",
            "account": { "iban": "FR1420041010050500013M02606" },
            "agent": { "bic": "BNPAFRPP" }
          }
        }]
      }]
    }
  }'
# 201 { "id": "...", "journalNo": "...", "status": "converted", "xml": "<Document>...", "deliveryMode": "host-to-host" }

Open the full interactive version — with your own sandbox key and live responses — in the API Reference.

Three ways in