Skip to main content
Documentation for invoices: Overview, Fees, Create invoice, Cancel invoice, Callbacks.For new integrations, consider migrating to payment requests instead.

Body

application/json
id
integer
required

Invoice ID.

foreign_id
string
required

The foreign_id you provided when creating the invoice.

type
enum<string>
required
Available options:
invoice
currency_received
object
required

The currency and amount received for the invoice so far, in the invoice currency, or in the convert_to currency for invoices with automatic conversion. The amount is 0 while nothing has been paid. For partially paid invoices, including failed and cancelled ones, it holds the part of the amount received.

transactions
(blockchain · object | internal · object | exchange · object)[]
required

Transactions related to the invoice. The transaction_type field shows what each entry is:

  • blockchain: an incoming transaction on the blockchain
  • internal: an incoming transaction for an off-chain payment, which is never sent to the blockchain
  • exchange: the conversion of the payment, present only for invoices with automatic conversion

An invoice can be paid with several transactions (installments), in which case all of them are listed. Once the full amount is received, the invoice is marked as confirmed.

fees
object[]
required

Fees charged for the invoice payment.

error
string
required

The reason the invoice failed. Empty string otherwise. Possible values:

  • Timer expired. User not paid.: the invoice expired before any payment was received. A payment that arrives after that is listed in a further failed callback with the same error, and isn't added to your balance
  • Timer expired. User paid less than requested.: the customer paid less than the required invoice amount before the invoice expired
  • Timer expired. Transactions were in status processing too long.: a payment was detected but remained in processing for too long without being finalized
  • Cancelled by customer.: the invoice was cancelled via /v2/invoices/{foreign_id}/cancel. A payment already received, in full or in part, isn't added to your balance, even if it's confirmed after the cancellation; currency_received and transactions show it
status
enum<string>
required

Invoice status:

  • pending: the invoice has been created and is waiting for payment, or has been partially paid and is waiting for the remaining amount. Until the customer selects a payment currency, the callback has no crypto_address and currency_sent. An invoice with a timer sends its first pending callback when it's created; an invoice without a timer sends no callback until the customer selects a payment currency, or until it's cancelled
  • confirmed: the invoice has been paid in full, with one or several transactions, or it is a partial pay invoice (good_until_expired) that expired after a partial payment and is confirmed for the amount received. It can be treated as completed on your side
  • processing: the full amount has been detected but the payment has not yet been finalized, for example a transaction in the mempool. Treat the invoice as pending until you receive the confirmed callback
  • failed: the invoice was not paid and will not be completed. Use the error field to determine the reason
Available options:
pending,
confirmed,
processing,
failed
fixed_at
integer | null
required

Unix time in seconds when the rate was fixed: the creation time for invoices created with sender_currency, otherwise when the customer selected a payment currency. null until then, including in the callback for an invoice cancelled before that.

expires_at
integer | null
required

Unix time in seconds when the invoice expires. null for an invoice without a timer until the customer selects a payment currency, including in the callback for an invoice cancelled before that. Once the full amount is detected (the processing callback), it moves to 24 hours after that payment. A partial payment doesn't move it.

end_user_reference
string

The end_user_reference you provided when creating the invoice.

crypto_address
object

Details of the address the customer pays to. Absent until a payment currency is set (at creation with sender_currency, or when the customer selects one), including in the callback for an invoice cancelled before that.

currency_sent
object

The invoice amount in the payment currency. Absent until a payment currency is set (at creation with sender_currency, or when the customer selects one), including in the callback for an invoice cancelled before that. When a partial pay invoice is confirmed after expiring with a partial payment, amount shows the amount paid.

Last modified on October 23, 2026