Skip to main content

Invoice webhooks

Overview​

Invoice webhooks notify the merchant system about invoice creation, payment detection, compliance checks, intervention cases, expiration, and final processing events.

Use webhooks as the main way to update order status in the merchant system. If you need to verify the current invoice state, use [POST] invoice.

Event types​

Event typeDeliveryWhen it is sent
INVOICE_CREATE_INVOICERequired for SINGLE or SINGLE_FIAT invoice creationA SINGLE or SINGLE_FIAT invoice was created.
INVOICE_CREATE_UNLIMITED_INVOICERequired for UNLIMITED invoice creationAn UNLIMITED invoice was created.
INVOICE_CREATE_UNLIMITED_LINKED_INVOICERequired for UNLIMITED_LINKED invoice creationAn UNLIMITED_LINKED invoice was created.
INVOICE_CREATE_BOUND_INVOICERequired for BOUND invoice creationA BOUND invoice was created.
INVOICE_MEM_POOL_FOUNDOptionalA transaction was detected in the blockchain mempool. This event is not guaranteed.
INVOICE_PENDING_COMPLIANCEOptionalA detected transaction is under compliance review. This event may be skipped if the transaction automatically passes compliance.
INVOICE_COMPLIANCE_DECLINEDRequired for negative compliance resultA transaction was declined by compliance.
INVOICE_FUNDS_RECEIVED_FOR_INVOICERequired for received invoice fundsFunds were received on the invoice address. This confirms the deposit, but it may be followed by an intervention or final payment event.
INVOICE_PENDING_INTERVENTIONOptional, conditionalThe invoice requires merchant intervention, usually because of underpay or overpay. This event is sent only when intervention is required.
INVOICE_PAIDRequired for successful invoice paymentThe invoice reached the successful customer-facing payment result.
INVOICE_TRANSLATION_TO_ACCOUNT_COMPLETEDRequired when funds are creditedFunds were transferred from the invoice address to the merchant account balance.
INVOICE_EXPIREDRequired when invoice expires before successful paymentThe invoice expiration date passed before successful payment.
INVOICE_FAILEDRequired when invoice processing failsInvoice processing failed.

Invoice state and webhook event names​

The invoice state field and webhook eventType are related, but they are not identical.

Invoice stateRelated webhook event
PENDING_PAYMENTInvoice creation events
MEM_POOL_FOUNDINVOICE_MEM_POOL_FOUND
PENDING_COMPLIANCE_CHECKINVOICE_PENDING_COMPLIANCE, optional intermediate event
DECLINEDINVOICE_COMPLIANCE_DECLINED, terminal negative compliance result
PENDING_INTERVENTIONINVOICE_PENDING_INTERVENTION
PAIDINVOICE_PAID
COMPLETEDINVOICE_TRANSLATION_TO_ACCOUNT_COMPLETED
ARCHIVEDINVOICE_EXPIRED or archive-related processing
CANCELCancellation-related processing
REVERSEDReversal-related processing

Webhook event types use the INVOICE_ prefix. Invoice states returned in state do not use this prefix.

Webhook payload structure​

Each webhook request contains a common envelope and an event-specific data object.

FieldTypeDescription
requestIdstringWebhook request ID.
idnumberCalypso webhook event ID.
createdDatestringEvent creation date and time.
levelstringEvent level, for example SUCCESS.
servicestringService that produced the event. For invoice events, the value is INVOICE.
eventTypestringInvoice webhook event type.
dataobjectEvent-specific invoice data.

Common data fields​

FieldTypeDescription
typestringEvent type. Usually matches eventType.
parentExternalIdstring or numberCalypso invoice ID.
idempotencyKeystringExternal ID used during invoice creation.
externalIdstringMerchant-side invoice ID, if provided during invoice creation.
messagestringInvoice text or description.
descriptionstringInvoice description, if included in the event.
createdDatestringInvoice creation date and time, if included in the event.
FieldTypeDescription
amountnumberExpected invoice amount or received amount, depending on event type.
realAmountnumberActual amount paid by the customer.
currencystringInvoice crypto currency.
fiatAmountnumber or objectFiat invoice amount, if applicable.
fiatCurrencystringFiat currency, if applicable.
transactionIdarrayCalypso deposit IDs related to the event.
transactionIdsarrayCalypso deposit IDs related to the event.
transactionHashstringBlockchain transaction hash.
senderAddressstringAddress that sent funds to the invoice.
invoiceAddressstringInvoice address that received funds.
paymentDatestringDeposit transaction creation date and time.
serviceFeenumberService fee for the invoice deposit.
expirationDatestringInvoice expiration date and time.

Webhook example​

{
"requestId": "bf9348b7-2c14-46d7-868c-b597852da319",
"id": 3,
"createdDate": "2026-06-29T12:13:05.909616",
"level": "SUCCESS",
"service": "INVOICE",
"eventType": "INVOICE_PAID",
"data": {
"type": "INVOICE_PAID",
"parentExternalId": "d9732536-acdd-41bd-87c3-ec40aeeb6a37",
"idempotencyKey": "5b0ca8da-6af4-4a1c-9efd-5cbfc19ace09",
"externalId": "order-1001",
"amount": 100,
"realAmount": 100,
"currency": "USDT_TRX",
"description": "Order #1001"
}
}
EventRecommended merchant action
Invoice creation eventsSave the invoice ID and idempotencyKey in the merchant system.
INVOICE_MEM_POOL_FOUNDShow that payment was detected but is not confirmed yet.
INVOICE_PENDING_COMPLIANCEKeep the order in pending status if this optional webhook is received. It may be skipped when compliance passes automatically.
INVOICE_COMPLIANCE_DECLINEDMark the payment as declined and follow internal support or refund procedures. This is the terminal webhook for a negative compliance result.
INVOICE_FUNDS_RECEIVED_FOR_INVOICERecord the received deposit and wait for the next invoice status event. Do not treat this event alone as the final successful payment result.
INVOICE_PENDING_INTERVENTIONStart the intervention flow and check the invoice details. This is a conditional branch after funds are received, not a mandatory event for every invoice.
INVOICE_PAIDMark the invoice payment as successful from the customer payment perspective.
INVOICE_TRANSLATION_TO_ACCOUNT_COMPLETEDMark funds as credited to the merchant account balance.
INVOICE_EXPIREDStop accepting payment for this invoice and create a new invoice if payment is still required.
INVOICE_FAILEDMark the invoice as failed and verify the current state through [POST] invoice.
DocumentLink
Create invoice via APIHow to create an Invoice via API
Manage interventionsHow to manage interventions via API
Webhook API referenceWebhook API