For the complete documentation index, see llms.txt. This page is also available as Markdown.

Invoices

An invoice is a fiat-priced payment request. You create it through the API or admin panel; Cryptonly returns a hosted payment page URL (paymentPageUrl) that you send to the customer.

The customer opens the payment page, picks a cryptocurrency, and pays to a pool deposit address assigned for that attempt. Cryptonly monitors the blockchain, runs compliance checks, and settles the payment into your merchant balance.

Invoice amounts are always expressed in fiat (for example USD or EUR). The crypto amount is calculated at checkout from live rates when the customer selects a currency.

How status and webhooks work

Invoices have statuses. Cryptonly sends a signed invoice.statusChanged webhook when the invoice status changes.

Important behaviors for integrators:

  • On create, the invoice starts in created and you receive one webhook with status created.

  • When the customer selects a currency and a deposit address is generated, the invoice stays created — there is no extra status and no second created webhook. If the customer switches currency, the invoice still stays created.

  • When an on-chain transaction is first detected, the invoice moves to processing, then to a settled status (paid, partially_paid, or overpaid) or a terminal failure state (failed, suspended, expired, cancelled).

Linked deposits do not send deposit.statusChanged webhooks. Listen for invoice.statusChanged for checkout payments.

  • Processing lifecycle — full step-by-step flow

  • Statuses — status table and integration notes

  • Webhooks — verification and payload details

Last updated