This is the human-readable version.
GET /spec/versions lists the supported versions machine-readably, and each version’s full shape is at /spec/<date>. See API Versions for the header itself.2026-08-01
Customers sign the terms and conditions before identification.
A customer created on this version starts in
SigningsRequired instead of IdentificationRequired: the terms carry the data-sharing agreement, so acceptance now comes before MoonPay Enterprise collects KYC data.
GET /customers/{id}/required-signings also changes: when nothing is outstanding it returns 200 with an empty list, where earlier versions return 409 Conflict.
Because the lifecycle plays out in webhooks and background work with no request header to read, this version is pinned to the customer when you create it and drives that customer’s onboarding for its lifetime. Customers created earlier keep the original order whatever header you send later, so adopting it only affects customers created from then on. See Onboarding.
On its initial release, an empty list from
required-signings did not always mean “nothing to sign”: before identification was approved there was no verified region to derive terms from, so a customer in SigningsRequired also returned 200 [], and you had to fetch the terms with GET /terms-and-conditions?country={ISO3} instead. The update below removed that ambiguity — required-signings now returns the outstanding document at any point in the lifecycle, including before identification.This version cannot be verified from the OpenAPI document alone — the shapes are identical to
2026-07-01. Rehearse the status sequence in sandbox, which reproduces the pre-identification flow including the empty required-signings response.required-signings and terms-and-conditions?country= return has changed: MoonPay Enterprise now serves one global document to every customer created on this version, rather than a document specific to their country’s region. Response shapes are unchanged — you still get a list of {id, url, display_name} — and country is still a required parameter on GET /terms-and-conditions?country={ISO3} for backward compatibility, but its value no longer affects which document comes back.
The region-mismatch re-sign case this section originally described (validating the signed terms against the verified identification’s region, and asking for a re-sign on a mismatch) no longer applies to customers created on this version: there is only one document to sign, so nothing to mismatch against.
GET /customers/{id}/required-signings also covers the whole lifecycle for these customers, returning the outstanding document before identification as well as after — so a single code path replaces the earlier split between terms-and-conditions?country= and required-signings. country is still accepted for backward compatibility. Note that re-signing does not disappear entirely: publishing a new document still returns affected customers to SigningsRequired. See Signing new terms later.
Identification failures return structured, machine-readable errors.
A failed
Business, Person, or Token identification submission now returns 400 with an array of {code, message, docs_url, beneficiary_index} objects instead of a plain error string, so your integration can branch on code instead of pattern-matching English text. See Identification Errors for the full list of codes.
Most checks return a single entry, but the four document-requirement codes (company_details_required, legal_presence_required, ownership_structure_required, control_structure_required) can each appear once per company in the submission that’s missing that group — a non-US Business submission checks all four independently, so several can genuinely be missing at once.
Callers on an earlier or unversioned
X-API-Version keep receiving today’s plain error string on 400, unchanged.2026-07-01
Adds the FedNow deposit rail.
The
deposit_rails array can now include a FedNow member, for autoramps whose deposit account supports FedNow. This is additive to the DepositRail union: every existing member (Iban, AchWire, Swift, and the rest) is unchanged.
2025-03-13
Initial version. Served when noX-API-Version header is sent.