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

# Pruebas en sandbox

> Controla los resultados de capacidades, tareas, carteras y transferencias mientras construyes tu integración.

El sandbox utiliza el mismo host de la API que producción. Una clave de API de sandbox selecciona el entorno de pruebas, donde los helpers simulan resultados sin mover fondos reales.

Mantén la clave en tu backend. Los helpers de sandbox no sustituyen al cumplimiento normativo ni al onboarding de producción.

```bash theme={null}
export API_BASE='https://platform.swipelux.com'
export SWIPELUX_SANDBOX_API_KEY='replace-with-your-sandbox-key'
```

## Prueba la disponibilidad de una capacidad

Después de solicitar una capacidad, establece su estado de sandbox con [`POST /v3/sandbox/customers/{customerId}/capabilities/{capabilityId}/status`](/api-reference/sandbox/post-v3-sandbox-customers-by-customer-id-capabilities-by-capability-id-status):

```bash theme={null}
curl --request POST \
  "${API_BASE}/v3/sandbox/customers/${CUSTOMER_ID}/capabilities/${CAPABILITY_ID}/status" \
  --header "X-API-Key: ${SWIPELUX_SANDBOX_API_KEY}" \
  --header "Content-Type: application/json" \
  --data '{"status":"ready"}'
```

Vuelve a consultar la capacidad después de usar el helper. Considera su `status` y `openTaskIds` actuales como el resultado que tu producto debe gestionar.

## Prueba una tarea abierta

Crea una tarea con ámbito de capacidad con [`POST /v3/sandbox/tasks`](/api-reference/sandbox/post-v3-sandbox-tasks):

```bash theme={null}
curl --request POST \
  "${API_BASE}/v3/sandbox/tasks" \
  --header "X-API-Key: ${SWIPELUX_SANDBOX_API_KEY}" \
  --header "Content-Type: application/json" \
  --data @- <<JSON
{
  "scope": {
    "type": "capability",
    "customerId": "${CUSTOMER_ID}",
    "capabilityId": "${CAPABILITY_ID}"
  },
  "items": [
    {
      "type": "explanation",
      "request": "Explain the source of funds."
    }
  ]
}
JSON
```

Guarda `data.id` como `TASK_ID`, `data.revision` como `TASK_REVISION` y el `data.requirements[0].id` actual como `REQUIREMENT_ID`. Envía la respuesta mediante [`POST /v3/customers/{customerId}/tasks/{taskId}/submissions`](/api-reference/task-submissions/create-customer-task-submission):

```bash theme={null}
curl --request POST \
  "${API_BASE}/v3/customers/${CUSTOMER_ID}/tasks/${TASK_ID}/submissions" \
  --header "X-API-Key: ${SWIPELUX_SANDBOX_API_KEY}" \
  --header "Idempotency-Key: sandbox-task-submission-001" \
  --header "Content-Type: application/json" \
  --data @- <<JSON
{
  "taskRevision": ${TASK_REVISION},
  "answers": [
    {
      "requirementId": "${REQUIREMENT_ID}",
      "answer": {
        "type": "text",
        "value": "Sandbox requirement completed."
      }
    }
  ]
}
JSON
```

Luego acepta o rechaza la envío actual con [`POST /v3/sandbox/tasks/{taskId}/review`](/api-reference/sandbox/post-v3-sandbox-tasks-by-task-id-review):

```bash theme={null}
curl --request POST \
  "${API_BASE}/v3/sandbox/tasks/${TASK_ID}/review" \
  --header "X-API-Key: ${SWIPELUX_SANDBOX_API_KEY}" \
  --header "Content-Type: application/json" \
  --data '{"outcome":"accepted"}'
```

Utiliza [Capacidades y tareas](/es/integration/onboarding/capabilities-and-requirements) para el patrón de finalización de tareas en producción.

## Financia una cartera de sandbox

Acredita una cartera emitida con [`POST /v3/sandbox/accounts/{accountId}/topup`](/api-reference/sandbox/post-v3-sandbox-accounts-by-account-id-topup):

```bash theme={null}
curl --request POST \
  "${API_BASE}/v3/sandbox/accounts/${ACCOUNT_ID}/topup" \
  --header "X-API-Key: ${SWIPELUX_SANDBOX_API_KEY}" \
  --header "Content-Type: application/json" \
  --data '{"amount":"250.00","currency":"USDC"}'
```

Guarda el `data.id` devuelto como `TRANSFER_ID` cuando quieras inspeccionar la transferencia de financiación simulada.

## Completa o falla una transferencia

Establece el resultado con [`POST /v3/sandbox/transfers/{transferId}/state`](/api-reference/sandbox/post-v3-sandbox-transfers-by-transfer-id-state):

<Tabs>
  <Tab title="Completar">
    ```bash theme={null}
    curl --request POST \
      "${API_BASE}/v3/sandbox/transfers/${TRANSFER_ID}/state" \
      --header "X-API-Key: ${SWIPELUX_SANDBOX_API_KEY}" \
      --header "Content-Type: application/json" \
      --data '{"state":"completed"}'
    ```
  </Tab>

  <Tab title="Fallar">
    ```bash theme={null}
    curl --request POST \
      "${API_BASE}/v3/sandbox/transfers/${TRANSFER_ID}/state" \
      --header "X-API-Key: ${SWIPELUX_SANDBOX_API_KEY}" \
      --header "Content-Type: application/json" \
      --data @- <<'JSON'
    {
      "state": "failed",
      "stateDetail": {
        "code": "sandbox_review",
        "message": "Sandbox transfer failed."
      }
    }
    JSON
    ```
  </Tab>
</Tabs>

A continuación, ejecuta un flujo de [cobro](/es/integration/receive-funds), [pago](/es/integration/send-funds) o [cuenta bancaria emitida](/es/integration/issue-bank-account) en sandbox.


## Related topics

- [Quickstart](/es/integration/quickstart.md)
- [Puesta en producción](/es/integration/go-live.md)
- [Autenticación](/es/integration/authentication.md)
- [Arquitectura de carteras y pagos](/es/knowledge-base/compliance/custody-and-wallet-controls.md)
- [Migrar a v3](/es/api-reference/versioning/migrate-to-v3.md)
