Check Status Manually
Check a payment's outcome when you can't wait for the webhook, and which status to trust.
While we recommend using webhooks for real-time updates, you can also check the status of a payment at any time by polling the API. This is useful in several cases:
- When a customer returns to your
success_urland you need to confirm the final status before showing an order confirmation. - For reconciliation scripts that check the status of pending orders.
- As a fallback if your webhook endpoint fails.
Option 1: session status
This is the most common method. Use the session_id to retrieve the full session object, which
includes the latest status and transaction_status.
Authorization
Authorization Tu API key con prefijo Token , p. ej. Token <API_KEY>
In: header
Path Parameters
The Session ID (e.g., sess_a1b2c3d4e5f6)
Response Body
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"
}Option 2: transaction details
If you have a payment_id (from the session object or a webhook), you can retrieve details for that
specific transaction.
Authorization
Authorization Tu API key con prefijo Token , p. ej. Token <API_KEY>
In: header
Path Parameters
The Payment ID (e.g., pay_x1y2z3a4b5)
Response Body
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"
}
}For order fulfillment, base your logic on the transaction status (transaction_status, or
the status returned by GET /checkout/v1/payments/{payment_id}), not on the session status.
The session status may not reflect the final payment result. See the meaning of each value in the
Reference.
