Baraka Pay DOCS

← Back to docs

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.

POST /v1/payment-intents Authorization: Bearer sk_test_... Idempotency-Key: 6f1c... { "amount": { "minor": 12500, "currency": "CDF" }, "merchantReference": "ORDER-1042", "paymentType": "mpesa" }

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.

POST /v1/payment-intents/{id}/confirm Authorization: Bearer sk_test_... Idempotency-Key: 7a2d... { "msisdn": "+243900000000" }

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.