Before You Start
API Key
See API Keys
Fiat Wallet
For the currency you’re collecting in
Callback URL
For payment notifications
Create one in the Dashboard
1
Open Payment Links
Log in to the dashboard and choose
Payment Links in the left sidebar.
2
Name it and set the price
Give the link a name your customer will recognise on the checkout page, then
choose how the amount works:
3
Choose how they can pay
Enable the payment methods you want to accept: mobile money, bank checkout, card, or crypto. Only methods enabled for your account and currency will appear.
4
Set how many times it can be used
Single use expires after one payment — good for invoices. Limited use
caps it at a number you choose. Multi use stays open until you deactivate
it or it reaches its expiry date.
5
Decide what to collect
Ask for name, email or phone — each one required, optional, or off. Collect
only what you actually need; every extra field costs you completions.
6
Share it
Copy the URL, or download the QR code to print or put on a screen. Both are on
the link’s page in the dashboard.
Link types
Payment Flow
1. Create the Payment Link
Call Create Payment Link (POST /api/v3/payment-links). At a minimum you’ll configure:
- Pricing type — fixed amount, variable (customer chooses within a range), package tiers, or open customer choice
- Payment methods — which of mobile money, bank checkout, card, and crypto to enable
- Usage limit — single-use, limited to a max count, or unlimited
- callbackUrl — where to receive payment notifications
https://pay.kotanipay.com/l/{shortCode}). Share it via SMS, email, social, or embed it as a button.
2. Customer Pays
The customer opens the link in their browser. What happens next depends on the method they select:- Mobile money — customer enters their phone number; Kotani Pay sends an STK push or USSD prompt; customer confirms with their PIN
- Bank checkout — customer is redirected to the bank’s hosted page to authenticate and authorise the payment
- Card — customer enters card details on a secure page; 3DS challenge is handled inline if required
- Crypto — Kotani Pay shows a deposit address and QR code; customer sends from their own wallet; page updates as confirmations arrive
3. Kotani Pay Notifies You
Payment link transactions are backed by standard deposit transactions. When a payment settles, Kotani Pay fires atransaction.deposit.status.updated event to your callbackUrl. The payload includes the standard deposit fields plus identifiers for the originating payment link.
Possible statuses:
- SUCCESSFUL — payment received, your deposit balance will be credited
- FAILED — payment failed or timed out
X-Kotani-Signature, X-Kotani-Event, and X-Kotani-Integrator headers. Without a secret, the transaction fields are posted directly to your callbackUrl. See Webhooks.
4. Poll for Status
Use these endpoints to check payment status:GET /api/v3/payment-links/transactions/:referenceId— status of a specific paymentGET /api/v3/payment-links/:shortCode/transactions— all payments for a given link
After the Payment
Each payment against a link becomes a normal deposit on your account, so your payout balance is credited the same way as any other collection. From the link’s page in the dashboard you can:- See every payment made through it, and its status
- Download a PDF receipt for an individual payment
- Deactivate the link to stop accepting payments, and reactivate it later
- Export the transactions
Creating Links from the API
If you need a link per order rather than one you share repeatedly, links can be created programmatically with the same options as the dashboard form. You can also list your links, fetch payments, and deactivate links. Payments made through a link arrive as normal deposit webhooks, so if you already handle deposits you already handle these. See the deposit payload.Amounts on these deposits follow the same fee rules as the rest of your account.
Check Fees & Billing before reconciling — the fee
may be added on top of what your customer paid rather than taken out of it.
Related
- Fees & Billing — who pays the fee, and rounding
- Webhooks & Events — get told about payments automatically