FATF Recommendation 16 requires Virtual Asset Service Providers to exchange originator and beneficiary information on transfers above a threshold. PAX captures the required fields at withdrawal time and stores them alongside the payout batch. This page documents the schema so counterparty VASPs know what to expect.
Both the FATF baseline and most implementing jurisdictions (Singapore MAS, EU TFR, US FinCEN proposed) set the threshold at USD 1,000-equivalent. PAX applies the rule at the Worker layer for every payout batch where total_amount_usd ≥ 1000.
Below the threshold, no counterparty information is requested; the payout goes through with only the standard OFAC + 24-hour whitelist checks.
At withdrawal time, the Builder Portal presents a Beneficiary Details form the first time a wallet is used for a payout ≥ $1,000. The field layout maps to IVMS 101:
| Field | IVMS 101 path | Required |
|---|---|---|
| Beneficiary type (natural person / legal entity) | beneficiary.entity_type | Yes |
| Full legal name | beneficiary.name_identifier[] | Yes |
| Physical address | beneficiary.geographic_address | Yes if natural person |
| National identifier (passport / national ID / tax ID) | beneficiary.national_identification | Yes if natural person |
| Date & place of birth | beneficiary.date_place_of_birth | Yes if natural person, one of ID or DOB+place |
| Registered legal name of counterparty VASP (if any) | beneficiary_vasp.legal_person_name | Yes if wallet is at a VASP |
The full beneficiary object is stored on the payout_batches row under metadata.travel_rule as a JSON payload. Access is restricted to admin operators with the compliance:read scope. Retention: 7 years per FATF R.11 recordkeeping.
{
"payout_batch_id": "pay_abc123",
"metadata": {
"travel_rule": {
"collected_at_ms": 1789900000000,
"collected_via": "builder_portal_form",
"collector_ip_country": "SG",
"beneficiary": {
"entity_type": "natural_person",
"name": {"primary": "Builder Sanchez", "secondary": null},
"address": {"country": "SG", "street": "…", "city": "Singapore", "postcode": "…"},
"national_id": {"type": "passport", "number": "…", "issuer_country": "PH"},
"dob": "1990-01-15"
},
"beneficiary_vasp": null,
"amount_usd": "1500.00",
"currency": "USDT",
"network": "polygon"
}
}
}
PAX is progressively integrating with Travel Rule messaging networks. Current status:
Until direct network integration lands, PAX operates in collect-and-hold mode: we capture the required fields from our builder and store them; on request from an audited counterparty VASP with a valid Travel Rule inquiry we release the record per FATF R.16.
Builder bld_abcd1234 withdraws $1,500 USDT on Polygon:
POST /v1/builders/me/withdraw with the target wallet.amount_usd ≥ 1000, checks metadata.travel_rule for that wallet.TRAVEL_RULE_INFO_REQUIRED).POST /v1/builders/me/withdraw with the beneficiary object.metadata.travel_rule, cachechecks OFAC + Chainalysis (once wired), and enqueues the payout batch.PAX runs the Travel Rule flow globally for consistency, regardless of the builder's declared country. If your jurisdiction has a stricter threshold (e.g., Switzerland CHF 0) we honour that on request via /security contact.