Skip to main content

Understanding Payment Orders

Every payment you process creates a payment order. Track the status, retrieve transaction details, and prevent duplicate charges automatically.

Create a Payment Order

Create a payment order to process card payments, SPEI transfers, PayCash cash payments, CIE Cash Net deposits, or batch payments. Each payment type uses the same endpoint with different payment method configurations.
PCI Compliance Required for Direct Card IntegrationIf you handle raw card data (card number, CVV, expiry) through this API, your business must be PCI DSS compliant. This involves security audits, vulnerability scans, and strict compliance requirements.Not PCI compliant? Use our hosted payment page or JavaScript SDK instead. These solutions handle card data for you and keep your business out of PCI scope.Contact support@cheqpay.mx for hosted payment options.

Card Payment Example

amount unit is the smallest currency unit (e.g., cents). So for MXN, 100 MXN = 10000 cents

Response

Required Fields

Card Payments

Accept credit and debit cards

SPEI Transfers

Immediate bank-to-bank transfers in Mexico

PayCash Payments

Offline cash payments with reference

CIE Cash Net

BBVA cash and bank deposits

Batch Payments

Process multiple payments

Order Status

Payment orders move through different states as they process:
Common Statuses: Most card payments will only see PENDINGPROCESSINGCOMPLETED. Offline methods (SPEI, CIE, PayCash) sit in REFERENCE_GENERATED while the customer completes the deposit. The other statuses handle specific scenarios like 3DS authentication, authorizations, cancellations, and refunds.

Status Flow

Most successful payments go directly from PENDINGPROCESSINGCOMPLETED in 2-5 seconds.

3D Secure Flow (Summary)

When 3DS is required, the flow adds three steps:
  1. Collect device data (invisible iframe) when status is PAYER_AUTHENTICATION_DEVICE_DATA_REQUIRED.
  2. Check enrollment: POST /v2/payment-orders/:id/payer-authentication → result may be COMPLETED, FAILED, or PAYER_AUTHENTICATION_CHALLENGE_REQUIRED.
  3. If a challenge is required, display the challenge iframe using stepUpUrl and jwt, then validate with POST /v2/payment-orders/:id/payer-authentication/validate.
The authentication method (SMS, biometrics, app, etc.) is decided by the issuing bank, not by Cheqpay or the merchant, and can vary per transaction.

Full 3D Secure Guide

See detailed implementation steps and examples

Track Your Orders

Every payment order has two IDs:
  • Cheqpay ID - Our internal reference (e.g., ord_abc123)
  • External ID - Your order or transaction ID (e.g., order-12345)

Retrieve an Order

Use either ID to retrieve order details:

Example Request

Example Response

What’s Included

Current status and timestamps for all state changes
Complete customer details including contact information
Masked card information or payment method used
Original amount, refunded amounts, and net total
Created, processed, completed, and updated timestamps

Prevent Duplicate Charges

Cheqpay automatically prevents duplicate payments using the externalId field. If you send the same request twice, we’ll handle it intelligently:

Smart Duplicate Detection

Payment Successful

Returns existing payment (no duplicate charge)

Payment Pending

Returns pending payment (no new request)

Payment Failed

Creates new payment (allows retry)

How It Works

1

First Request

You create a payment with externalId: "order-12345" and it succeeds.
2

Duplicate Request

Network issue causes the request to be sent again with the same externalId.
3

Protected

Cheqpay recognizes the duplicate and returns the existing successful payment. No duplicate charge.
Always use your order ID or transaction ID as the externalId. This protects your customers from being charged twice due to network issues or user errors.

Best Practice

List Payment Orders

Retrieve a list of payment orders for reporting and reconciliation:

Query Parameters

Monitoring Payment Status

You can check payment order status at any time using the GET endpoint to retrieve the latest information.

Next Steps

Process Payments

Learn how to create payment orders

Handle Refunds

Issue full or partial refunds

Manage Customers

Track customer payment history

Error Handling

Handle failed payments gracefully