Skip to main content
June 19, 2026
Frame theme parameter documented — frames accept a theme query parameter set to dark or light to force a specific appearance. Omit it and the frame follows the user’s system appearance. The parameter is now documented across the frames that render UI.Updated references:
June 17, 2026
Buy Button documentation — the buy button now has a full guide and frame reference. The buy button renders a MoonPay-hosted express-checkout payment button (Apple Pay, Google Pay, or card) and runs the same buy pipeline as the headless buy frame.New pages:The setupBuyButton() reference now documents the ready event, which the SDK emits once the button is rendered and ready for the customer to tap.
June 17, 2026
Credentials payload documented — the decrypted shape of the credentials string returned by the check and connect frames is now explicitly documented. Once decrypted, credentials is a JSON object with accessToken, clientToken, and expiresAt. See API and SDK credentials.
June 12, 2026
Customer geo fields on connectioncountry, administrativeArea, and area are now returned directly on the customer object in the complete event payload (connect and check frames) and in the Connection type returned by getConnection(). Use these fields to determine which payment disclosures apply for the customer’s jurisdiction.capabilities.ramps.requirements.paymentDisclosures is deprecated. Read geography from customer.country, customer.administrativeArea, and customer.area instead.Updated references:
June 12, 2026
React Native SDK is now available — the React Native SDK (@moonpay/platform-sdk-react-native) is published on npm and its reference is now in the Platform sidebar:
  • Provider and hook<MoonPayProvider> and useMoonPay() give any descendant component access to the client.
  • Client methods — customer connection, email/OTP auth, payment methods, quotes, frame setup (widget, buy, buy button, add card, Apple Pay, Google Pay, challenge), and transactions — mirroring the Web SDK surface.
  • Inline components — every frame also ships as a declarative component (<MoonPayApplePayButton>, <MoonPayConnect>, <MoonPayWidget>, and more) you render directly in your layout, with a reactive quote prop that updates live frames without remounting. These replace the deprecated setupApplePay(), setupGooglePay(), and setupBuyButton() client methods.
The SDK reference overview, Web SDK overview, and manual integration pages now point React Native integrators at the SDK instead of a direct frame integration.
June 12, 2026
Web SDK reference — corrections and 1.0.0 coverage — the Web SDK docs were audited against the @moonpay/platform-sdk-web 1.0.0 source and corrected:
  • getQuote() input shape — every example and parameter table now uses the nested request shape the SDK and API accept (source: { asset: { code }, amount }, destination: { asset: { code } }, wallet: { address, tag? }, paymentMethod: { type, id? }). The previously documented flat shape (source: "USD", sourceAmount, walletAddress, string paymentMethod) is rejected by the API. Corrected across the SDK reference, all pay-with-* guides, and the introduction.
  • New: setupAuth() — the lighter-weight email/OTP counterpart to connect() for headless and Identity API integrations, added in SDK 1.0.0.
  • New: Identity methodscreateIdentity, getIdentity, updateIdentity, verifyIdentity, getIdentityUploadUrl, and submitIdentityFiles, added in SDK 1.0.0.
  • getConnection() — now documents the optional skipKyc flag for headless integrations.
  • setupChallenge() — the challenge URL no longer needs to carry a channelId query parameter; the SDK generates one automatically (SDK 1.0.0). Identity verification challenge URLs can be passed straight through.
  • setupAddCard() — the Add Card frame does emit a ready event; the docs previously said it didn’t.
  • setupApplePay() and setupGooglePay() — the SetupApplePayError / SetupGooglePayError unions are "configurationError" | "genericError"; quote problems and wallet availability surface through onEvent instead. The Apple Pay page also gained the previously undocumented challenge event.
  • getPaymentMethods() — the response is { data: { paymentMethodConfigs, paymentMethods } }; the previously documented storedCards field doesn’t exist on the wire.
  • Package name and createClient() usage — remaining @moonpay/platform imports and Result-wrapped createClient() examples in the guides were updated to @moonpay/platform-sdk-web and the synchronous Client return.
