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

# Registrar pago de un tender

> Registra el resultado de un intento de tender en un pedido colocado.

Registra el resultado de un intento de tender. El mismo `attempt_reference` es idempotente: un reintento no crea un segundo cobro.

Si envías `approved_amount` y es menor que el total del tender, el tender queda `FAILED`.

> [!NOTE]
>
> Requiere un access token de Storefront API de [Intercambio de
> token](https://firespark.cloud/docs/es/storefront-api/oauth/exchange/post.md).

`order.payIntent()` llama a este endpoint cuando termina el paquete de pago. Llámalo tú solo cuando el canal reporta el intento fuera del SDK.

## Parámetros de ruta

| Parámetro | Requerido | Descripción |
| - | - | - |
| `id` | Sí | Identificador externo del pedido |

## Cuerpo de la solicitud

| Campo | Requerido | Descripción |
| - | - | - |
| `tender_id` | Sí | Tender del intent bloqueado |
| `attempt_reference` | Sí | Intento actual del tender, 10–64 caracteres |
| `status` | Sí | `IDLE`, `PENDING`, `PAID`, `FAILED`, `CANCELLED` o `REFUNDED` |
| `details` | No | Datos del método. `details.method` debe coincidir con el tender |
| `approved_amount` | No | Monto que aprobó el proveedor |
| `provider_reference` | No | Id del proveedor para este intento, 1–128 caracteres |
| `error_message` | No | Hasta 500 caracteres |
| `metadata` | No | Se combina con el metadata del tender |

```bash theme={null}
curl -X POST "https://firespark.cloud/api/storefront/v1/orders/ord-48291/payments" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "tender_id": "tnd-card-1",
    "attempt_reference": "att-9f3c1a20b4",
    "status": "PAID",
    "details": { "method": "CARD", "brand": "visa", "last4": "4242" }
  }'
```

## Respuesta

Devuelve `200` con el pedido. `payment_status` se deriva de los tenders vivos del intent actual. Cuando todos los tenders vivos del alcance del nodo `PAYING` en espera están cobrados, el fulfillment avanza ese nodo a `PAID`.

Los tenders `DEVICE` pertenecen a un nodo de cobro `digital`, junto con `REDEMPTION`. `COUNTER`, `KIOSK`, `DOOR` y `OTHER` pertenecen a un nodo de cobro `in_person`.

## Respuestas de error

| Estado | Descripción |
| - | - |
| `404` | Pedido o tender no encontrado |
| `409` | El pedido cambió mientras se registraba el pago |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.