Skip to main content

When it fires

After the customer’s payment has received the required number of blockchain confirmations and the cumulative received amount meets or exceeds the invoice total. Settlx is now processing the conversion (if needed) and transfer to your wallet. This event fires for two outcomes — distinguished by data.payment_quality:
Partial payments (less than the required amount) do not fire this event — they fire invoice.underpaid instead, because the merchant action is fundamentally different.

What to do

Show the customer a “Payment received, processing…” status. Do not fulfil the order yet — funds are not in your wallet. Wait for invoice.settled before fulfilling. If data.payment_quality === 'overpaid', optionally log the excess for your records or notify the customer that they overpaid. The full received amount (including excess) lands in your wallet on invoice.settled.
This is an informational event. Its purpose is to let you update your customer-facing UI. All order fulfilment logic belongs in your invoice.settled handler.

Payload

Includes: invoice, payment, fees (estimated — final fees are in invoice.settled). The settlement object is not present yet.
When payment_quality === 'overpaid', the payload also includes:
excess_amount is in excess_currency (the payment currency) — that’s the asset the customer overpaid in. The merchant still receives the full overpaid amount in their settlement currency on invoice.settled; this field tells you “the customer sent X more than required, in the asset they paid with.”

Handler example

Node.js

Typical timeline

After invoice.confirmed fires, expect invoice.settled to follow within 1–10 minutes depending on network congestion and whether a token conversion is required.
  • invoice.settled — Funds have arrived in your wallet. Fulfil the order here.
  • invoice.underpaid — Customer paid less than the required amount. Different event; do not fulfil.