Start a USDT payment
Names a coin amount rather than a naira price, and settles to you in naira.
Send your secret key: Authorization: Bearer sk_live_…. See authentication.
Takes a payment in USDT and settles it to the merchant in naira. A separate endpoint from POST /payments, not a flag on it, because the two name different things: that one names a naira price, this one names a coin amount.
The naira is not known when you call this. our exchange partner do not lock a rate: the trade happens when the payer's coin arrives, at the market rate then. So the merchant names the coin, and every naira figure we return before settlement is labelled an estimate and must never be shown as a price.
POST /payments/crypto
Authorization: Bearer sk_live_...
{
"coin_amount": 5,
"network": "trc20",
"reference": "order-1043",
"customer_name": "Ada Obi",
"customer_email": "ada@example.com",
"description": "One year of hosting",
"redirect_url": "https://yourshop.com/thanks"
}| Field | |
|---|---|
coin_amount | Required. USDT, not naira. Minimum 2, maximum 7,000. |
coin | usdt only for now. Anything else is refused. |
network | trc20 (default) or bep20. Anything else is refused. |
reference | Your order id. Idempotent: the same one returns the same payment. |
customer_name, customer_email | Optional, and worth sending: the payer is not asked again. |
redirect_url | Optional, https only. |
{
"reference": "12ed91f4107f0c6e35",
"status": "awaiting_details",
"rail": "usdt",
"coin": "USDT",
"coin_network": "TRC20",
"coin_amount": "5.000000",
"coin_address": null,
"amount_estimate": 0,
"collects": ["usdt_trc20"],
"checkout_url": "https://pay.paymonetra.com/12ed91f4107f0c6e35"
}coin_address is null here and that is correct on the convert rail. Our exchange partner assigns an address for 30 minutes, so it is minted when the payer opens the page, not when you create the payment. A link you send by email and they open an hour later would otherwise show a dead address. Send them to checkout_url.
On the hold rail it is returned immediately. A business holding USDT collects at its own permanent address, so nothing is minted and nothing expires, and coin_address is filled in on this response.
Payments has the context around this call.