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

# Request test tokens

> Ask for sandbox test tokens so you can run transfers, withdrawals, and offramps end to end. Send us the phone number you signed up with and we credit NGN 1,000 and USD 10.

Sandbox accounts start empty. To exercise anything that moves money — a transfer, a withdrawal, an offramp, a card top-up — you need a funded balance, and we credit those manually.

<Note>
  This page is about **balances**, not identities. If you are stuck earlier than that — on a BVN or NIN look-up during onboarding — you need [Sandbox test data](/api-reference/sandbox-test-data) instead.
</Note>

Every approved request gets the same allocation:

| Token | Amount  |
| ----- | ------- |
| NGN   | ₦1,000  |
| USD   | \$10.00 |

That is enough to run each rail end to end, including the fee paths. Need more for a specific scenario? Say so when you ask and we will look at it.

<Note>
  Test tokens are sandbox-only. They carry no value, are not redeemable, and are wiped whenever the sandbox is reset.
</Note>

## Send the request

All we need is **the phone number the account was created with**. That is enough for us to find the wallet and credit it.

<form
  className="bmoni-req"
  onSubmit={(e) => {
e.preventDefault()
const form = e.currentTarget
const button = form.querySelector("button")
const status = form.querySelector(".bmoni-req-status")
button.disabled = true
button.textContent = "Sending…"
status.textContent = ""
fetch("https://formspree.io/f/meeynrzw", {
  method: "POST",
  headers: { Accept: "application/json" },
  body: new FormData(form),
})
  .then((res) => {
    if (!res.ok) throw new Error(`HTTP ${res.status}`)
    form.reset()
    button.textContent = "Request received"
    status.textContent = "We will credit the wallet and reply by email, usually within one business day."
  })
  .catch(() => {
    button.disabled = false
    button.textContent = "Try again"
    status.textContent = "That did not go through. Email support@bkey.me with the phone number instead."
  })
}}
>
  <label>
    <span>Phone number <em>the one the account was created with</em></span>

    <input name="Phone number" type="tel" required placeholder="+234 802 000 0000" />
  </label>

  <input type="hidden" name="subject" value="Embedded token request" />

  <input type="text" name="_gotcha" tabIndex={-1} autoComplete="off" style={{ display: "none" }} />

  <button type="submit">Request test tokens</button>

  <p className="bmoni-req-status" role="status" />
</form>

## What happens next

<Steps>
  <Step title="We locate the wallet">
    We match the phone number to a sandbox smart wallet. If KYC has not been activated yet the wallet may not exist — run through [the KYC flow](/api-reference/integration-flow) first.
  </Step>

  <Step title="We credit NGN 1,000 and USD 10">
    Usually within one business day. You get a reply by email.
  </Step>

  <Step title="You verify it landed">
    Poll `GET /v1/users/{userId}/smart-wallets/account/balances`, or watch for the credit webhook on your endpoint.
  </Step>
</Steps>
