Accept BTC, USDT & multi-coin payments with a simple REST API
All API requests require an API key sent via the X-API-Key header.
You can find your API key in your merchant dashboard. Keep it secret — never expose it in client-side code.
Create a new payment invoice. Returns a unique payment address and checkout URL.
| Field | Type | Description |
|---|---|---|
| coin required | string | Cryptocurrency: BTC, USDT, or ALL (customer selects at checkout) |
| amount required | number | Fiat amount to charge (min: 0.01) |
| fiat_currency optional | string | 3-letter currency code (default: USD) |
| order_id optional | string | Your internal order ID for reference |
| callback_url optional | string | URL to redirect after payment |
| metadata optional | object | Custom key-value data stored with the invoice |
Retrieve an invoice by its UUID. Use this to check payment status.
List all your invoices with pagination. Supports filtering by status and coin.
| Query Param | Type | Description |
|---|---|---|
| status optional | string | Filter: pending, confirming, paid, expired, underpaid |
| coin optional | string | Filter by coin: BTC, USDT, or ALL |
| per_page optional | number | Items per page (default: 20) |
Get your merchant profile with stats (total invoices, volume).
Get current BTC and USDT exchange rates (cached, refreshes every 60 seconds).
When an invoice status changes, we send a POST request to your configured webhook URL.
Each webhook includes an X-Signature header containing an HMAC-SHA256 hash of the request body, signed with your webhook secret.
invoice.createdinvoice.coin_selected — Customer selected a coin (multi-coin invoices)invoice.confirminginvoice.paidinvoice.expiredinvoice.underpaidSet coin to ALL to let the customer choose between BTC and USDT on the checkout page.
coin: "ALL" — fields amount_crypto, exchange_rate, and pay_address will be nullselected_coin is setinvoice.coin_selected webhook event is firedInvoices do not expire. The crypto amount recalculates automatically based on the current exchange rate each time the checkout page is loaded, ensuring the customer always pays the correct fiat equivalent.
All errors return a JSON object with success: false and an error message.
| Code | Description |
|---|---|
| 401 | Invalid or missing API key |
| 404 | Invoice not found |
| 422 | Validation error (invalid coin, amount, etc.) |
| 503 | Exchange rate service unavailable |