Skip to main content
This guide shows you how to accept payments using SafetyPay, an alternative payment network that operates across Latin America. SafetyPay supports two payment types: Cash (safetypayCash) for payments at physical locations, and Transfer (safetypayTransfer) for online bank transfers.

When to Use SafetyPay

SafetyPay is ideal for:
  • Customers in regions without OXXO coverage.
  • Expanding cash payment options beyond convenience stores.
  • Customers who prefer to pay via online bank transfer without a card.

Step 1: Create a SafetyPay Payment Request

SafetyPay requires an apm_config object with channel and bank_ids to specify the payment network and collection point.

SafetyPay Cash

Use type: "safetypayCash" and channel: "WP" for cash payments at physical locations.

SafetyPay Transfer

Use type: "safetypayTransfer" and channel: "OL" for online bank transfer payments.

Step 2: Send the Payment Request

Send a POST request to the Process Transaction endpoint to initiate the payment:

Step 3: Handle the Response

Both Cash and Transfer return a Pending status with a redirect URL where the customer completes the payment.

SafetyPay Cash response

SafetyPay Transfer response

Redirect the customer to the url inside next_action.redirect_to_url to complete the payment on the SafetyPay gateway. Use verify_transaction_status_url to poll the transaction status.

Step 4: Track Payment Status

SafetyPay payments follow this status flow:
  1. Pending - Waiting for the customer to complete payment at the SafetyPay gateway.
  2. Success - Payment confirmed.
Set up webhooks to receive real-time notifications, or poll the status endpoint:

Available Bank IDs - Mexico

Cash only (channel: “WP”)

Cash + Online (channel: “WP” or “OL”)

Banks listed under Cash + Online support both channel: "WP" and channel: "OL".

Next Steps