Hosted Checkout

Consultar estado manualmente

Consulta el resultado de un pago cuando no puedes esperar al webhook, y en qué estado confiar.

Aunque recomendamos usar webhooks para actualizaciones en tiempo real, también puedes consultar el estado de un pago en cualquier momento llamando a la API. Es útil en varios casos:

  • Cuando un cliente regresa a tu success_url y necesitas confirmar el estado final antes de mostrar la confirmación del pedido.
  • Para scripts de conciliación que revisan el estado de pedidos pendientes.
  • Como respaldo si tu endpoint de webhooks falla.

Opción 1: estado de la sesión

Es el método más común. Usa el session_id para obtener el objeto de sesión completo, que incluye el status y el transaction_status más recientes.

GET
/checkout/v1/sessions/{id}

Autorización

Authorization
Authorization<token>

Tu API key con prefijo Token , p. ej. Token <API_KEY>

In: header

Parámetros de ruta

id*string

The Session ID (e.g., sess_a1b2c3d4e5f6)

Cuerpo de la respuesta

application/json

curl -X GET "https://example.com/checkout/v1/sessions/sess_a1b2c3d4e5f6"
{
  "id": "cs_97_41521_d11ba771527b4056c7f85786cfbb980bc105efaf42af113d",
  "url": "https://stage-payflow.tonder.io/checkout/cs_97_41521_d11ba771527b4056c7f85786cfbb980bc105efaf42af113d",
  "status": "completed",
  "payment_id": 41521,
  "amount_total": 350,
  "currency": "MXN",
  "expires_at": 1751564943,
  "external_id": "ORD-12345",
  "session_type": "payment",
  "checkout_type": "hosted",
  "return_url": "https://my-store.com/checkout/complete",
  "metadata": {},
  "payment_method_types": [
    "card"
  ],
  "ui_config": {},
  "ui_config_version": "V1",
  "created_at": 1751478543567,
  "modified_at": 1751478550234,
  "paid_at": 1751478550234,
  "customer": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com"
  },
  "line_items": [
    {
      "name": "Product 1",
      "quantity": 1,
      "unit_price": 350,
      "product_id": "prod-001"
    }
  ],
  "transaction_status": "Success",
  "provider": "tonder"
}

Opción 2: detalles de la transacción

Si tienes un payment_id (del objeto de sesión o de un webhook), puedes obtener los detalles de esa transacción específica.

GET
/checkout/v1/payments/{payment_id}

Autorización

Authorization
Authorization<token>

Tu API key con prefijo Token , p. ej. Token <API_KEY>

In: header

Parámetros de ruta

payment_id*string

The Payment ID (e.g., pay_x1y2z3a4b5)

Cuerpo de la respuesta

application/json

curl -X GET "https://example.com/checkout/v1/payments/pay_x1y2z3a4b5"
{
  "payment_id": "pay_x1y2z3a4b5",
  "session_id": "sess_a1b2c3d4e5f6",
  "status": "Success",
  "amount": 350,
  "currency": "MXN",
  "payment_method_type": "card",
  "created_at": "2025-10-20T14:30:00Z",
  "card_details": {
    "brand": "visa",
    "last4": "4242"
  },
  "customer": {
    "name": "John Doe",
    "email": "john.doe@example.com"
  }
}

Para el cumplimiento de pedidos, basa tu lógica en el estado de la transacción (transaction_status, o el status que regresa GET /checkout/v1/payments/{payment_id}), no en el status de la sesión. El estado de la sesión puede no reflejar el resultado final del pago. Consulta el significado de cada valor en la Referencia.

Siguientes pasos

¿Te resultó útil esta página?

En esta página