Skip to content
Loading keys…
Authorization<token>

A public key (pk./pk_test.) is accepted on /payments, /customers, /links, /invoices and the catalogue reads (/channels, /providers, /countries, /currencies); anything that moves money out, reads the balance or manages the account answers 406 to it. It is an identifier, never an authorization. Use a secret key (sk./sk_test.) for sensitive operations (transfers, refunds, balance), or a restricted key (rk./rk_test.) scoped to specific permissions. The _test. variant of any key selects the sandbox environment, there is no separate sandbox URL. Never expose your secret key in client-side code.

In: header

Header Parameters

Idempotency-Keystring

Your key for this request, 1 to 128 characters of letters, digits and `. _ : -`. The same request sent again with the same key returns the first answer instead of doing the work twice. See [Idempotency](/api/idempotency).

Request Body

application/json

titlestringrequired

Link title displayed to customers.

amountnumberrequired

Fixed amount in major currency unit.

currencystringrequired

ISO 4217 code.

descriptionstring

Optional description.

is_publicboolean

Whether the page opens at its URL. Defaults to true; pass false to create the link offline and publish it later.

custom_urlstring

Your own slug for the link's address, in place of the generated one: letters, digits, dashes and underscores. Unique across Wajub, deleted links included: a slug already taken answers `422`.

external_referencestring

Your own reference for the link, returned as it is and never shown to payers.

callback_urlstring

Where the payer is sent once the payment ends.

cta_typestringrequired

The button label: `buy_now`, `pay`, `donate`, `register` or `custom`.

event_locationstring

Required when `type` is `event`.

event_start_datestring

Required when `type` is `event`, in the future.

event_timezonestring

Required when `type` is `event`.

pricenumber

Required when `type` is `product`, in major currency unit.

product_typestring

Required when `type` is `product`: `physical`, `digital` or `service`.

target_amountnumber

Required when `type` is `fundraising`.

typestringrequired

`product`, `event`, `fundraising` or `donation`.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://api.wajub.com/links" \  -H "Idempotency-Key: link-masterclass-2026" \  -H "Content-Type: application/json" \  -d '{    "title": "Annual subscription",    "amount": 25000,    "currency": "XAF",    "cta_type": "pay",    "type": "product"  }'
POST
/links
{  "code": 201,  "status": "Created",  "message": "Payment link created",  "link": {    "id": "aB3dE5fG7",    "type": "product",    "url": "https://wajub.link/aB3dE5fG7",    "title": "Annual subscription"  }}

Created

What did you think of this content?