Getting started
Create your first payment in the sandbox in a few minutes.
One core, two integrations
Every Baraka Pay payment is a PaymentIntent — the canonical record of one payment obligation. Both the direct API and Baraka Pay-hosted checkout drive the same PaymentIntent, so your books never disagree.
Sign in to the Developer portal to create a sandbox API key, then create your first intent.
Create a PaymentIntent
Send an amount in minor units, a merchant reference, and a paymentType — the routing indicator that selects the provider adapter directly (see Choosing a payment type below). Retried writes must carry an Idempotency-Key.
Confirm and wait for the truth
Confirm the intent; Baraka Pay returns a provider-neutral next action. Some payment types (mobile-money brands) need the payer's msisdn on confirm — see Choosing a payment type. Treat the signed webhook (or a server-side lookup) as the only authoritative signal of success.
Choosing a payment type
paymentType is a flat catalog: card, eft, qr, mpesa, airtel_money, orange_money, tigo_money, mtn_momo, apple_pay, google_pay, samsung_pay. It selects the provider directly — family (e.g. "wallet" for the mobile-money brands and device wallets) is display grouping only, never routing.
msisdn is required on confirm only for the msisdn-instrument types (the mobile-money brands); other types confirm without it and drive the rest through the returned next action.
Hosted checkout assigns paymentType by calling select-method with the payer's choice before confirm; direct-API callers set it at create instead.