Invoice processing lifecycle
See Invoice statuses for the full status table and integration notes.
Create, listen, then settle
Section titled “Create, listen, then settle”- Create a payment request through the API
- Redirect the customer to the payment link
- Listen for
invoice.statusChangedwebhook events - Update your internal order or payment status only after the invoice reaches a settled payment status (
paid,partially_paid, oroverpaid)
Invoice lifecycle
Section titled “Invoice lifecycle”-
Merchant creates an invoice request
An invoice can be created either:
- through the admin panel
- via the API (
POST /invoice)
The create response includes
paymentPageUrlfor the hosted checkout. Default invoice expiry is 24 hours unless you passexpiresInMinuteson create. -
Customer opens the link and selects a cryptocurrency
The customer visits the hosted payment page and chooses which supported cryptocurrency to pay with.
Each network option shows its network fee in the invoice’s fiat currency.
Cryptonly assigns a unique deposit address, used for this payment attempt only, and locks the crypto amount: the invoice amount plus the network fee. The invoice status stays
created— no additionalinvoice.statusChangedwebhook is sent. If the customer changes currency, the invoice remainscreatedthroughout.The deposit payment link is valid for 30 minutes by default. A payment that arrives at this address within 4 hours after it expires — or after the customer switched to another currency — is still processed normally. See Late payments.
The customer then sends that amount to the deposit address.
-
Cryptonly waits for the required on-chain confirmation(s)
Once the transfer is detected on-chain, Cryptonly waits for the required number of blockchain confirmations before proceeding. See Onchain confirmations for the number required per chain.
-
Cryptonly performs an AML check
After the required confirmations, Cryptonly screens the transaction. It can pass and continue, be flagged for review, or be held.
-
If the AML check passes, the invoice is settled and the balance is credited
Cryptonly settles the invoice with a payment-received status (
paid,partially_paid, oroverpaid) and credits the merchant’s internal balance (the received amount minus the network fee and commission). -
Cryptonly sends webhooks on status changes
Cryptonly sends an
invoice.statusChangedwebhook on each invoice status transition.