What are Payouts?
Payouts are outbound disbursements that let you send funds from your pre-funded KillB balance to any beneficiary — bank accounts, crypto wallets, or local payment aliases. They are the simplest way to distribute money at scale: no quotation step, no payment URL, no waiting for end-user action. You hold the balance; KillB routes it to the destination.Payouts are a B2B feature designed for businesses that need to disburse funds to many recipients (payroll, supplier payments, marketplace settlements, crypto distributions, etc.).
Payouts vs. Ramps
Both payouts and ramps move money, but they serve different purposes:| Payouts | Off-Ramps | |
|---|---|---|
| Direction | Pre-fund → Beneficiary | Crypto wallet → Fiat account |
| Who initiates | Your backend | Your end-user |
| Quotation needed? | No | Yes |
| Payment URL? | No | Yes |
| Use case | Batch disbursements, payroll, settlements | User cash-outs |
| Balance source | Pre-fund account | User’s crypto wallet |
How It Works
Prerequisites
Every payout requires:- An active pre-funded account — holds the balance to be disbursed
- Sufficient balance — equal to or greater than the payout amount
- Valid beneficiary details — matching the required fields for the chosen payment rail
Set Up Pre-Funded Accounts
Learn how to create and fund your pre-fund accounts
Payout Lifecycle
Statuses
| Status | Meaning |
|---|---|
CREATED | The payout has been received and persisted, awaiting queue entry. |
PENDING | The payout is queued and waiting to be dispatched to the payment provider. |
PROCESSING | The disbursement has been submitted to the payment provider and is awaiting confirmation. |
COMPLETED | The payment provider has confirmed successful delivery of funds to the beneficiary. |
ERROR | An internal system error occurred. No funds were disbursed. |
FAILED | The disbursement was declined due to invalid or incorrect beneficiary account details. |
REJECTED | The payout was blocked by a compliance review and will not be processed. |
REFUNDED | The disbursed funds have been returned to the pre-fund balance. |
Supported Beneficiary Types
| Type | Region | Description |
|---|---|---|
PSE | Colombia | Bank account transfer via PSE |
BREB | Colombia | Registered alias (phone, email, national ID) |
Idempotency
To prevent duplicate disbursements, pass a uniqueIdempotency-Key header on every payout creation request. If the same key is received twice, KillB returns the original payout instead of creating a new one.
FAQs
What happens to my balance if a payout fails?
What happens to my balance if a payout fails?
If a payout reaches
FAILED status, no funds are deducted from your pre-fund balance. The balance is only debited when the payout reaches COMPLETED.Can I cancel a payout?
Can I cancel a payout?
Payouts in
PENDING status may be cancelable — contact support. Once a payout moves to PROCESSING, cancellation is no longer possible as the funds are already in transit.What's the difference between ERROR, FAILED, and REJECTED?
What's the difference between ERROR, FAILED, and REJECTED?
Each status reflects a different failure origin:
ERROR— An internal system error on KillB’s side. No funds were disbursed.FAILED— The disbursement was declined by the beneficiary’s bank due to invalid or incorrect account details provided by the sender.REJECTED— The payout was blocked by a compliance review on KillB’s side and will not be processed.
When does a REFUNDED status occur?
When does a REFUNDED status occur?
A payout reaches
REFUNDED when disbursed funds are returned to your pre-fund balance — either after a FAILED delivery or, in some cases, after a COMPLETED payout that was subsequently reversed by the beneficiary’s bank.How long does a payout take?
How long does a payout take?
PSE and BREB transfers typically settle within minutes to a few business hours depending on the bank and cut-off times.
How does idempotency work?
How does idempotency work?
Pass a unique
Idempotency-Key header on payout creation requests. If the same key is received twice (e.g., on a retry), KillB returns the original payout instead of creating a duplicate disbursement.Best Practices
- Check balance first — always call
GET /api/v2/customers/balancesbefore creating a payout to avoid failures due to insufficient funds - Use
Idempotency-Key— always pass a unique key per disbursement to safely retry without duplicates - Subscribe to webhooks — configure
PAYOUTevent webhooks for real-time status updates instead of polling - Monitor REJECTED payouts — log full beneficiary data on rejection so you can identify and fix invalid account details
- Reconcile daily — pull all payouts from the previous day and compare against your internal ledger
Related Guides
Create a Payout
Step-by-step implementation guide
Status Tracking
Monitor payouts with webhooks and polling
Pre-Funded Accounts
Fund your pre-fund accounts
Webhooks
Real-time event notifications