> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ripio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Travel Rule (Mexico)

> The question users of a Mexican partner answer in the widget about who owns the external wallet, required by the Mexican Travel Rule from November 30, 2026.

**Mexican partners only.** From **November 30, 2026**, Mexican regulation (article 24 Bis 2 of Acuerdo 115/2026) requires Ripio to record, for every purchase and sale, who owns the external wallet on the other side: the name and country of residence of its owner. What decides it is your account's country, not the user's. In the widget this is a single question, and **it happens entirely on Ripio's side**: there is no URL parameter or setting for you to handle. Widgets for Argentina, Brazil and Colombia never show it.

### When the user sees it

| Operation | Where | The question |
| - | - | - |
| [Buying crypto](https://docs.ripio.com/ramps-api/widget/flows/on-ramp.md) | The confirmation screen | Is the wallet that receives the crypto theirs? |
| [Selling crypto](https://docs.ripio.com/ramps-api/widget/flows/off-ramp.md) | The quote screen | Is the wallet they will send the crypto from theirs? |

The answer "the wallet is mine" comes **ticked by default**, so for most users it is nothing more than reading a line. If they untick it, they enter the owner's **full name** and **country of residence**, and the widget does not let them continue until both are filled in. Ripio does not verify the answer: the user declares it in good faith.

### If the declaration is missing

Some operations reach Ripio without going through those screens — a deposit into a fixed CLABE or a fixed deposit address made outside the widget, for example. When there is no declaration for them:

* **A purchase is not made.** The order is cancelled and the money is returned to the account it came from.
* **A sale is held.** Nothing is sold or paid out until the user declares.

Either way, **Ripio emails the user a link**. It opens a screen in the widget — no sign-in needed — that shows the wallet and asks the same question. Once they answer, a held sale resumes on its own, and the next deposits to that wallet are bought. A purchase that was already returned is not resumed: the user has to transfer again.

The link expires after 72 hours. A user who does not use it in time can still declare by going through the widget again.

### What your backend observes

The usual events, plus one more when a declaration is missing:

* **Purchase returned:** `ON-RAMP.DEPOSIT.RECEIVED` → `ON-RAMP.TRAVEL_RULE.REQUIRED` → `ON-RAMP.ORDER.CANCELLED` (`failureReason: TRAVEL_RULE_REQUIRED`) → `ON-RAMP.ORDER.REFUNDED`
* **Sale held:** only `OFF-RAMP.TRAVEL_RULE.REQUIRED`. Once the user declares, the usual sale events follow, starting with `OFF-RAMP.DEPOSIT.RECEIVED`.

You do not need to act on them: Ripio contacts the user. Full payloads are in [On-Ramp Webhook Events](https://docs.ripio.com/ramps-api/webhooks/on-ramp-events.md) and [Off-Ramp Webhook Events](https://docs.ripio.com/ramps-api/webhooks/off-ramp-events.md).

If you also integrate the API, [Travel Rule (Mexico)](https://docs.ripio.com/ramps-api/travel-rule/introduction.md) describes the same rules from that side.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.