KashierDevelopersKashier Developers
Payouts

Payouts sandbox testing

Test payouts in the sandbox with designated recipients

The transfers sandbox lets you test the full payout (transfers) flow on the test environment without sending any real money or calling real providers. When you use the test base URLs, every transfer is simulated end to end.

The scenario a transfer follows is chosen from the recipient number you send. Pick a number from the tables below to force a specific outcome (success, timeout, invalid recipient, or insufficient funds).

Note

Sandbox only runs on the test environment. Use the test base URLs (https://test-fep.kashier.io) with your test secret key. Real provider calls never happen here.

How it works

The sandbox simulates the transfer at two points, so the whole lifecycle behaves like production without any external call:

StageWhat is simulated
Balance checkInsufficient-funds outcomes are decided before any provider is contacted.
Provider send & reconcileThe send and reconcile calls to the providers (EBC, Axis Pay, OctoCard) are mocked, returning success, a timeout, or an invalid-recipient failure.

Any recipient number that is not listed in the tables below is treated as unknown: the send fails and the transfer ends up FAILED.

Scenarios

Four scenarios can be triggered. Each test number below maps to exactly one of them.

ScenarioFlowFinal status
SUCCESSSend succeeds, reconcile confirms the transfer.TRANSFERRED
TIMEOUTSend succeeds, reconcile returns 504 and is retried until max retries.IN_TRANSIT
INVALIDSend succeeds, reconcile reports an invalid recipient, balance is reversed.FAILED
INSUFFICIENT_FUNDSBalance check fails before the provider is called.FAILED

Mobile wallet numbers

Use these as the recipientNumber with method set to wallet. The same numbers work for wallet transfers and instant wallet transfers.

Recipient NumberScenario
01111111111SUCCESS
01111111112TIMEOUT
01111111113INVALID
01111111114INSUFFICIENT_FUNDS

Card numbers

Use these as the recipientNumber with method set to card. The sandbox matches on the masked form exactly as written below — send the asterisks, not a full card number. A full PAN is a different string and matches no scenario, so the transfer is treated as an unknown recipient and ends up FAILED.

Recipient NumberScenario
5123********2346SUCCESS
5123********2347TIMEOUT
5123********2348INVALID
5123********2349INSUFFICIENT_FUNDS

For method: card, recipientNumber identifies the recipient only — the card being paid out to is passed separately as cardToken, alongside recipientBank. Both are required on card transfers.

Bank account numbers

Use these as the recipientNumber with method set to bank.

Recipient NumberScenario
78901234567890SUCCESS
78901234567891TIMEOUT
78901234567892INVALID
78901234567893INSUFFICIENT_FUNDS

OctoCard (national ID) numbers

Use these as the recipientNumber for OctoCard transfers identified by national ID.

Recipient NumberScenario
29901011234567SUCCESS
29901011234568TIMEOUT
29901011234569INVALID
29901011234560INSUFFICIENT_FUNDS

Example requests

Send these to the test create-transfer endpoint https://test-fep.kashier.io/v3/transfers/single with your test secret key in the Authorization header.

Trigger a successful wallet transfer:

{
    "amount": 100,
    "method": "wallet",
    "recipientName": "Test User",
    "merchantTransferId": "sandbox-success-1",
    "recipientNumber": "01111111111"
}

Trigger an insufficient-funds failure:

{
    "amount": 100,
    "method": "wallet",
    "recipientName": "Test User",
    "merchantTransferId": "sandbox-insufficient-1",
    "recipientNumber": "01111111114"
}

On this page