Skip to main content

Recipe 3: Remittance / FX Transfer

Required​

Complete Recipe 0: Account preflight + encryption first.

Session Token Context​

For inttransfer, run account status/minting against the PW user participating in this transfer. That PW user can be either debit_party or credit_party, depending on your business flow.

Important​

GET /quote is coming soon in pw-wrappers. Today, use the POST /institution/quote response (including quote_id) immediately in your workflow.

Flow​

  1. Create quote with session_token_enc
  2. Create transaction with transaction_type: "inttransfer"
  3. Include transfer_information for remittance metadata
  4. Poll status with transaction_id_enc

POST /institution/quote body​

{
"session_token_enc": "<encrypted_base64>",
"request_amount": "300.00",
"request_currency": "USD",
"institution_name": "DemoBank",
"debit_party": [
{ "key": "msisdn", "value": "15550001011" }
],
"credit_party": [
{ "key": "bank_account", "value": "0000001234" },
{ "key": "bank_code", "value": "DEMOUS33" }
]
}

POST /institution/transaction body​

{
"session_token_enc": "<encrypted_base64>",
"transaction_id": "TXN-INT-20260213-0001",
"transaction_date": "2026-02-13T18:30:00.000Z",
"amount": "300.00",
"sender_currency": "USD",
"sender_amount": "300.00",
"description": "Remittance transfer",
"transaction_type": "inttransfer",
"fees": [
{ "fee_type": "service_fee", "fee_amount": "3.50", "fee_currency": "USD" }
],
"debit_party": [
{ "key": "msisdn", "value": "15550001011" }
],
"credit_party": [
{ "key": "bank_account", "value": "0000001234" },
{ "key": "bank_code", "value": "DEMOUS33" }
],
"sender_kyc": {
"full_name": "Casey Example",
"country": "US"
},
"recipient_kyc": {
"full_name": "Riley Example",
"country": "MX"
},
"transfer_information": {
"purpose": "family_support",
"source_of_funds": "salary"
}
}

GET /institution/transaction request params​

{
"version": "2024-10-01",
"institution_name": "DemoBank",
"transaction_id_enc": "<encrypted_base64>"
}