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.

All endpoints are simple HTTPS POST requests — no SDK required, any language with an HTTP client works. Parameters can be sent as form data or JSON. Every response is JSON with a status field (success or error) plus the result fields documented per endpoint.

Base URL

https://payid19.com/api/v1

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.

Keep your private key secret. It authorizes API calls on your account and is also used to verify callbacks. Never ship it in mobile apps or browser JavaScript — API calls belong on your server. If the key is ever exposed, regenerate your keys on the Settings page; the old keys stop working immediately.

Quick start

  1. Get your API keys — sign up (free) and copy your public and private keys from the Settings page.
  2. Create an invoice — call create_invoice with the amount and currency. The response contains a hosted payment page URL; redirect your customer there.
  3. Get notified — when the payment is confirmed, Payid19 sends a POST to your callback_url and 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

Create a payment invoice and get the payment page URL — the heart of the API.
rate limit300 / min
List your invoices and check payment status.
rate limit100 / min
List the coins and networks you can accept.
rate limit100 / min
Convert a price into each coin’s amount, without creating an invoice.
rate limit100 / min
Query your available and blocked balance.
rate limit100 / min
Send a payout to your own wallet (USDT / TRC20).
rate limit10 / min
Get a deposit address (and QR codes) for an invoice — step 2 of the White Label flow.
rate limit100 / min

Errors

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:

Video: finding your API keys