GuidesAPI ReferenceChangelog
Log In
Changelog

⚠️ Deprecations

  1. The GET /organizations/{id}/kyc-link (v1) endpoint has been removed from documentation (still works but will be removed in our next release)

🔜 Coming Soon

  1. LATAM onramp support — We're adding onramp support for MXN (Mexican Peso), BRL (Brazilian Real), and ARS (Argentine Peso). Stay tuned!

🚀 New APIs

  1. Archive endpoints for https://developers.muralpay.com/docs/counterparties-and-payout-methods and Payout Methods — soft-delete resources you no longer need:
  • POST /api/counterparties/counterparty/{id}/archive
  • POST /api/counterparties/{id}/payout-methods/{payoutMethodId}/archive
  1. Bre-B COP external pay-ins (COP virtual accounts using Bre-B keys). The keys can be fetched using the account details endpoint.

⭐ Enhancements

  1. Expanded KYC coverage — Added 20+ new government ID types across 50+ countries, including Residence Permits, Voter IDs, PAN Cards (India), My Number Cards (Japan), and more
  2. MaxLength validation on payout request memo field — The memo field now enforces a maximum length, returning a clear validation error if exceeded
  3. Bank account owner name validation — Added upfront validation requiring both first and last name for LATAM and regional currencies, preventing downstream payout failures
  4. Panama NATIONAL_ID validation relaxed — Updated from exactly 8 digits to 5-12 digits, supporting Colombian nationals with Bancolombia Panama accounts
  5. PayoutDestinationError — New structured error (HTTP 412) when a payout method is unavailable. Returns payoutMethodId and payoutIndex so you can programmatically identify which payout failed — https://developers.muralpay.com/docs/errors#payoutmethoderror
  6. Improved payout error messages — Validation errors on payout creation (e.g., unsupported routing number for wire) now surface the specific error message instead of a generic error

🐛 Bug Fixes

  1. Fixed a 500 error on payout creation when physicalAddress was missing — now correctly returns 400 validation error
  2. Fixed contact creation error propagation — validation errors (e.g., invalid bank account numbers) now return their specific message instead of a generic "Unable to create contact"
  3. Fixed floating-point precision issue in developer fee percent calculations
  4. Added global string sanitization to prevent encoding errors from special characters in request inputs
  5. Improved UUID validation across blockchain transaction endpoints — invalid formats now return 400 instead of 500

Happy new year to our developer family! We hope you all had an amazing holiday season. We hit the ground running in 2026 and are excited to share some new updates with you all. Read one for specifics.


⚠️ Deprecations

Note: deprecations are a warning of removal of functionality. The target removal date for each indicates the date in which functionality will cease to exist

  1. The endpoint: /organizations/{id}/kyc-link request for Retrieve a KYC Link endpoint is deprecated in favor of endpoint: /organizations/{id}/kyc-link/v2
    1. Target removal date: January 23, 2026

🌐 New Routes

  1. COP Bre-B support via the Payouts/PayoutMethods APIs. Please reach out to get this enabled for your organization.

🚀 New APIs

  1. Archive endpoints for the Counterparties and PayoutMethods APIs. Check out the new endpoints here and here.
  2. We have a new endpoint for fetching the link to the KYC Form. This request generates a new token on every request. This token will auto-expire after 24 hours for additional security.

⭐ Enhancements

  1. Bank name change via the bank accounts API: Giros y Finanzas → Banco Union
  2. Performance improvements to the Transactions API
  3. TOS reliance is enabled by default in our Sandbox environment
  4. Improved error handling
    1. Added InsufficientBalanceError for better insufficient balance error handling - docs here
    2. Improved Payout Request execution error handling when payouts fail due to recipient bank account issues

🐛 Bug Fixes

  1. Fixed an issue that resulted in usd payin methods to not be generated for Mural Accounts

⭐ Enhancements

  1. New webhook event type! You can now subscribe to webhook events that fire when your payout request or individual payout changes status — see docs here
  2. Explicit refund statuses for all Payouts is now live — see docs here. Previously, refunded payouts would simply be marked as failed.
    1. fiatPayoutStatus: refundInProgress
    2. fiatPayoutStatus: refunded (this is a terminal state)
  3. New RefundedPayoutMetadata type returned for transactionDetails when the Transaction pertains to a refund in Transactions API — includes original payout details in refund transaction responses. See the specific sub-type documentation in the response here

⚠️ Announcements

  1. After December 19th, 2025 at 5:00 PM EST, any Payouts that fail will no longer be marked as failed. The Payout will transition through two new statuses. This is an improvement we know a lot of you have asked for, and we hope this more clarity to where your clients’ funds are when payouts fail. If you explicitly handle the existing failed fiat payout status, you will want to handle the two new statuses as well before the release date.
    1. fiatPayoutStatus: refundInProgress
    2. fiatPayoutStatus: refunded (this is a terminal state)
    3. For any questions, please do not hesitate to reach out to [email protected]