June 12, 2026
Check and Connect frame references corrected — resolved discrepancies in the Check and Connect frame references to ensure the correct event payloads are documented, and removed the retired connection_required / connection_pending / connection_unavailable error codes from the SDK references.
June 10, 2026
Quotes now reject assets that aren’t available in the active modePOST /platform/v1/quotes/buy returns a 400 invalid_request error when the destination asset doesn’t support the mode of your session (test or live). Previously the endpoint returned a quote even when the asset couldn’t be purchased in that mode. The error includes a field-level detail identifying the asset:
{
  "code": "invalid_request",
  "message": "Invalid request",
  "errors": [
    {
      "field": "destination.asset.code",
      "message": "Destination asset is not supported in test mode."
    }
  ]
}
In test mode, request quotes for assets on a supported testnet, such as ETH or SOL.
June 9, 2026
Platform SDK reference — Web — the Web SDK (@moonpay/platform-sdk-web) is now fully documented and wired into the Platform sidebar:Web SDK pages were rewritten against the current SDK source: the package name was corrected across samples (@moonpay/platform@moonpay/platform-sdk-web), createClient() is now correctly typed as returning a Client directly, API error tables use the real DevPlatformApiError shape (code + message + optional errors[]), success envelopes use { data } and { data, pageInfo }, and event and error unions for every setup* method match what the SDK actually emits (including the kind: "frame" discriminator on challenge events, oneTapApplePaySecondFactorRequired for Apple Pay, and "unsupported" rather than an error when Google Pay is unavailable). getConnection documents the full set of connection statuses (including termsAcceptanceRequired) and CustomerCapabilities.Challenge frame error event guidance corrected — the Handle challenges guide previously told partners to surface the message payload from the Challenge frame’s error event. That contradicts the Challenge frame reference, which marks code and message as developer-facing and explicitly not for end-user UI. Updated the guide to recommend logging the code and message and showing the customer a generic next step (such as retry or choose a different payment method) instead.
June 9, 2026
Buy quotes now return payment disclosure IDs — the quote response includes a paymentDisclosures array of { id, version } objects that identifies exactly which disclosure(s) to render for a transaction. This replaces the need to infer disclosure requirements from capabilities.ramps.requirements.paymentDisclosures at connect time. The capabilities.ramps.requirements.paymentDisclosures property is deprecated and will be removed.Apple Pay frame failure codes documented — the Apple Pay frame reference now lists the failureCode values a failed complete event can return (applePayMerchantUnavailable, transactionNotAllowed, validationError, serviceUnavailable, authorizationDeclined, and unknown), each with its default failureReason and recommended handling. The Pay with Apple Pay guide shows how to branch on failureCode to drive your error handling.Google Pay frame failure codes documented — the Google Pay frame reference now lists the failureCode values a failed complete event can return (transactionNotAllowed, validationError, serviceUnavailable, authorizationDeclined, and unknown), each with its default failureReason and recommended handling. The Pay with Google Pay guide shows how to branch on failureCode to drive your error handling.
June 3, 2026
Test mode documents challenge triggers — the Test mode page now explains how to force a challenge in test mode by setting the buy amount to a specific value: 48 triggers a wallet-ownership challenge (Apple Pay and card) and 49 triggers a CVV re-entry challenge (card). These triggers only apply in test mode.
June 1, 2026
Challenges and quotes docs corrected — refreshed the guides and SDK reference to match how the SDK and API actually behave:
  • Handle challenges is now a flow-agnostic guide. Challenges are surfaced by frames — today the Apple Pay, Google Pay, and buy (Pay with card) frames each emit a challenge event whose URL is loaded into the dedicated Challenge frame. The old example showing challenge nested inside a quote response was incorrect and has been removed.
  • Core concepts → Quotes no longer describes “price quotes” and “executable quotes” as two types. There is a single quote with an executable boolean — see the quotes API reference for the request fields required to receive executable: true.
  • The per-flow guides (Apple Pay, Google Pay) and the getQuote / setup-method SDK reference pages now use this single-quote framing.
May 28, 2026
Challenge frame docs cover the identity flow — updated the Challenge frame reference so the complete, cancelled, and error payloads describe both upstream flows (buy and identity):
  • complete and cancelled payloads are now documented as discriminated unions over flow: "buy" | "identity". The identity variant carries identityId on complete and no extra fields on cancelled.
  • error codes refreshed to match the frame’s wire format (invalid_token, unsupported_flow, invalid_challenge) and the payload type loosened to code: string to reflect that additional codes can be propagated from the upstream flow.
