> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kirafin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# How to set it up

> What the sandbox is, how to point at it, and how it differs from production.

The sandbox is a full copy of the API with no real money in it. Everything behaves the way production does — the same calls, the same events, the same states — except that the banks and networks behind it are stand-ins that answer on demand instead of on their own schedule.

That is what makes it testable: outcomes you would wait days for in production are reachable in seconds, and outcomes you would never want in production are reachable at all.

## Pointing at it

Sandbox is the same host with a `/sandbox` prefix:

| Environment | Base URL                           |
| ----------- | ---------------------------------- |
| Sandbox     | `https://api.balampay.com/sandbox` |
| Production  | `https://api.balampay.com`         |

<Warning>
  The prefix goes on **every** path, not just the first call. `…/sandbox/v1/users`, `…/sandbox/v1/payouts`, and so on. Putting it only on the call you copied from a guide is the most common way a "sandbox" integration ends up talking to production.
</Warning>

## What you need

Sandbox credentials are separate from production ones, and a sandbox key does not work against production. Ask for both at the same time — see [Access](/get-started/access).

You also want your webhook endpoint registered for sandbox before you start, because several steps announce themselves only that way. [Test your endpoint](/webhooks/test-your-endpoint) covers reaching a handler you are still writing.

## How it differs from production

**Outcomes are yours to choose.** In production, whether an application is approved is the bank's decision. In sandbox it follows from what you send — see [Forcing outcomes](/sandbox/forcing-outcomes).

**Timing is not representative.** Sandbox settles in seconds what a real rail takes hours or days to do. Build your flow so that it tolerates waiting, and do not calibrate timeouts against what you see here.

**Accounts open with a balance.** A sandbox account carries an opening float, so a payout can succeed before you have deposited anything. Read the balance rather than assuming it reflects only your own deposits.

<Card title="Forcing outcomes" icon="arrow-right" href="/sandbox/forcing-outcomes">
  Approval, rejection, and the values that produce each one.
</Card>
