Amba

Payments

Accept payments from your app's users with Amba as the rail — your app is the seller, Amba takes a configurable platform fee, and the money settles to your own account.

Amba Payments lets your app collect money from its users. Your app is the seller; Amba is the platform that takes a small, configurable fee on each payment; the money settles to your own connected account. You stay the merchant of record for your sales — Amba never holds your funds.

The flow is two parts:

  1. Onboarding (developer, one time) — create your connected account and complete a hosted setup link. This collects your business + bank details directly; Amba never sees identity documents.
  2. Charging (runtime) — your backend creates a payment for an order and gets back a client secret; your app completes the payment on-device with the standard payment sheet, using that client secret.

Payments availability is enabled per platform. If a call reports that payments aren't enabled yet, run amba payments status — the platform owner finishes enabling it before live payments flow.

Onboarding

Create the account and get a hosted setup link in one command:

amba payments setup --country US

This prints your account status and a setup URL — open it to finish (business details + bank account). Status updates automatically when setup completes.

Agents can do the same with two MCP tools:

  • amba_payments_account_create — create the connected account.
  • amba_payments_create_onboarding_link — get the hosted setup URL (surface it to the human as a copy box).

Check progress any time:

amba payments status
{
  "connected_account": {
    "onboarding_status": "active",
    "charges_enabled": true,
    "payouts_enabled": true,
    "default_platform_fee_bps": 250
  }
}

charges_enabled must be true before you can take a payment.

The platform fee

Set a default fee taken on every payment, in basis points (250 = 2.5%):

amba payments set-fee 250

Pass off to clear the default (each charge must then specify its own fee). A per-charge fee always overrides the default.

Taking a payment

Create the payment from your backend (server key) so the amount and fee are never set by the client:

POST /v1/client/payments/intents
X-Api-Key: <your server key>

{ "amount": 1999, "currency": "usd", "client_reference": "order_123" }

amount is in the smallest currency unit (cents). The response carries a client_secret:

{ "data": { "payment_id": "...", "client_secret": "...", "status": "requires_payment_method" } }

Pass the client_secret to your app and complete the payment on-device with the platform's standard payment sheet — the client_secret is accepted by any Stripe-compatible mobile/web payment SDK (e.g. the native payment sheet on iOS and Android, or Stripe.js on the web). Amba does not ship its own confirm method; you drive the standard payment UI with the secret. Read a payment's status with GET /v1/client/payments/intents/:id.

Creating a payment requires a server key, never a client key — the amount and fee are money-moving inputs and must originate from your backend.

Balance & payouts

See what you've earned and what's been paid out to your bank:

amba payments balance
amba payments payouts --limit 10

Or via MCP: amba_payments_balance, amba_payments_payouts.

Reference

ActionCLIMCP tool
Create accountamba payments setupamba_payments_account_create
Hosted setup linkamba payments setupamba_payments_create_onboarding_link
Account statusamba payments statusamba_payments_account_status
Default feeamba payments set-fee <bps>amba_payments_set_fee
Create payment— (server-side API)amba_payments_charge
Balanceamba payments balanceamba_payments_balance
Payoutsamba payments payoutsamba_payments_payouts

Developer-side routes mount under /v1/admin/projects/:projectId/payments/* and require developer credentials (a PAT or console session) — payments configuration is an owner action.

On this page