Reference
API reference
Every Payjar path, the key it expects, and where the payment is returned.
Host: https://app.supa.cash
- POST
/supapay/v1/checkout/initializePublicCreate a checkout from the browser. Message:Checkout initialized. - GET
/supapay/v1/checkout/{reference}PublicRead one checkout. Message:Checkout retrieved. - GET
/supapay/v1/checkout/frame/{access_code}NoneHosted payment page. HTML, not JSON. - GET
/supapay/v1/checkout/{access_code}/statusNoneStatus for the open payment page. Message:Checkout status. - POST
/supapay/v1/checkout/{access_code}/simulateNoneTest-mode success for that session. - POST
/supapay/v1/transaction/initializeSecretCreate a payment from your server or mobile backend. - GET
/supapay/v1/transaction/verify/{reference}SecretRead one payment and confirm it is paid. - GET
/supapay/v1/transaction/{reference}SecretSame as verify. - GET
/supapay/v1/transactionsSecretList payments. Query:status,page. - POST
/supapay/v1/test/simulateTest secretMark a test payment as paid. Body:{ "reference": "..." }.
Create and verify responses put the payment in options.payment and add checkout_url and script_url.
The list response puts payments in options.payments and page info in options.meta.
Checkout status#
The status URL used by the hosted page returns the same payment wrapper.
HTTP
GET /supapay/v1/checkout/a1b2c3d4e5f6789012345678abcdef01/status HTTP/1.1
Host: app.supa.cash
Accept: application/json200Response
{
"success": true,
"message": "Checkout status",
"options": {
"notifications_count": 0,
"payment": {
"reference": "order_1001",
"status": "awaiting_transfer",
"charged_amount": 500000,
"expires_at": "2026-11-03T17:07:00+01:00"
}
}
}Emails#
When a payment succeeds, Payjar emails a receipt to customer_email. Payjar also emails the store, unless the store has turned payment emails off.
