Skip to main content
POST
Create a checkout session

Authorizations

X-Wakapay-Key
string
header
required

Organisation API public key (merchant).

X-Wakapay-Timestamp
string
header
required

Unix timestamp in milliseconds. Must be within ±5 minutes.

X-Wakapay-Signature
string
header
required

HMAC-SHA256 hex of {timestamp}.{rawBody} using the API key secret.

Headers

Idempotency-Key
string

Optional idempotency key. Replaying the same key for the same organisation returns the existing session.

Example:

"order-42"

Body

application/json
user
object
required
items
object[]
required
Minimum array length: 1
currency
string
required

Quote currency for line items (e.g. XAF, USD). Crypto amounts are derived from this total.

Example:

"XAF"

metadata
object
Example:
expires_in_minutes
integer
default:60

Session lifetime in minutes.

Required range: 5 <= x <= 10080
Example:

30

Response

Checkout session created (or idempotent replay).

session_id
string<uuid>
status
enum<string>
Available options:
pending,
waiting_payment,
partial,
paid,
expired,
failed
Example:

"waiting_payment"

source
string
Example:

"API"

anonymous
boolean
requires_payer_identity
boolean
identity_options
string[]
total_amount_crypto
string | null
Example:

"8.33333333"

crypto_currency
string | null
Example:

"USDT"

crypto_options
object[]
fiat_currency
string
Example:

"XAF"

total_amount_fiat
string
Example:

"5000.00000000"

wallet_address
string

Merchant receiving wallet.

supported_networks
string[]
expires_at
string<date-time>
overpaid
boolean
bound_tx_hash
string | null
payer_wallet_address
string | null
chain_id
string | null
user
object
organisation_id
string<uuid>
organisation_name
string | null
organisation_deleted
boolean
owner_user_id
string<uuid> | null
checkout_url
string<uri>

Hosted checkout URL to open for the payer.

Example:

"https://checkout.wakapay.cash/pay/550e8400-e29b-41d4-a716-446655440000"

items
object[]
metadata
object
created_at
string<date-time>