Payment Methods
All payment methods supported by Xtopay and their availability by country.
Supported methods
Cards
Visa and Mastercard debit and credit cards. Supports 3DS2 authentication automatically.
Available in: All countries where Xtopay operates
// No extra parameters needed — cards are available by default
const payment = await xtopay.payments.create({
amount: 5000,
currency: "GHS",
customer: { email: "ama@example.com" },
});Mobile Money
Push-to-pay via mobile money networks. The customer receives a prompt on their phone and approves the payment with their PIN.
Availability by country and network:
| Country | Networks |
|---|---|
| Ghana | MTN MoMo, Vodafone Cash, AirtelTigo Money |
| Uganda | MTN MoMo, Airtel Money |
| Tanzania | M-Pesa, Tigo Pesa, Airtel Money |
| Rwanda | MTN MoMo, Airtel Money |
| Kenya | M-Pesa |
const payment = await xtopay.payments.create({
amount: 5000,
currency: "GHS",
customer: {
email: "ama@example.com",
phone: "+233244000000", // required for mobile money
},
checkout: {
preferred_method: "mobile_money",
},
});Bank Transfer
The customer transfers from their bank account to a dynamically generated virtual account number. Xtopay confirms the transfer in real time via direct bank integration.
Available in: Nigeria, Ghana, Kenya, South Africa
const payment = await xtopay.payments.create({
amount: 50000,
currency: "NGN",
customer: { email: "chidi@example.com" },
checkout: {
preferred_method: "bank_transfer",
bank_transfer: {
expires_in: 1800, // seconds — default 30 minutes
},
},
});USSD
Unstructured Supplementary Service Data — works on any phone, no internet required. The customer dials a USSD code shown on the checkout page, enters their PIN, and payment is confirmed.
Available in: Nigeria, Ghana
const payment = await xtopay.payments.create({
amount: 2000,
currency: "NGN",
customer: { phone: "+2348012345678" },
checkout: {
preferred_method: "ussd",
},
});Method availability matrix
| Method | GHS | NGN | KES | UGX | ZAR | USD |
|---|---|---|---|---|---|---|
| Card | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Mobile Money | ✓ | — | ✓ | ✓ | — | — |
| Bank Transfer | ✓ | ✓ | ✓ | — | ✓ | — |
| USSD | ✓ | ✓ | — | — | — | — |
Restricting methods
By default, Xtopay shows all available methods for the customer's currency. You can restrict to specific methods:
checkout: {
allowed_methods: ["card", "mobile_money"],
}