Skip to main content
This walks the full path — encrypt, create, pay, poll — end to end. Everything below runs against sandbox with your test keys.

Before you start

1

Get your keys

You need three values, all issued during onboarding: a public key, a secret key, and an RSA public encryption key. See Authentication.
2

Set up encryption

Order payloads are RSA-encrypted. While you build, sandbox’s encryption helper can do it for you.

1. Encrypt the order payload

The response’s data is your ciphertext.
reference is yours to choose and must be unique. You use it for every subsequent call about this order, so store it before you go any further.

2. Create the order

otherPaymentOptions is what you render as the customer’s choices — it varies by currency.

3. Pay the order

Encrypt the method-specific payload, then send it. For a card:
Send the customer to paymentDetail.redirectUrl to complete 3-D Secure.
"status": "success" here means the payment was accepted for processing, not that it succeeded. Do not fulfil the order yet.

4. Poll for the final status

Keep polling while isFinalStatus is false. See Order lifecycle for the polling schedule and every status value.

5. Confirm server-side before fulfilling

Status polling uses your public key, which your frontend may hold. Before you release goods, confirm with your secret key from your backend:
See Callbacks and verification for why this step matters.

Next steps

Payment methods

Card, bank transfer and USSD payloads side by side.

Sandbox testing

Test cards, test bank codes, and what differs from production.