Search pages in the SMS Pay documentation.
SMS Pay is intent-first. Your backend creates a payment intent before the customer pays. The customer completes payment on hosted checkout, SMS Pay receives wallet SMS evidence, and your backend is notified by webhook.
Loading diagram...
Before integration, the merchant admin configures receiver accounts, API keys, webhook endpoints, and the Android device from the dashboard. Sandbox should be configured first.
Your backend calls SMS Pay with amount, retry idempotency key, optional merchantReference, and optional redirect URLs.
POST /v1/payments/intents
X-Api-Key: sk_test_xxxxxxxxxxxxxxxxx
SMS Pay returns a hosted checkoutUrl. Store the returned payment intent id with your order.
Checkout shows the customer:
Checkout redirects are customer experience only. They are not fulfillment proof.
The customer pays the exact amount to the receiver number shown on checkout. If the wallet app has a reference field, the customer enters the short checkout reference.
In live mode, the SMS Pay Android app runs on the merchant phone that receives provider SMS messages. It forwards trusted SMS evidence to SMS Pay. In sandbox, the dashboard SMS Simulator creates test SMS evidence instead.
SMS Pay compares SMS evidence with the pending payment intent. Exact evidence can mark the intent PAID; partial or risky evidence can move it to REVIEW_REQUIRED; expired intents become EXPIRED.
When status changes, SMS Pay sends a signed event such as payment.paid. Your backend verifies the signature, stores the webhook idempotently, and fulfills only after payment.paid.