ChatGPT App Pattern

Mobile money deposits inside the chat flow.

This starter app keeps pawaPay merchants in SQLite, encrypts each merchant token, and exposes a payment sheet that can be launched from a ChatGPT tool call or used directly in the browser.

What is implemented

The conversation can collect intent like “Pay 100 KES to Merchant A”, then call a tool route that returns structured state and a component URL. The sheet asks only for missing fields before posting a deposit to pawaPay.

Open the standalone component at /pay or wire the MCP server in mcp/server.ts to your ChatGPT app registration. Merchant setup lives in /admin.

3 merchants configuredGoogle-authenticated admin console

Current merchants

Demo

Country chosen at payment time · Currency derived from country · Provider entered at payment time

Merchant A

KEN · KES · MPESA

Merchant B

UGA · UGX · MTN_MOMO_UGANDA

Deposit flow

When a merchant is selected, the sheet loads allowed deposit countries, currencies and providers from pawaPay active configuration. MSISDN entry then triggers provider prediction.

Currency: Provider: Select a countryDecimals: 2

Merchant directory

Merchants are configured in the Google-authenticated backend console. The payment flow only consumes their display names and any optional defaults.

Demo

Country chosen in payment · Currency from active configuration · Provider from active configuration

Merchant A

KEN · KES · MPESA

Merchant B

UGA · UGX · MTN_MOMO_UGANDA

Conversation state

Merchant: MissingCountry: MissingAmount: MissingMSISDN: Missing
Awaiting submissionOpen the sheet from ChatGPT, fill the missing fields, then submit the deposit.