Introduction
The Payid19 API lets you accept cryptocurrency payments on any website or application. Create an invoice, redirect your customer to the hosted payment page (or build your own with White Label), and get notified automatically when the payment is confirmed. Settlement is always in USDT, so you never carry exchange-rate risk on incoming payments.
status field (success or error) plus the result fields documented per endpoint.Base URL
Authentication
Every request is authenticated with your public key and private key, sent as parameters in the request body. Both keys are generated automatically when your account is created — you can view them on your Settings page. Requests without a valid key pair are not processed. There is no separate sandbox: test safely on your live keys with test=1 invoices.
Quick start
- Get your API keys — sign up (free) and copy your public and private keys from the Settings page.
- Create an invoice — call create_invoice with the amount and currency. The response contains a hosted payment page URL; redirect your customer there.
- Get notified — when the payment is confirmed, Payid19 sends a POST to your
callback_urland your balance is credited in USDT. You can also poll get_invoices at any time.
Want to test first? Send test=1 when creating an invoice — test invoices complete automatically within seconds (including the callback) without any real payment.
Endpoints
300 / min100 / min100 / minErrors
When something is wrong, the HTTP status is 421 (only get_address uses 401) and the body explains why — an invalid parameter, wrong keys, or a business rule (e.g. insufficient funds). Depending on the endpoint and the error type, message is either an array of messages (validation and key errors) or a plain string (business-rule errors), so handle both shapes:
{"status":"error","message":["The price amount must be at least 0.0001."]}
{"status":"error","message":"insufficient funds"}
Treat any non-2xx response as a failure, log the message, and never retry blindly in a tight loop — the rate limits above apply per minute.
Try it in Postman
You can fork our ready-made Postman collection and try every endpoint with your own keys: