Mobile top-up via AI agent: 140+ countries, one prompt
Add cartapi to Claude Desktop with one command. Prompt "top up +8618xxxxxxxx with about ¥50". The agent auto-detects the actual serving carrier (handling number portability), picks the right denomination, and returns a Stripe URL. You click, pay, done. 140+ countries live via Reloadly — strongest in China, India, Africa, LATAM, and SEA. Not supported: US carriers, most EU postpaid.
You're in San Francisco. Your mom's phone in Guangzhou has ¥3 of credit left. She won't figure out China Mobile's app; she barely tolerates WeChat. You could log into your Alipay, remember which email you used for the China Mobile account, get an SMS you can't receive on your US number, and spend twenty minutes.
Or, one prompt.
One prompt, one click
claude mcp add --transport http cartapi https://mcp.cartapi.io/mcp
Then:
using cartapi, top up +8618xxxxxxxx with about ¥50 of airtime.
The agent calls create_topup_checkout. That single tool does four things:
- Auto-detects the serving carrier from the phone number. Critical in China — number portability means "188" doesn't reliably tell you China Mobile vs Unicom vs Telecom.
- Picks the closest matching denomination for that carrier's plan structure.
- Creates a Stripe checkout session.
- Returns a URL.
You click. You pay in your local currency (Stripe handles FX). Reloadly delivers the top-up to the carrier. Mom's balance updates. She calls to ask why you never visit.
Where it works
Reloadly's operator network is cartapi's underlying source. As of August 2026 that's roughly 140+ countries. The strongest coverage clusters:
| Region | Coverage strength | Notes |
|---|---|---|
| China | Deep | China Mobile, Unicom, Telecom — auto-detected via portability lookup. |
| India | Deep | Airtel, Jio, Vi, BSNL. Data bundles + airtime. |
| Sub-Saharan Africa | Deep | MTN, Airtel Africa, Safaricom, Orange, Vodacom. The category's biggest market. |
| Latin America | Deep | Claro, Movistar, Tigo, Digicel, Vivo. |
| Southeast Asia | Good | Grameenphone, Globe, Smart, Viettel, Dtac, AIS, Telkomsel. |
| North Africa / Middle East | Partial | Egypt, Morocco, Jordan, UAE — coverage varies by carrier. |
| Eastern Europe | Partial | Ukraine, Georgia, and pockets of the Balkans. |
Ask the agent "what countries can cartapi top up?" and it calls list_topup_countries for the live list.
Where it doesn't work
Two big gaps that trip people up:
- US carriers. T-Mobile, Verizon, AT&T, and their MVNOs are not in Reloadly's catalog. The US market is postpaid-dominant, and prepaid top-up isn't the primary business model there. If you ask cartapi to top up a US number, the agent will politely say no.
- Most EU postpaid. Vodafone, O2, Orange, T-Mobile Deutschland — coverage is thin because these are mostly monthly-contract markets. Some prepaid brands in Germany, Spain, and Italy are supported; most aren't.
Rule of thumb: prepaid-heavy country = supported. Postpaid-heavy country = spotty.
The number portability problem, and why it matters
A Chinese mobile number that starts with 188 used to mean China Mobile. Since portability, it might now be China Unicom or Telecom. Same story in India (prefixes portable across Airtel/Jio/Vi), the UK, most of the EU.
If you top up assuming the wrong carrier, one of three things happens: the top-up fails outright, the top-up goes to the wrong account, or the denomination is invalid for that carrier's plan tiers.
Cartapi's create_topup_checkout calls a fresh operator lookup for every purchase, before the Stripe URL is even minted. The agent doesn't have to know or care; it just passes the number.
If you want to see it explicitly, ask:
using cartapi, detect the carrier for +8618xxxxxxxx before topping up.
That triggers detect_operator as a separate step. Useful for debugging or when a family member's carrier is unexpected.
Denominations, in practice
Every carrier has its own denomination structure. China Mobile might sell ¥10, ¥20, ¥30, ¥50, ¥100, ¥200 top-ups. Airtel India might sell ₹10, ₹20, ₹50, ₹100, ₹200 airtime plus specific data bundles (1GB/day for 28 days, etc.).
When you say "top up with about ¥50", cartapi picks the closest exact denomination the carrier sells. You'll usually get exactly ¥50; occasionally the closest option is ¥40 or ¥60 and the agent will tell you which it picked before you click.
For India-style data bundles, ask explicitly:
using cartapi, top up +9198xxxxxxxx with the 84-day 1.5GB/day Airtel plan.
Cartapi surfaces those as specific SKUs, not just airtime amounts.
What the receipt looks like
The buyer (you) gets a Stripe receipt via email — cartapi is merchant of record, so the statement descriptor says cartapi, not Reloadly or the carrier. Sales tax / VAT is included where applicable.
The recipient (the phone) gets whatever notification their carrier normally sends when a top-up posts — usually an SMS from the carrier confirming the new balance.
Prompts that work
using cartapi, top up +8618xxxxxxxx with about ¥50
using cartapi, top up +2348012345678 with $5 of MTN airtime
using cartapi, top up +9198xxxxxxxx with a 1-month Jio data bundle
using cartapi, which mobile top-up countries do you cover in Africa?
using cartapi, check the status of order ord_abc123
Try it right now with one line:
claude mcp add --transport http cartapi https://mcp.cartapi.io/mcp
Frequently asked questions
Can I top up a mobile phone in another country using an AI agent?
Yes. Cartapi's MCP endpoint exposes create_topup_checkout. Give the agent an E.164 phone number and an amount; it detects the carrier, picks a matching denomination, and returns a Stripe URL. 140+ countries supported.
Which countries can I top up with cartapi?
140+ via Reloadly. Strongest: China, India, most of Africa, most of Latin America, much of Southeast Asia. Not supported: US carriers and most European postpaid. Call list_topup_countries for the live list.
What happens with a ported phone number?
Cartapi runs a fresh operator lookup on every top-up. Portability means the prefix no longer identifies the carrier reliably; cartapi resolves the actual serving carrier before minting the checkout URL. The agent doesn't have to know.
How fast does the top-up arrive?
Seconds to a couple minutes typically. Reloadly's integrations are direct carrier APIs. If it hasn't landed in 5 minutes, ask the agent to call get_order_status for the current state.
What if the top-up fails?
Stripe automatically refunds if fulfillment fails — the money doesn't stay stuck at cartapi. Common failure modes: invalid number, carrier maintenance window, denomination the carrier stopped selling that morning. The agent's error message includes which.