curl "https://api.liddie.io/getInvoiceStatus?invoiceId=exampleslug1"
// Public endpoint — no credentials required, safe from the payer's browser.
const res = await fetch(
'https://api.liddie.io/getInvoiceStatus?invoiceId=exampleslug1'
);
const invoice = await res.json();
console.log(invoice.status, invoice.amountPaid);
{
"amount": 1049.2885,
"amountPaid": 0,
"status": "WAITING",
"publicKey": "DemoDogeAddressDoNotSendFunds12345",
"expiresAt": "2026-07-14T00:56:16.246Z",
"currency": "DOGE",
"invoiceCallbackUrl": "",
"latePayment": false,
"confirmations": 0,
"fiatAmount": 75,
"fiatCurrency": "USD",
"quoteExpiresAt": "2026-07-14T00:56:16.246Z"
}
Public checkout
Get invoice status
Poll the payer-facing status of a Liddie crypto payment invoice by its public invoice id — a public endpoint, safe to call from a browser.
GET
/
getInvoiceStatus
curl "https://api.liddie.io/getInvoiceStatus?invoiceId=exampleslug1"
// Public endpoint — no credentials required, safe from the payer's browser.
const res = await fetch(
'https://api.liddie.io/getInvoiceStatus?invoiceId=exampleslug1'
);
const invoice = await res.json();
console.log(invoice.status, invoice.amountPaid);
{
"amount": 1049.2885,
"amountPaid": 0,
"status": "WAITING",
"publicKey": "DemoDogeAddressDoNotSendFunds12345",
"expiresAt": "2026-07-14T00:56:16.246Z",
"currency": "DOGE",
"invoiceCallbackUrl": "",
"latePayment": false,
"confirmations": 0,
"fiatAmount": 75,
"fiatCurrency": "USD",
"quoteExpiresAt": "2026-07-14T00:56:16.246Z"
}
Polls the payer-facing state of an invoice. 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 ofinvoiceUrl, e.g. exampleslug1); raw 24-hex payment ids are rejected so payments can’t be enumerated. Rate limit: 60/min.
Query parameters
string
required
The public invoice id — the last segment of the payment’s
invoiceUrl (e.g. exampleslug1). Raw 24-hex payment ids are rejected with a 400.curl "https://api.liddie.io/getInvoiceStatus?invoiceId=exampleslug1"
// Public endpoint — no credentials required, safe from the payer's browser.
const res = await fetch(
'https://api.liddie.io/getInvoiceStatus?invoiceId=exampleslug1'
);
const invoice = await res.json();
console.log(invoice.status, invoice.amountPaid);
{
"amount": 1049.2885,
"amountPaid": 0,
"status": "WAITING",
"publicKey": "DemoDogeAddressDoNotSendFunds12345",
"expiresAt": "2026-07-14T00:56:16.246Z",
"currency": "DOGE",
"invoiceCallbackUrl": "",
"latePayment": false,
"confirmations": 0,
"fiatAmount": 75,
"fiatCurrency": "USD",
"quoteExpiresAt": "2026-07-14T00:56:16.246Z"
}
If the crypto quote has expired, polling this endpoint refreshes it automatically (at most once per 15 s per payment). Check
quoteExpiresAt on each response to know when the displayed quote goes stale.Response
string
The deposit address the payer must send funds to.
number
The crypto amount payable.
number
Crypto amount received so far.
string
Invoice status (e.g.
WAITING).string
ISO timestamp when the invoice expires.
string
The pay currency ticker.
string
The invoice callback URL, if one was set at creation.
boolean
Whether the payment arrived after expiry.
number
Current on-chain confirmation count.
number
The fiat price of the invoice.
string
The fiat currency of the price (e.g.
USD).string
ISO timestamp when the current crypto quote expires. If the quote expired, polling this endpoint refreshes it automatically (at most once per 15 s per payment).
Errors
| Status | Body | Why |
|---|---|---|
| 400 | {"error":"Invalid invoice ID format"} | Malformed id or a raw 24-hex payment id |
| 404 | {"error":"No transaction found with given id"} | A well-formed slug that matches no payment (e.g. a mistyped slug) — a polling checkout UI must handle this, not only the 400. |
The response also carries fields not listed above:
allowedCurrencies (the currency picker’s options, while status is AWAITING_CURRENCY), invoiceCancelUrl (the cancel/expiry redirect fallback), memo, and txIds.See also
- Select pay currency — lock the pay currency for an
AWAITING_CURRENCYinvoice before polling. - Cancel invoice (payer) — let the payer abandon an unpaid invoice from the same checkout UI.
- Webhooks & IPN — push status changes to your backend instead of polling server-side.