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

# Environments

> Sandbox and production base URLs, what differs between them, and the go-live checklist.

Yuno has two fully isolated environments on every account. Pick the right base URL and the matching credentials for the environment you are calling. Sandbox keys never authenticate against production and vice versa.

## Base URLs

```bash theme={"theme":{"light":"github-dark","dark":"github-dark"}}
# Sandbox    test integrations, simulated funds
https://api-sandbox.y.uno

# Production  live traffic, real money
https://api.y.uno
```

<CardGroup cols={2}>
  <Card title="Sandbox" icon="flask">
    Build and test against simulated providers without moving real money. Sandbox credentials. All funds are simulated. Use the [Yuno Testing Gateway](/guides/testing/yuno-testing-gateway) and [test cards](/guides/testing/test-cards) to reproduce specific behaviors.
  </Card>

  <Card title="Production" icon="globe">
    Live traffic with real customers, real money, and real settlement. Production credentials. Every call moves real money. Treat changes here with the same care as a production database migration.
  </Card>
</CardGroup>

<Warning>
  Sandbox and production keys are not interchangeable. Sending one environment's keys to the other's base URL returns an authentication error. Store them in separate secret manager entries with environment scoping.
</Warning>

## Sandbox

The sandbox mirrors the production API surface against test providers, so you can exercise flows end to end without moving real money. Use it for every phase of integration: first payment, edge cases, provider cascading, decline recovery, webhook delivery, and signature verification.

Pair sandbox with these resources to reproduce specific behaviors like 3DS challenges, soft declines, and async confirmation.

<CardGroup cols={3}>
  <Card title="Test cards" icon="credit-card" href="/guides/testing/test-cards">
    Card numbers that trigger approval, decline, 3DS challenge, and CVV mismatch.
  </Card>

  <Card title="Sandbox guide" icon="book" href="/guides/testing/sandbox-guide">
    End to end walkthrough of testing your integration in sandbox.
  </Card>

  <Card title="Test scenarios" icon="vial" href="/guides/testing/test-scenarios">
    Reproducible scenarios for declines, async flows, and webhook delivery.
  </Card>
</CardGroup>

### Sandbox limitations

1. Some payment methods are gated behind production enablement. Contact Yuno if a method you need is missing from sandbox.
2. Test provider credentials can behave differently from production credentials (different error codes, different latency, different 3DS behavior).
3. `GET /v1/currency-conversion` may return `404` in sandbox. The feature requires explicit enablement. Contact support if you need to test it.

## Production

Production processes real transactions with real funds against real acquirers, with real risk, real fees, and real settlement. Everything that worked in sandbox should work in production with no behavioral surprises (see [Sandbox and production parity](#sandbox-and-production-parity)). What changes is the credentials, the base URL, and how seriously you treat operational hygiene.

### Go live checklist

Walk this list in order. Each step is mandatory, not optional.

<Steps>
  <Step title="Swap credentials">
    Replace your sandbox keys with production keys from [Dashboard > Developers](https://dashboard.y.uno) in your secret manager or environment variables. Confirm your server reads the production values at startup, not lazily at first request.

    ```diff theme={"theme":{"light":"github-dark","dark":"github-dark"}}
    - public-api-key=sandbox_pk_…
    - private-secret-key=sandbox_sk_…
    + public-api-key=prod_pk_…
    + private-secret-key=prod_sk_…
    ```

    The Dashboard also exposes an `account_id` value. Use it as the `account_id` field in request bodies that require it. See [Authentication](/getting-started/authentication).
  </Step>

  <Step title="Update the base URL">
    Change every caller from sandbox to production. Grep the codebase for the sandbox host so a stale URL in a config file or a forgotten test harness does not leak production traffic to sandbox.

    ```diff theme={"theme":{"light":"github-dark","dark":"github-dark"}}
    - https://api-sandbox.y.uno
    + https://api.y.uno
    ```
  </Step>

  <Step title="Register the production webhook">
    Register your production webhook endpoint in the Dashboard and verify signatures end to end. Sandbox webhooks pointing at staging are fine, but a forgotten staging URL in production drops every event silently. See [webhook setup](/guides/webhooks/setup) and [signature verification](/guides/webhooks/verify-signatures).
  </Step>

  <Step title="Confirm provider and method availability">
    Check that every payment method, provider, and country you need is enabled for production. Sandbox has access to test providers that may not exist in production for your account. See [Dashboard connections](/platform/dashboard/connections).
  </Step>

  <Step title="Enable monitoring">
    Turn on provider monitors, error alerting, and latency dashboards **before** you take traffic. Provider blips are normal in production; sustained spikes are not. You need to know when a provider is degraded before customers do. See [monitors](/platform/dashboard/monitors) and [insights](/platform/dashboard/insights).
  </Step>

  <Step title="Run a low value canary payment">
    Place a small real payment through production to validate credentials, webhook delivery, and reconciliation end to end before opening the gate to all traffic. A canary catches misconfigurations that no amount of sandbox testing will surface.
  </Step>
</Steps>

<Warning>
  Do not flip the sandbox-to-production switch incrementally over several days unless you can run both stacks in parallel. The cleanest cutover is atomic: deploy with both credentials and base URL changed in the same release.
</Warning>

## Sandbox and production parity

<Note>
  API behavior is identical between sandbox and production, with the exception of the sandbox limitations called out above. If a flow works in sandbox, it should work in production. Request timeouts and async settlement behavior are documented on the [API overview](/api-reference/introduction#timeouts-and-async-results) since they apply to both environments equally.
</Note>

## What next

<CardGroup cols={2}>
  <Card title="Authentication" icon="lock" href="/getting-started/authentication">
    The three headers, key rotation, and security rules.
  </Card>

  <Card title="Quickstart" icon="rocket" href="/getting-started/quickstart-payments">
    Run your first payment end to end in sandbox.
  </Card>

  <Card title="Webhooks" icon="bell" href="/guides/webhooks/setup">
    Register endpoints, verify signatures, and test locally.
  </Card>

  <Card title="Dashboard" icon="gauge-high" href="/platform/dashboard/overview">
    Configure providers, routing, risk, and monitoring without code.
  </Card>
</CardGroup>
