This product is in early access. Parameters, response structures and behaviors may change without prior notice. Do not use this version in production without first coordinating with the Kushki integrations team.
We explain how alternative payment methods (APM) and the multiprocessor flow work in KushkiAlternative payment methods (APM) let your customers pay without a card, using real-time payment rails. In Colombia you can now accept payments with Bre-B: the customer scans a QR code from their banking app and authorizes the payment instantly.APM work with a multiprocessor flow: a single integration with the Kushki API, in which the processor you use in each transaction defines how you integrate and how your customer pays. Your merchant can have one or several processors enabled, and as more are enabled your integration does not change: you just query which processors you have and build the token according to each one.
Looking for ACH payments?
ACH is the traditional bank transfer integration and does not change. See Receive bank transfers.
Available only for 100% API integrations
The multiprocessor flow applies to direct API integrations: the token is requested from your backend. Kajita and Kushki.js do not support the processor object yet.
Every APM integration starts with the same question: which processors does my merchant have? The answer lives in one place:GET /transfer/v1/config (with your public credential) → processors[]Each entry in the response tells you how to continue:
The chosen entry...
Is a processor of...
The token is built...
WithsupportedFlows (Bre-B)
APM payment flows
Withprocessor: { name, flowType }, copied exactly from the response; only amount and currency remain required.
If your merchant has several processors, use each entry's supportedFlows to know how to build the token with each one. If it has only one you can skip the query, but integrate it from the start: it is the product rule as more processors and flows are enabled.
You query your processors and choose the Bre-B entry — you do not need the bank list.
2.
You request the token with the processor object and then initialize the transaction.
3.
Kushki responds with a QR code (base64) that you show to your customer.
4.
Your customer scans it from their banking app and authorizes the payment in real time. The QR expires in 10 minutes and you can cancel the transaction while it has no final status.
5.
You receive the final status by webhook or by querying it with Get Status.
bankIddoes not apply; the other fields are optional.
The processor object does not allow additional properties (it returns 400) and flowTypehas no default value: its values are copied from the processor query, without aliases.
The token is bound to the processor it was generated with; POST /transfer/v1/init validates it:
Generated token
Merchant's processor
Result
With Bre-B processor
Bre-B
Continues (the response includes qr).
With processor
Another processor
422 E046.
Without processor
Bre-B
422 E046.
With Bre-B processor
Bre-B without keys configured
404 E049.
If you receive E046, check the processor query and regenerate the token with the correct processor. The errors for each case are in the API errors section of the guide Accept Bre-B payments.