You need an API key and a reachable
callbackUrl — see the Quickstart if you haven’t set those up. For this flow you also need a fiat wallet with a balance to settle from, and a destination — either inline beneficiary details or a saved beneficiary.Settlement Lifecycle
Active States
Terminal States
Stop polling once a settlement reaches a terminal state. Use the
callbackUrl or configure notification preferences to receive status-change events instead.PAUSED State
An admin can pause a settlement at any point beforePROCESSED. When paused:
pauseReasonon the settlement record explains why it was pausedpausedUntilindicates when the system will automatically resume the settlement (if set)- A
settlement.pausedwebhook fires immediately — see Webhook Events
pausedUntil if set. Otherwise it resumes when the admin lifts the hold. Check your registered notification email or Slack channel for context from the Kotani Pay team.
Checking the Schedule
Call Settlement Schedule before submitting to confirm settlements are open and your amount is within limits. Key fields:enabled— iffalse, requests will be rejectedallowedDays— requests on unlisted days are queued to the next allowed daycutoffEnabled/cutoffTime/timezone— requests after the cutoff are queued to the next allowed dayminAmount/maxAmount— both in USD; your local-currency amount is converted before this check
Previewing Fees
Call Settlement Fee Preview with?amount=&walletId= before submitting. The response shows the fee, net amount, and USD-equivalent values used for limit checking.
Single Settlement Flow
1. Check the schedule — confirm settlements are enabled and your amount is withinminAmount/maxAmount.
2. Preview the fee — confirm the net amount is acceptable.
3. Submit — call Request Settlement. The response includes the settlement ID and initial status PENDING.
4. Wait for review — status moves to UNDER_REVIEW then APPROVED.
5. Funds disbursed — status moves to PROCESSED once funds reach your destination.
6. You are notified — via callbackUrl or notification preferences at each status transition.
Batch Settlement Flow
Batch settlements submit multiple wallet requests in one call. Each child settlement is processed independently. The batch status reflects the aggregate of its children. 1. Prepare your requests array — each item follows the same schema as a single settlement request:walletId, amount, balanceSource, plus beneficiaryDetails or savedBeneficiaryId.
2. Submit the batch — call Create Batch Settlement with an optional batchReference for your own tracking.
3. Track the batch — call Get Settlement Batch for the overall status. Each child can also be fetched individually via Get Settlement.
4. Cancelling — call Cancel Settlement Batch. Children still in PENDING are cancelled; children in UNDER_REVIEW or later are not affected.
Batch Status at Completion
Merge Flow
The merge endpoint converts two or more existing individual settlements into a batch after the fact. 1. Identify settlements to merge — all must bePENDING or UNDER_REVIEW and not already in a batch.
2. Submit the merge — call Merge Settlements into Batch with the settlementIds array (minimum 2).
3. A new batch is created — the response contains the new batch ID. The source settlements become children of that batch.
Webhook Events
Settlement events are delivered via the signed webhook system — see Webhook Notifications for verification and retry details.Example: settlement.paused
Example: settlement.batch.partial
Saved Beneficiaries
Store destination details once and reference by ID on any settlement or batch request.- Create — Create Settlement Beneficiary
- Use
savedBeneficiaryIdin your settlement or batch request - Update — Update Settlement Beneficiary
- Delete — Delete Settlement Beneficiary
Notification Preferences
Configure email and Slack notifications via Update Notification Preferences. These supplement signed webhook delivery and are intended for human awareness rather than programmatic integration.Related
Dashboard Settlements API
Full parameter reference for all settlement endpoints
Webhook Notifications
Signed webhooks, verification, and retry behaviour
Balances & Settlement
Deposit vs payout balances
Transaction Statuses
All status codes across the API