Skip to main content

Recipe 2: PayWise Pay P2P

Required​

Complete Recipe 0: Account preflight + encryption first.

Session Token Context​

For p2p, mint session_token from the source PW wallet and encrypt it. The session_token_enc must match the debit_party PW user.

Flow​

  1. Execute transaction directly with transaction_type: "p2p"
  2. Poll status with transaction_id_enc
  3. Confirm the posted transaction in /institution/transaction_history

Note​

p2p does not require POST /institution/quote.

Quote is only required for inttransfer flows (see Recipe 3).

POST /institution/transaction body​

{
"session_token_enc": "<encrypted_base64>",
"transaction_id": "TXN-P2P-20260213-0001",
"transaction_date": "2026-02-13 18:25:00",
"amount": "25.00",
"sender_currency": "TTD",
"sender_amount": "25.00",
"description": "P2P wallet transfer",
"transaction_type": "p2p",
"fees": {
"total": "",
"convenience": "",
"sender_pays": "",
"recipient_pays": ""
},
"debit_party": {
"mobile_number": "15550001011",
"organization_id": "",
"account_number": "",
"account_type": "",
"currency": "TTD",
"metadata": ""
},
"credit_party": {
"mobile_number": "15550001012",
"organization_id": "",
"account_number": "",
"account_type": "",
"currency": "TTD",
"metadata": ""
},
"sender_kyc": {
"nationality": "TT"
},
"recipient_kyc": {
"nationality": "TT"
},
"transfer_information": {
"institution_name": "DemoBank",
"receiving_country": "TT",
"remittance_purpose": "family_support",
"source_of_funds": "salary_income",
"relationship_sender": "self"
}
}

GET /institution/transaction request params​

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

History Check​

Use /institution/transaction_history for the record that DevHouse stores after the transaction is created. That history route is the canonical confirmation step for institution transactions.