Local Payment Methods

OXXOanchor

Configurationanchor

availability

OXXO is currently in limited release and is only available to pilot merchants in Mexico. If you want to participate in the pilot, please contact us.

OXXO is a cash-based payment scheme that is created online but is paid for at an OXXO convenience store. This payment scheme differs from other "instant" payments in that the buyer has up to 3 days to complete the payment. Before you can accept OXXO, you will need to ensure you have completed the following steps:

  • Create, verify, and link your PayPal business account in the Braintree Control Panel. In order to process Local Payment Methods, you need to have a valid PayPal business account.

Capturing Non-Instant Transactionanchor

There is no capture call for non-instant transactions; Braintree will associate a transaction on behalf of the merchant once we receive confirmation that the voucher has been paid.

note

In sandbox, use the approval URL to display a modal in which you can simulate a successful payment, an expired payment, or an unapproved payment. If successful payment is selected, a webhook will be sent to the merchant in 2-3 minutes and the payment context will update to show an associated transaction.

Server Side with GraphQLanchor

note

Use GraphQL to create a local payment transaction.

Configure webhooksanchor

A webhook integration is required for OXXO. Webhooks serve as confirmation of a successful payment as well as notification of an expired payment voucher. See the webhooks guide for a general overview on how to configure webhooks.

Below is an example of a Local Payment funded webhook for when the buyer has completed the payment:

  1. JSON
{
  "local_payment_funded": {
    "payment_id": "the_payment_id",
    "payment_context_id": "the_payment_context_id",
    "transaction": {
      "id": "the_transaction_id",
      "amount": 1.00,
      "currency_iso_code": "MXN",
      "created_at": "2021-07-28",
      "order_id": "the_order_id",
      "status": "settled"
    }
  }
}
}

Below is an example of a Local Payment expired webhook for when the voucher has expired:

  1. JSON
{
  "local_payment_expired": {
    "payment_id": "the_payment_id",
    "payment_context_id": "the_payment_context_id"
  }
}

See the Local Payment Method webhooks reference for details on the exact content of the Local Payment Method completed notification.