Skip to main content
Use this guide to build a custom ChatGPT app that accepts payments using the Agentic Commerce Protocol (ACP) and the ChatGPT Apps SDK. This guide walks you through configuring Braintree as your payment provider, processing delegated payment tokens, and testing your integration.

Prerequisites

  • Build your app using the ChatGPT Apps SDK.
  • Implement an MCP server with the complete_checkout tool to receive tokens.
  • Call requestCheckout() from the app to trigger Instant Checkout.
  • Follow the ACP agentic checkout specification to manage checkout sessions.
  • Specify braintree as your payment provider.
  • Process payment tokens using your existing Braintree integration.

Tips for building a ChatGPT app

This guide does not tell you how to build a ChatGPT app. The following tips and resources, however, could help.

Step 1: Specify Braintree as your payment provider

When your ChatGPT app widget calls requestCheckout(), you must construct a checkout session that specifies Braintree as the payment provider according to the ACP Agentic Checkout Specification.

Widget calls requestCheckout()

For more information, see the Apps SDK Monetization Guide.

Step 2: Complete checkout and process payments

To complete checkout, your MCP server must expose a complete_checkout tool that receives the token and processes it.
Note: Use the payment method nonce exactly as you would use any payment method nonce in Braintree’s transaction.sale method or chargePaymentMethod GraphQL mutation.
The following example uses Python.
Note: The payment token in payment_data.token (for example, "tokencc_bf_abc123_456def_ghijkl_mno789_pqr") is a one-time-use token that you can process using your existing Braintree integration to complete the payment. In Braintree, this type of token is called a payment method nonce. It serves as a secure, single-use reference to the buyer’s payment information. It’s bound to your merchant ID and includes amount and time restrictions that you can configure.

Test your integration

To test Instant Checkout in a ChatGPT App, extend your MCP server to render a widget in the ChatGPT application by completing these steps.

1. Register a resource in your MCP server

This step depends on your implementation. For example, if you want your application to display a Buy Now product card when someone prompts ChatGPT with something like “I want to buy wireless headphones,” you would build a front-end application that reads ChatGPT’s input and renders the Buy Now product card. Then, you register that HTML as a resource for the complete_checkout tool in your MCP server, as shown in the following example.
Your widgetHTML variable references the result of reading an HTML file. This guide does not require you to use any specific coding language or framework. These choices are up to you or your selected integrator.

2. Register the tool to use the widget in your MCP server

After you register your tool, you must register the complete_checkout tool to use that resource. The following example is a tool that retrieves product information and returns it in the structuredContent field. ChatGPT attaches this response to window.openapi.toolOutput for your application to read and render.

3. Initiate checkout from your ChatGPT app

To initiate checkout from your ChatGPT app, call window.openai.requestCheckout, typically using a button. When ChatGPT initiates checkout, your server’s /checkout_sessions response must specify Braintree as the payment provider according to the ACP agentic checkout specification, as shown in the following example.
Note: OpenAI uses the merchant_id that you provide here in the allowance.merchant_id field when it requests delegated payment tokens.

4. Register your app in ChatGPT

After you host your MCP server with a publicly available URL, test your application in ChatGPT’s developer mode.
  1. Enable developer mode by navigating to ChatGPT → Settings → Apps → Advanced Settings, and use the toggle to turn on developer mode.
  2. Register your application by navigating to ChatGPT → Settings → Apps → Create App and entering your application URL.
Now you can go to the ChatGPT prompt screen, click the plus (+) symbol, select your application, and enter the prompt to display your widget.

Allowance validation

Braintree validates the following fields in the allowance when issuing a delegated payment token.

merchant_id

The merchant_id must match the Braintree public merchant ID that processes the transaction.

max_amount

The max_amount must be greater than or equal to the transaction amount.

currency

The currency on the transaction must match the configured currency for the transacting merchant.

expires_at

Track AI-initiated transactions

PayPal and Braintree provide the following ways to track AI-initiated transactions.

Transaction facilitator details

When you process a transaction with a delegated payment token, it includes the following fields in the transaction response.
For example, your transaction response might look similar to this one.

Search for AI-initiated transactions

You can search for transactions by AI platform using the Braintree Control Panel or API.

Braintree Control Panel

  • Navigate to the Braintree Control Panel.
  • Use the search filter for facilitator_details.oauth_application_name.
  • Select ChatGPT to view all ChatGPT-initiated transactions.

API