Docs / Concepts / Settlement
Settlement.
The financial industry uses the word settlement for the deeper primitive Settle implements. The product positions around that primitive, not around payments or checkout or crypto.
What settle means.
Settlement is the moment funds change hands and the change is final. In traditional rails settlement happens days after the consumer-facing transaction. The merchant sees an authorization, then a hold, then a capture, then a payout, then maybe a chargeback weeks later. The funds are not yours until they really are.
On Settle, settlement happens in the same on-chain transaction the customer signs. The router contract receives the customer’s tokens, splits them between merchant and treasury, and emits the confirmation event — atomically. Either all three happen or none of them do.
The router contract.
One contract per chain. Same surface everywhere:
payInvoice(invoiceId, merchant, amount, feeBps)
// transfers `amount` from customer (via ERC-3009 / EIP-2612 permit on EVM)
// sends 99.5% to `merchant`
// sends 0.5% to settle treasury
// emits InvoicePaid(invoiceId, payer, merchant, amount, fee)The customer signs an off-chain authorization (ERC-3009 transferWithAuthorization) for exactly the invoice amount with a five-minute deadline. No token approval residue, no drainer surface.
Once the router accepts the call, settlement is atomic and final.
Why no chargebacks.
Chargebacks exist because the consumer can reverse a charge through their bank. There is no bank in this rail. The customer signs a transaction with their own keys; once mined, only the merchant can reverse it by sending the funds back manually. There is no third party with the authority to claw funds out of the merchant’s wallet.
This is exactly the property merchants in industries Stripe rejects come to us for — adult, cannabis, firearms, gambling, supplements, high-ticket coaching, anything with elevated reversal risk.
Why no refunds.
Settlement is final. There is no refund mechanism. If a customer wants their money back, the merchant must send it back manually from the same wallet. We display this on every checkout page, in plain text, before the customer signs.
This is a real trade-off. A refund button is a conversation with a custodian — pull funds back from the merchant, return them to the customer. Settle has no custodian. The funds are in the merchant’s cold wallet seconds after the customer signs. There is nothing for us to claw back, and we won’t pretend otherwise.
Practical consequence: if your business model assumes a refund flow, wire it yourself. The dashboard will show you the original payer address from the on-chain event so you can return funds with a single transfer.
Finality per chain.
We wait for the following thresholds before marking an invoice paid and firing invoice.paid:
| Chain | Threshold | Wall clock |
|---|---|---|
base | 1 block | ~2 seconds |
Once the webhook fires, the funds are in the merchant’s wallet and finality is complete by every chain’s definition. Read Non-custodial for where the funds actually live, and Fees for the 0.5% math.