Skip to main content
POST
Cancels an unpaid invoice from the payer’s side. This powers the hosted invoice page, and it’s safe to call from the payer’s browser if you’re building a custom checkout UI. All data is redacted — no fees, no merchant internals.

Authorization

None — this endpoint is public. It only accepts the public invoice id (the last segment of invoiceUrl, e.g. exampleslug1); raw 24-hex payment ids are rejected so payments can’t be enumerated. Rate limit: 3/min.

Parameters

string
required
The public invoice id — the last segment of the payment’s invoiceUrl. Raw 24-hex payment ids are rejected.
boolean
required
Must be true. The body must be exactly {"confirm":true} — without it the request is rejected with the 400 shown below.
Send {"confirm":true} as the request body. confirm must be present and true; any extra properties are silently ignored (stripped before validation), not rejected — so {"confirm":true,"x":1} still succeeds. Only a missing or non-true confirm fails validation.

Response

boolean
true when the invoice was cancelled.
string
The new invoice status: CANCELLED.

Errors

See also