Authentication
A bearer API key on every request. Nothing else — no cookie, no query parameter, no signature to compute.
Developers
Create a payment from your own system, hand your customer a hosted checkout URL, and let PayMQR tell your server when the payment changes. Plain HTTPS and JSON — there is no SDK to install.
The basics
A bearer API key on every request. Nothing else — no cookie, no query parameter, no signature to compute.
A test key creates test payments that involve no money; a live key creates live ones. Every response says which.
Amounts are strings like "299.00". The payable amount may carry a unique-paise suffix — that is the amount your customer must send.
Send an idempotency key when creating a payment. Repeating the same request returns the same payment instead of a second one.
Open a checkout for a payment and redirect your customer to the URL it returns. You do not build a payment page.
Register an HTTPS endpoint and receive signed events when a payment changes. Retries are automatic.
The shape of it
Create the payment, open a checkout, then read its status — or let a webhook tell you. The sample key below is a placeholder and will not authenticate.
# 1. Create a payment
POST /api/v1/payments
Authorization: Bearer pmqr_test_<your-key>
Idempotency-Key: order-1042
{ "order_id": "1042",
"amount": "1240.00",
"description": "Table 7" }
# 2. Open a hosted checkout
POST /api/v1/payments/{payment_id}/checkout
→ { "checkout_url": "https://…/pay/<token>" }
# 3. Read the status
GET /api/v1/payments/{payment_id}
→ { "status": "verified", "livemode": true }
Webhooks
Register an HTTPS endpoint, choose the events you want, and answer with any 2xx. Anything else is retried with backoff.
Sign up, generate a test key, and create your first payment. Test payments involve no money and cannot collect any.