Billing overseas customers: currencies and gateways
What a software business can offer a customer abroad today: the currency its invoice is in, which gateway takes which currency, and how payment is booked.
By Achekam · · 5 min read · For Software (SaaS) businesses in South Africa, Nigeria, Kenya
Your first customer in London, Dubai or Toronto has signed. Their finance team now asks two questions: can you bill us in dollars, and can we pay by card? For a young software company in Johannesburg, Lagos or Nairobi, the honest answer depends on two separate things: the currency your invoice is written in, and the currencies your payment gateway will settle.
It pays to get this straight before the first invoice goes out. A customer who is sent a pay link that refuses their payment, or an invoice in a currency nobody agreed, tends to pay late.
This article sets out what Achekam does today, where its limits are, and what to agree with your accountant.
The limit today: your invoices are in your own currency
Neither of Achekam's invoice forms lets a business choose another currency for an invoice. A South African business invoices in rand, a Nigerian business in naira and a Kenyan business in shillings. There is no dollar, euro or pound invoice.
That has a practical consequence for your order forms. If you quote an overseas customer a monthly fee in dollars, someone has to turn that into your own currency before the invoice is raised, and the customer needs to know that the invoice will show your currency. Write the conversion rule into the order form: which rate, taken on which date, and who carries the difference if the rate moves before payment.
What a foreign customer sees on the pay page
Once an invoice is issued, you can create a payment link for it, copy it, or e-mail it with the invoice. The customer pays on a public page that shows your business's name and branding. There is no link for a draft or a voided invoice. A link lasts 14 days by default, and an administrator can set a different life for it.
The page asks for the invoice amount, in the invoice's currency. When a gateway reports a payment, Achekam checks the amount against what the link asked for. So a customer abroad paying a rand invoice by card is charged a rand amount; converting it from their own currency is between them and their card issuer.
The pay page can also show your bank details and a payment reference for customers who prefer a bank transfer. Each bank account you list takes one currency.
Gateways and the currencies each one takes
Achekam refuses a gateway that does not settle the invoice's currency, whatever the grouping on the settings screen suggests. This table shows the currencies each gateway takes on invoices:
| Gateway | Currencies it takes |
|---|---|
| Stripe Checkout | ZAR, USD, EUR, GBP |
| Peach Payments hosted checkout | ZAR, USD, EUR, KES, MUR |
| Paystack | NGN, KES, GHS, ZAR, USD |
| Flutterwave | ZAR, NGN, KES, GHS, USD |
Read it against your own invoice currency:
- A rand invoice can go through Stripe, Peach, Paystack or Flutterwave, which is useful when the customer wants to pay by international card.
- A naira invoice can be paid online through Paystack or Flutterwave, or by bank transfer.
- A shilling invoice can be paid through M-Pesa, Pesapal, Paystack, Flutterwave, Peach or bank transfer.
Whether a particular foreign card is accepted is decided by your gateway account, not by Achekam. Ask your provider before you promise a customer that their card will work.
Your own account, your own keys
Every gateway runs on the business's own merchant account. A workspace administrator enters the gateway credentials in Settings under Payment Gateways & Checkout and can test the connection with a real call to the gateway. Other users can see the settings but not save them. For Paystack, you also paste the notification address Achekam gives you into your Paystack dashboard.
How the payment is recorded and cleared
A payment is not recorded because a customer says they paid. Gateway reports are checked first, for example:
- Stripe notifications are accepted only when their signature is valid and recent.
- Paystack payments are confirmed with Paystack before they are recorded.
- Flutterwave payments are re-verified with Flutterwave before they are recorded.
A verified payment becomes a receipt against the invoice. The journal debits that gateway's clearing account and credits trade receivables, and the invoice shows as paid or part-paid. If the gateway repeats its notification, the invoice is not paid twice.
The clearing account then waits for the gateway's payout to reach your bank. Payouts are recorded against that gateway's clearing account with the gateway's fees, by hand or, for Paystack and Flutterwave, from their own payout lists. When you import the bank statement, the payout arrives as a bank line, and a person accepts the suggested match before anything posts.
Bank transfers work differently. There is no notification, so a staff member marks the invoice paid once the money shows on the bank statement. An international transfer may arrive short because of bank charges, so record what actually arrived.
Refunds are also by hand: a refund of an online invoice payment is made in the gateway's own dashboard and then recorded in Achekam by a person.
Questions to settle with your accountant
Before you sign more customers abroad, settle these with whoever keeps your books:
- Currency in the contract. If the order form is priced in dollars but the invoice is in your currency, how is the rate chosen and recorded?
- VAT on exported services. Whether a sale of software to a customer abroad carries VAT depends on your country's law and on the facts of the sale. Get a ruling for your situation rather than copying another company's invoices.
- Gateway clearing accounts. Who reconciles each one, and how often.
- Fees and exchange differences. Where they are posted, and who checks them each month. The IFRS Foundation's summary of IAS 21 The Effects of Changes in Foreign Exchange Rates explains how foreign currency transactions are accounted for.
- Credits and downgrades. How a customer who cuts seats mid-term is credited; see credit notes when a customer reduces seats.
If you are still keeping invoices in a spreadsheet, it is worth moving the books into a ledger before the volume grows. And if your order forms need an internal sign-off before the customer sees them, read order forms: internal approval, then the customer signs.
The practical next step is short: check which gateway settles your invoice currency and accepts the cards your overseas customers use, set it up under your own account, and send yourself a small test invoice before the first real one goes out.
General guidance only, not advice on your own circumstances. Tax and payroll rules change: check the current position with the authority or your adviser.