⭐ Enhancements

  1. Documentation released for new Fiat Payout Statuses to explicitly track refunds: refundInProgress and refunded. While the documentation is released for these new statuses, we will not actually return these new statuses until December 19th, 2025 at 5:00 PM EST (see announcement above for more information). You can see these new fiat payout statuses in the response of getPayout here.
  2. New webhook event type! You can now subscribe to webhook events that fire when your organization has signed our Terms of Service — see docs here for more information.
  3. Ability to set the destination token and blockchain for fiat payins into a specific Mural Account via the new destinationToken field — see docs here. Note: EUR payins are only supported with a destination token of USDC.
  4. Updated our Payout validations
    1. Updated China USD validations to allow 9-25 digits account numbers see here for more information.

🐛 Bug Fixes

  1. Fixed an issue preventing the creation of ‘end user custodial’ organizations with only one Approver

🚀 New APIs

  1. We now have a new individualV2 request type for the create Business Verification endpoint which supports providing Source of Funds information as well as an enhanced Government ID support. Use this type going forward when creating business verifications for your individual organizations. See deprecations note below.

⭐ Enhancements

  1. Improved Payment Method validations:
    1. CPF and CNPJ verification digit validation for BRL Payment Methods validations (see here for specifics)
    2. Enhanced bank account owner name validations
  2. Child organizations underneath a parent organization now must have a unique email addresses
  3. No longer send email notifications to orgs with rejected Business Verifications
  4. Enforce unique alias constraints per-counterparty across all payout method types

🌐 New Routes

  1. (Beta) Can now payout USD to banks domiciled in Hong Kong — reach out to the team to get enabled for this flow!

⚠️ Deprecations

Note: Deprecations are a warning of removal of functionality. The target removal date for each indicates the date in which functionality will cease to exist.

  1. The type: individual request for the create business verification endpoint is deprecated in favor of type: individualV2
    1. Target removal date: December 12, 2025

🐛 Bug Fixes

  1. Fix single query parameter handling for /supported-banks endpoint
  2. Fixed an issue resulting USDT/tron deposits into Mural Accounts not appearing in the Payins API
  3. Fixed an issue resulting in Transactions sometimes not appearing in the Transactions API

🚀 New API

Counterparties & Payout Methods API
Manage your recipients and how to pay them in a first-class way with the new Counterparties and Payout Methods API. Learn more here.


Enhancements


USDT Payins on the Tron Blockchain
USDT Tron payin methods are now available via the Accounts API, allowing users to fund their accounts using the Tron network. Reach out to learn more and get this feature enabled.

Transactions API Enhancements
The Transactions API now includes ACH trace numbers for applicable transactions, improving transparency and traceability. Reference the API here.

Terms of Service “Reliance” Model
Simplify onboarding for your users by embedding Mural’s Terms of Service directly into your own flow using the “Reliance” model. Checkout our documentation on this feature to learn more.


🐛 Bug Fixes

  • Fixed an issue that caused blockchain payout methods to not appear in the Payout Methods search endpoint
  • Fixed an issue that prevented USD payouts to China from being created
  • Fixed an issue that resulted in certain Webhooks not being sent

🚀 New API

getTransaction endpoint
You can now query for a specific Transaction via the Transactions API


🌐 New Routes

USD Payouts to Panama

You can now send USD to banks in Panama


Enhancements

Custom Developer Fees for Payins
Earn custom fees on Payins made into your users’ accounts. This gives developers more flexibility to monetize their payment flows. Learn more here.

Expanded Webhook Event Types
Get real-time updates for business verification (KYC) status changes via newly added webhook event types. Learn more here.

🚀 New API

KYC API Passthrough API
Submit your users’ KYC/KYB data programmatically via our API. This eliminates the need for duplicate forms and manual handoffs, enabling a fully seamless onboarding experience within your own product. Learn more here.

Webhooks API
Receive automatic notifications whenever funds enter or leave your account. These webhooks enable real-time balance updates for your users. Learn more here.


Enhancements

Custom Fees in the Payouts API
You can now add custom fees you’d like to collect on top of Mural’s base fees directly through the API. This provides greater flexibility for developers to monetize payout flows. Learn more here.

Improved COP Payouts
Payouts to Davivienda, Bancolombia, Nequi, and Daviplata (≈80% of our payments in Colombia) now settle in under 30 minutes, 24/7. For other banks, payouts are delivered hourly on weekdays between 8:30 AM and 2:30 PM (COT time).


🐛 Bug Fixes

  • Improved error messaging for payout failures due to invalid recipient data.