May 26, 2026
Frame theming — every frame now accepts a brandColor URL parameter that seeds a runtime-derived palette across the entire UI, plus an optional customTheme for border radius, color scheme lock, and granular palette control. See the new theming guide for accepted formats and examples per frame.
May 21, 2026
Challenge events for Apple Pay and Google Pay — the Apple Pay frame and Google Pay frame now emit a challenge event when verification is required before a transaction can proceed. Challenge handling added to the Apple Pay SDK reference, Google Pay SDK reference, and manual integration guides for web, iOS, React Native, and Flutter.TransactionStatus fix — corrected the TransactionStatus enum value from complete to completed in the Apple Pay frame and Google Pay frame references.
May 20, 2026
Google Pay — new Pay with Google Pay guide, Google Pay frame reference, and setupGooglePay SDK method. Covers the standalone Google Pay frame integration and manual integration for web, Android, React Native, and Flutter.
May 19, 2026
EEA disclosures — published the exact verbiage required above the Apple Pay frame and the card Pay button for customers located in the EEA, with separate text for standard crypto-assets and non-MiCA-compliant stablecoins (USDT, cUSD, DAI, PYUSD). See Going Live.
May 18, 2026
API key header — server-to-server requests now authenticate with the X-Api-Key header. See Using the Platform API and API and SDK credentials.
May 13, 2026
Payment-disclosure geographypaymentDisclosures now identifies the customer’s geography. country is the ISO 3166-1 alpha-3 code, administrativeArea is included for US state-level disclosures, and area can identify broader regions such as "EEA".
May 12, 2026
Going Live — documented the acceptance criteria for the global rollout (except UK). Each requirement is now tagged with a geo, and new sections cover Cards, Identity API, and EEA Apple Pay disclosures (verbiage pending). See Going Live.
May 8, 2026
Preview removed — the Developer Platform is now generally available. The “currently in preview” notice has been removed from all docs pages.
May 8, 2026
Card payments — new Pay with card guide and frame references for Add Card, Buy, and Challenge. Covers the full integration: listing and managing stored cards, getting a card quote, executing transactions via the headless buy frame, and handling verification challenges (SCA, 3DS, CVC re-entry, KYC). Also adds the Delete payment method API endpoint.
May 5, 2026
Reset frame — new headless frame at /platform/v1/reset that lets you log a customer out by clearing their authentication state on MoonPay’s domain. Reports completion via postMessage. See Reset.
May 5, 2026
Unified docs site — Platform and Widget docs now live under a single Mintlify site with separate top-level tabs. Legacy /overview/*, /guides/*, /frames/*, /sdk-reference/*, and /api-reference/* URLs redirect to their new /platform/* paths.
May 1, 2026
Manual integration fixes — corrected the WebView samples to post the payload as a string, base64-decode credentials, and handle JS dialogs. Affects web, iOS, Android, React Native, and Flutter guides.
May 1, 2026
Fee language updated across guides to clarify partner vs. ecosystem fees.
April 30, 2026
Revoke sessionDELETE /platform/v1/sessions invalidates an active session token. See Revoke a session.
April 29, 2026
Sessions endpoint renamedPOST /platform/v1/session is now POST /platform/v1/sessions (plural). The old path continues to work; new integrations should use the plural form.
April 28, 2026
Apple Pay going-live guide — added production-readiness details for the Apple Pay frame, including merchant verification and domain registration steps. See Pay with Apple Pay.
April 27, 2026
customerId in connect/check payload — the complete postMessage event now documents customer.id, and the session-create request documents the customerId field for returning users (skip the connect flow when you already have one).
April 20, 2026
Manual integration credentials — the manual integration guides now use clientToken (not sessionToken) to initialize frames, matching the early-credential-issuance flow.
April 17, 2026
US payment-disclosure rails narrowed — the paymentDisclosures capability is now documented as scoped to NY and WA within the US. Customers in other US states will not receive a paymentDisclosures requirement.
April 17, 2026
HKDF examples — manual integration code samples consistently pass undefined for the info parameter of hkdf().
April 10, 2026
Acceptance criteria page — new compliance checklist outlining the requirements for going live. See Going live.
April 10, 2026
Manual integration moved — the per-platform manual integration pages now live under Guides → Manual Integration.
April 10, 2026
Using agents — new page covering MCP client setup for Claude Code and Codex, so you can wire your agent to MoonPay’s developer docs. See Using agents.
April 10, 2026
Manual integration docs — initial documented integrations for web, iOS, Android, React Native, and Flutter (graduated from hidden drafts).
April 9, 2026
Early credential issuance — the credentials-flow guide now reflects that clientToken and accessToken are issued before authentication completes, so partners can initialize sensitive frames sooner.
April 9, 2026
Connect-flow low-friction callout — added guidance to the connect-flow guide about minimizing handoffs back to MoonPay-hosted UI.
April 9, 2026
Apple Pay frame height — corrected the documented frame height for the Apple Pay frame.
March 2026
Quote API: fees.partner field renamed to fees.ecosystem.Apple Pay: documented test-mode and frame sandbox requirements, plus a corrected frame size.Customer capabilities and payment-disclosure requirements expanded.New widget-fallback frame and integration guide.Frames protocol: documented version: 2 and added the versioning section.Frame URLs migrated from /v2/* to /platform/* across all docs.
February 2026
OpenAPI now served live from https://api.moonpay.com/platform/openapi.json rather than checked into the repo.Removed historical pk_test / pk_live references in favor of the new credential model.Initial Apple Pay frame size and frame sandbox requirements published.Mintlify upgrade and a content-style-guide pass across guides and frames docs.