Skip to main content
POST
Create hosted checkout
Create a single-payment invoice priced in USD. Hosted checkout supports card, Sarafa, and KES/UGX mobile payments. Link creation itself does not move funds or produce a payment callback.
redirect_url is optional. It must use HTTPS without embedded credentials. All other fields above are required. Checkout creation does not accept a quote field. Example response, HTTP 201:
Redirect the payer to the returned checkout_url. Successful payment closes the link to further payments; failed attempts can be retried. Each attempt has its own tx_reference while retaining your checkout reference.

Check checkout status

Use your merchant reference with GET /v3/checkout/{reference}:
Returns HTTP 200 with the same checkout response shape, including associated transactions. An unknown checkout reference within your organization returns HTTP 404. Browser redirects are not proof of payment. Confirm the outcome using this authenticated status read, payment details, or signed callbacks.

Authorizations

Authorization
string
header
required

Use the full key from the merchant dashboard API section. Keep it on your server.

Body

application/json
amount
string
required

Positive decimal string, not a JSON number. Zero is invalid. Currency-specific precision and payment limits also apply.

Pattern: ^[0-9]+([.][0-9]{1,18})?$
Example:

"100.00"

currency
enum<string>
required
Available options:
USD
title
string
required
Required string length: 1 - 160
description
string
required
Minimum string length: 1
reference
string
required

Your idempotency reference, unique across charge, transfer, swap, and checkout creation within your organization. Reuse it with unchanged details for execution retries.

Required string length: 1 - 128
callback_url
string<uri>
required

HTTPS URL without embedded credentials. Required even for quotes. Receives signed payment callbacks.

Pattern: ^https://
Example:

"https://merchant.example/payments"

redirect_url
string<uri>

Optional browser return URL. Must use HTTPS without embedded credentials. Redirects are not proof of payment.

Pattern: ^https://

Response

Created checkout, or an identical replay.

status
enum<string>
required
Available options:
success
checkout
object
required