Skip to content

Payment lifecycle

awaiting_payment ──▶ detected ──▶ confirmed ──▶ [swapping] ──▶ settled
│ │ └──▶ settled_raw
│ └──(deadline passes, short)──▶ underpaid ──(top-up)──▶ confirmed
├──▶ expired ──(deposit arrives)──▶ late ──▶ confirmed ──▶ …
└──▶ canceled ──(deposit arrives)──▶ late ──▶ …
StatusMeaningWebhook
awaiting_paymentCreated; nothing received yet—
detectedA deposit was seen on-chainpayment.detected
confirmedConfirmed deposits cover the amount due (minus your underpay tolerance)payment.confirmed
swappingThe conversion or cross-network delivery is in progress—
settledThe payout reached your payout addresspayment.settled
settled_rawDelivered without conversion to your fallback address (see below)payment.settled_raw
underpaidThe deadline passed with confirmed deposits below the amount duepayment.underpaid
expiredThe deadline passed with nothing receivedpayment.expired
lateA deposit arrived after the payment expired or was canceledpayment.late
canceledYou canceled it before anything was receivedpayment.canceled

Final statuses: settled and settled_raw. expired and canceled are final unless funds still arrive, in which case the payment moves to late and is delivered.

A payment accepts new deposit addresses until expires_at. A payer who received an address keeps its full window (60 minutes for stablecoins, 15 minutes for other tokens), even past expires_at. The payment’s deadline is the later of the two.

Payers sometimes send less than asked, for example when an exchange deducts its withdrawal fee from the amount.

  • Within your underpay tolerance (Settings → Payment defaults, or underpay_tolerance per payment): the payment confirms and settles normally.
  • Below it: while the deadline has not passed, the payment stays detected so the payer can still send the rest to the same address. After the deadline it becomes underpaid.
  • An underpaid payment can be topped up to the same address at any time, which moves it to confirmed. Otherwise, a member can accept it in the dashboard (Accept anyway), or the profile can accept it automatically after a set number of days. What arrived is then delivered; underpaid_accepted_at records when. Owners and admins get an email reminder a day after a payment becomes underpaid.

Funds are never refunded automatically: the sender is often an exchange address that cannot receive them back.

Everything that arrives is delivered. Extra funds sent after settlement are settled too.

A conversion runs only if its output meets the minimum fixed when the address was issued (your max conversion cost). If the price moved too far, the funds are delivered unconverted to your fallback address for that network (Settings → Payouts) and the payment ends as settled_raw. The same happens when you accept an underpaid payment that needed a conversion: a partial amount cannot meet the conversion’s minimum.