## Sandbox Testing Documentation

Sandbox lets you build and test your integration without moving real money. To get sandbox access, contact [peter@trykarat.com](mailto:peter@trykarat.com) — see [Environments](https://help.trykarat.com/developers/environments). Once sandbox is enabled on your account, you can use a set of pre-configured **test recipients**. Sending a payout to one of these email addresses drives the payout to a specific outcome.

## Simulate payout statuses

Send a payout to one of these recipients to drive it to the corresponding status:

| Recipient email | Resulting status |
| --- | --- |
| `sandbox+completed@trykarat.com` | Completed |
| `sandbox+failed@trykarat.com` | Failed |
| `sandbox+returned@trykarat.com` | Returned |
| `sandbox+canceled@trykarat.com` | Canceled |
| `sandbox+pending@trykarat.com` | Pending |
| `sandbox+created@trykarat.com` | Created |
| `sandbox+awaiting_acceptance@trykarat.com` | Awaiting acceptance |

## Simulate errors

Send a payout to one of these recipients to trigger a specific error:

| Recipient email | Simulated error |
| --- | --- |
| `sandbox+error_insufficient_funds@trykarat.com` | Insufficient funds to cover the payout batch |
| `sandbox+error_invalid_amount@trykarat.com` | All payout amounts must be greater than zero |

## Example

```
curl https://payouts.api.trykarat.com/payments \
  -H "Authorization: Bearer YOUR_SANDBOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{\n    "payouts": [\
      { "payeeEmail": "sandbox+completed@trykarat.com", "amount": 25000 }\
    ]\n  }'
```

Combine sandbox status recipients with [webhooks](https://help.trykarat.com/developers/webhooks) to verify your `payout.updated` handler end to end before going live.
