Skip to main content
In the custom bank selection flow, your application fetches the list of available banks, renders your own bank selection UI, and passes the selected provider ID when initiating the payment. Kashimi then returns a redirect URL and handles the rest of the authorisation flow with the bank.
Custom Bank Selection flow diagram

How it works

1

Fetch the provider list

Call GET /capabilities/providers to retrieve the list of available banks. Use this to build your bank selection UI — display names, logos, and filter by country or payment scheme as needed.
2

Initiate the payment with a provider.Id

Once the PSU selects a bank, call POST /ob/payments with the selected provider.Id and payment details. Kashimi returns a redirectUrl.
{
  "provider": {
    "id": "123e4567-e89b-12d3-a456-426614174000"
  },
  "paymentScheme": {
    "name": "SEPA",
    "preferences": { "mode": "INSTANT" }
  },
  "sender": {
    "account": {
      "number": {
        "type": "IBAN",
        "value": "DE89370400440532013000"
      },
      "currency": "EUR"
    },
    "address": {
      "country": "NL",
      "city": "Amsterdam",
      "streetName": "Damstraat",
      "buildingNumber": "1A",
      "postCode": "1012AB"
    },
  },
  "recipient": {
    "account": {
      "number": {
        "type": "IBAN",
        "value": "DE89370400440532013000"
      }
    },
    "name": "John Doe",
    "address": {
      "country": "NL",
      "city": "Amsterdam",
      "streetName": "Damstraat",
      "buildingNumber": "1A",
      "postCode": "1012AB"
    }
  },
  "amount": 10,
  "currency": "EUR",
  "remittanceInformation": {
    "type": "UNSTRUCTURED",
    "value": "Invoice1234567890"
  },
  "metadata": {
    "redirectUri": "https://yourapp.com/payment/callback",
    "psuIpAddress": "84.240.80.120",
    "psuUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    "endToEndId": "123456789123456789",
    "webhookUrl": "https://yourapp.com/webhooks/kashimi"
  }
}
3

Redirect the PSU to the bank

Send the PSU to the redirectUrl. They will authenticate and approve the payment on their bank’s website. Show a loading screen while they are away.
4

Bank redirects back to your callbackUrl

After approval or rejection, the bank redirects the PSU back to Kashimi and back to your callbackUrl. Do not assume success at this point — always verify the actual status.
5

Confirm the final status

Poll GET /payment-statuses/latest or receive a webhook. Show a success screen only once status is COMPLETED.

Full payment flow

The complete experience varies by bank. Most banks use a redirect flow; some use an embedded flow where credentials are collected in your UI.
Custom Bank Selection — Redirect flow
The PSU selects their bank in your UI, is redirected to the bank’s website or app to authenticate and approve the payment, then returns to your redirectUri. You confirm the final status via webhook or status poll.