Skip to main content
Use this guide to execute a transaction with Apple Pay after you have a connected customer. To let new customers buy with Apple Pay before they have a MoonPay account, see Guest checkout. See the Going Live section for details on the requirements you must meet before you can take this integration to production.

Prerequisites

  • A connected customer (via client.getConnection() or client.connect()).
  • A UI surface where you can render the Apple Pay frame.
You can test the full Apple Pay flow without a real Apple Pay account by using test mode. The frame renders a mock Apple Pay button that simulates successful and failed transactions.

Display payment methods

Use the SDK or API to fetch and display the payment methods that are available for the customer right now.

Get quotes

Quotes provide real-time prices and fees for transactions. Present detailed quotes in your UI using data from the SDK or API. Only quotes with executable: true can be used to execute a transaction. See the quotes API reference for the fields required to receive executable: true.

Execute the transaction

To execute a transaction, set up the payment flow based on the quote. Different payment methods have different requirements—you can configure each as needed to control your experience. For the frame URL, size, permissions, and events, see the Apple Pay frame reference.
Some transactions require a challenge — the Apple Pay frame emits a challenge event when extra verification is needed. See Handle challenges for the full flow.
Apple Pay

Transaction statuses

Transactions have the following statuses:
  • Pending: The transaction has been initiated and the payment accepted. The assets are being transferred.
  • Complete: The transaction is finalized. The payment is complete and the assets have been delivered to their destination.
  • Failed: The transaction has failed. The payment was not executed and funds were not transferred.