Added
15 October 2026
2 days ago
🌐 New Routes
- Pay out to a Mexican debit card — save a card as an MXN Payout Method with type
mxnDebitCard(the 16-digit card number and the issuing bank's bankId), or pay it inline with fiatAndRailDetails.typemxn-debit-card. See MXN Debit Card.
⭐ Enhancements
Payouts API
- MXN CLABE Payout Methods no longer need a bankId — the bank is read from the CLABE's first 3 digits. See MXN CLABE.
- Cross-chain payouts accept the newer amount format — a payout request that bridges across blockchains (e.g., sending USDC on polygon to an ethereum wallet) now accepts the amount via
amountV2 - USD to USD Payouts — USD payout requests, when your counterparty and payout method are to Portage bank, are free
Compliance API
- New attestation type supported. Upload documents showing where a business's funds come from with the
businessSourceOfFundsDocumentsattestation, during review or in response to an RFI. - Automatic document checks. When you submit a compliance review, proof of address, formation, UBO ownership and flow of funds documents are checked against your submitted attestations. Any mismatch names the field to fix.
- Submission validation improvements. When you submit a compliance review, identity document checks now flag a tax ID type that doesn't match the government ID's issuing country.
- Businesses without a website can now complete verification. The business website is now optional in the
businessDetailsattestation. Leave it out or send it empty, and the review proceeds instead of failing validation at upload. See Business KYC Requirements for more information.
Authentication
- Transfer API keys - new transfer keys start with
mural_transfer_test_ormural_transfer_live_
Sandbox
- Accounts — Accounts in staging now support the hold in fiat settlement strategy. See Simulated Payments.
🐛 Bug Fixes
Payouts API
- A payout returned by the bank after completion now reports as failed — it previously stayed complete indefinitely, with nothing to tell you the money had come back. It now moves to failed with a returned-by-bank reason and fires the
payout_status_changedwebhook. The principal returns to your deposit account and the fee stays collected.

