Added
17 August 2026
4 days ago
⚠️ Deprecations
- Compliance API — the top-level
failureCodeon attestation validation failures. Sunset 21 August 2026 EOD. A validation failure on a compliance review attestation now carries afailureInfoobject discriminated onfailureCode. The top-levelfailureCodestill returns the same value for released clients, but it only mirrorsfailureInfo.failureCode. Read the code fromfailureInfogoing forward. - Compliance API —
primaryAccountPurpose: "OTHER". Sunset 21 August 2026 EOD.OTHERand its companion fieldprimaryAccountPurposeOtherare deprecated; submit the closest supported purpose instead. After the sunset date,OTHERreturns a400. See Upload attestations. - Compliance API —
OTHERvalues onlatestOccupation. Sunset 21 August 2026 EOD. AllOTHER/OTHER_*values, along withlatestOccupationDescription, are being removed; use one of the 392 supported occupations. Deprecated values return a400after the sunset date. See Upload attestations. - Accounts API —
accountDetails.depositAccount. Sunset 4 September 2026 EOD. Applies toGET /api/accountsandGET /api/accounts/{id}; useaccountDetails.payinMethods[]instead. It is already in responses today, so you can migrate now. Deprecated since 24 June 2025. - Payouts API —
payouts[].amount. Sunset 25 September 2026 EOD. OnPOST /api/payouts/payout, the source-denominated amount is deprecated in favor ofamountV2, which also supports target amounts. Send exactly one of the two. Note the shape change:valueis a minor-unit string, and the token moves intosourceCurrency.
🚀 New APIs
- Programmatic RFIs — answer a compliance request for information over the API. A review in
additionalInformationRequestednow carries anrfiId. Use it to read the request (GET /api/compliance/{organizationId}/rfis/{rfiId}), upload the answer (PUT /api/compliance/{organizationId}/rfis/{rfiId}/attestations), and submit it (POST /api/compliance/{organizationId}/rfis/{rfiId}/submit). Each requested item states its scope — the whole attestation, or named fields — with a machine-readable reason code, and a field-scoped answer merges onto the attestation's current values rather than replacing them. There is no RFI webhook yet, so poll the RFI or the review status. See Responding to RFIs
🌐 New Routes
- USDT0 on Plasma — USD on-ramps and off-ramps. An account holding USDT0 on Plasma can now fund from USD and pay out to USD. This is enabled per organization. Reach out to [email protected] if you want Plasma enabled.
⭐ Enhancements
- Compliance API — address validation on attestations. Address-bearing attestations (
individualResidentialAddress,individualPersonalInfoLight,businessAddress) are now validated against the Google Address Validation API on upload. Failures are alwaysWARNINGseverity — you can acknowledge them at submit — so an unverifiable address never blocks a review on its own. Each failure returnsseverity, an optionalfieldnaming the attestation payload field, and afailureInfounion. A suggested correction carriessubmittedAddressandsuggestedAddress, which you can resubmit as-is. Associated person (UBO) attestations are not validated yet. - Payouts API — target-amount payouts. Specify the exact amount your recipient receives and Mural solves for the source debit. Each payout in
POST /api/payouts/payoutnow acceptsamountV2, withtype: "sourceAmount"(you set what is debited) ortype: "targetAmount"(you set what lands).valueis a minor-unit string ("15000"= 150.00), andsourceCurrencynames what to debit — a fiat balance or a stablecoin. Target amounts are fiat payouts only, and the existingamountfield still works but is deprecated — send exactly one of the two.
🐛 Bug Fixes
- The LIGHT-tier KYC threshold counts payouts only. The lifetime payout limit that triggers a KYC upgrade previously summed every transfer associated with an organization, in both directions, so inbound deposits and transfers between an organization's own accounts counted toward it. Usage is now outbound value only.