Skip to main content
Using MoonPay Commerce, you can make end-to-end headless payments with no UI required. This is ideal for seamless integrations with third-party services, allowing merchants to accept payments through MoonPay Commerce without a UI.
This feature is currently supported only on the Solana network.
There’s also an OpenClaw skill available for headless functions - https://clawhub.ai/mavagio/mpc-accept-crypto-payments

How It Works

  • Merchants generate Pay Links that define the payment request, including supported currencies.
  • Payers prepare a transaction via the API using the Pay Link and their public key.
  • MoonPay Commerce provides the transaction payload (serialized transaction, message, and token) needed for signing.
  • Payers sign and submit the transaction, completing the payment fully through the API without a UI.

How to Get Started

  1. Create a Pay Link
The merchant creates and shares a Pay Link ID. Optionally, they may also specify a currency ID.
  • If no currency is provided, it will default to USDC.
  • If USDC is not available, the first enabled currency on the Pay Link will be used.
  1. Prepare the Transaction
The payer calls the prepare endpoint, passing the following parameters:
  • paymentRequestId - The Pay Link ID
  • senderPublicKey - the payer’s public key
  • currencyId (optional)
  • any other required fields (see API reference for full list)
  1. Sign the Transaction
The /prepare endpoint responds with:
  • transactionToken - Identifier required to submit the signed transaction.
  • transactionMessage - Metadata or message tied to the transaction.
  • serializedTransaction - Unsigned transaction data to be signed by the payer.
  • addressLookupTableAccounts - Accounts used to resolve addresses in the transaction.
To sign the transaction, you can use the WalletService helper shown below:
  1. Submit the Transaction
The payer calls the submit endpoint, providing:
  • the signedTransaction value
  • the transactionToken from the /prepare response.
This submits the fully signed transaction for processing.