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

# Sandbox Environment

> Test your integration without processing real payments.

# Sandbox Environment

The development environment at `https://api.dev.wava.co/v1` is a full sandbox that simulates payment processing without moving real money.

## What is simulated

* Order creation and status transitions
* Payment gateway responses (push notifications, OTP codes, QR codes)
* Webhook delivery to your development endpoint
* All error scenarios

## Getting started

1. Create a development account at [app.dev.wava.co](https://app.dev.wava.co) (see [Authentication](/getting-started/authentication)).
2. Get your development `merchant-key` from **Settings > Integrations > API**.
3. Point your API calls to `https://api.dev.wava.co/v1`.
4. Use the [test data](/testing/test-data) values for phone numbers, national IDs, and OTP codes.

## Gateway-specific testing behavior

### Nequi (auto-confirm via GET)

In development, Nequi push notifications are simulated. To confirm a Nequi order, call the **get order endpoint** with the order ID. This call will automatically confirm the order and trigger the webhook.

```bash theme={null}
# Create a Nequi order
curl -X POST "https://api.dev.wava.co/v1/orders" \
  -H "merchant-key: YOUR_DEV_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 10000,
    "description": "Test payment",
    "currency": "COP",
    "shopper": {
      "first_name": "Test",
      "last_name": "User",
      "email": "test@email.com",
      "phone_number": "+573001234567",
      "country": "CO"
    },
    "payment_gateway": { "id_payment_gateway": 1 },
    "order_key": "test-nequi-001"
  }'

# Then confirm it by calling GET /v1/orders/{orderId}
curl -X GET "https://api.dev.wava.co/v1/orders/12345" \
  -H "merchant-key: YOUR_DEV_KEY"
# Response will show status: "confirmed" and webhook will be triggered
```

### Daviplata (test OTPs)

Daviplata orders work the same as production, but use test OTP codes:

| OTP Code        | Result             |
| --------------- | ------------------ |
| `123456`        | Success            |
| `000000`        | Success            |
| `111111`        | Success            |
| `999999`        | Error: invalid OTP |
| Any other value | Error: invalid OTP |

### Breb

Breb orders return simulated QR codes and transfer keys. The order can be confirmed via polling or webhook.

## Differences from production

| Aspect             | Sandbox                                | Production                  |
| ------------------ | -------------------------------------- | --------------------------- |
| Base URL           | `api.dev.wava.co/v1`                   | `api.wava.co/v1`            |
| Real payments      | No                                     | Yes                         |
| Nequi confirmation | Auto-confirm via `GET /v1/orders/{id}` | Buyer approves in Nequi app |
| Daviplata OTP      | Test codes only                        | Real SMS OTP                |
| Webhook delivery   | To dev URL                             | To prod URL                 |
| Rate limits        | Relaxed                                | Standard                    |
| Merchant key       | Development key                        | Production key              |
