Offline deposit and settlement
Load a device while it's online, let it pay with no network, and settle the batch when it reconnects.
Offline payments have three moments: load, pay and settle. Only loading and settling touch the API.
1. Load the device
POST /offline/deposit moves value from the owner’s main account into their device wallet. The value is held in a device ledger account at the bank; nothing is ever created offline.
POST /offline/deposit
X-Idempotency-Key: 9a0e15d2-topup-0001
Note the header name: offline payments use X-Idempotency-Key, not Idempotency-Key. See Idempotency.
2. Pay, with no network
The network drops. Payments complete locally against the device wallet, phone to phone or at a POS. Both devices sign each payment, and each one is recorded with its own local reference and timestamp.
3. Settle when the signal returns
POST /offline/settlement posts the batch of taps and reconciles it into the real ledger, with one result per item.
- Posting the same batch again returns the same results. Nothing moves twice, so re-posting is the right recovery from a timeout.
- One failed item doesn’t void the rest of the batch.
- A device’s offline cap is derived from its settled history.
Device conditions
A movement is refused unless all four hold: a validated PIN in the session, the device registered and active, the device belongs to the caller, and it’s the device the wallet is bound to now.
You’ll receive offline_topup.completed and offline_settlement.completed webhooks as each step lands.