Optional analytics on public pages. No session recording. Support works either way. Privacy details
Accept paymentsAvailable
Build asset selection, QR/address, expiry, and status yourself. Same invoices, same events.
Create the invoice server-side
Or create a checkout session and let the customer pick asset and network via POST /checkout-sessions/:token/create-invoice.
Render checkout-safe fields
Amount, asset, network, address or QR, expiry. Poll the public status endpoint from the client.
Fulfill from webhooks
Client polling is display only. Your backend still verifies invoice.paid.
Public checkout status. Do not send your API key from the browser.
const response = await fetch(`${process.env.BOSPAY_API_BASE}/invoices/payment-requests/inv_1048/status`, {
method: "GET",
headers: {
"Content-Type": "application/json",
"BOSPay-Version": "2026-09-23",
}
});
if (!response.ok) {
throw new Error(`BOSPay request failed: ${response.status}`);
}
const data = await response.json();