Introduction
title: "How to Manage International Payments in Zoho Books (2026 Guide)"
meta_title: "Manage International Payments in Zoho Books | Xflow"
meta_description: "Enable multi-currency, record foreign-currency invoices, handle realised and unrealised forex gains, and actually receive USD to INR inside Zoho Books with Xflow."
url: /blog/manage-international-payments-with-xflow-and-zoho-books
reading_time: 9 min
slug: manage-international-payments-with-xflow-and-zoho-books
How do I manage international payments in Zoho Books?
To manage international payments in Zoho Books, enable multi-currency in Settings, assign each foreign client their billing currency, then record the invoice and payment in that currency so Zoho tracks the exchange rate and posts the realised or unrealised forex gain or loss automatically.
One point most guides skip: Zoho Books records the payment, it does not receive it. The dollars still have to land somewhere first. Pair Zoho with an Xflow receiving account and you get real USD in via ACH, Fedwire, RTP or SWIFT, convert to INR at a transparent rate, and sync the whole thing back into Zoho with the compliance document attached.
This guide covers the full workflow: multi-currency setup, recording foreign invoices and payments, realised versus unrealised forex gains with a worked INR example, reconciliation, the FIRA question, and where Xflow closes the gap.
Manage international payments in Zoho Books at a glance
- Enable multi-currency: Settings > Currencies, then Settings > Preferences > Customers and Vendors to switch it on per contact. Multi-currency sits on the Elite and Ultimate plans.
- Base currency is permanent: Your organisation base currency (INR for most Indian exporters) cannot be changed later, so set it once, carefully.
- Record, do not assume receipt: Zoho logs the invoice and the payment. The money arrives through a bank or a receiving rail, not through Zoho.
- Forex is automatic: Zoho posts realised gain or loss on payment and unrealised gain or loss at period-end into a default Exchange Gain or Loss account.
- The missing half: A receiving account (Xflow) gives you a real USD account number, converts to INR transparently, auto-reconciles the payout in Zoho, and issues your e-FIRA.
Step 1: Enable multi-currency in Zoho Books
Go to Settings > Currencies and add every currency you invoice in (USD, GBP, EUR, AED and so on). Then open Settings > Preferences > Customers and Vendors and enable multi-currency transactions so you can assign a currency to each contact.
Two things to get right before you send a single invoice:
- Set your base currency once. For an Indian service exporter this is almost always INR. Zoho does not let you reverse it, and every report keys off it.
- Decide your exchange-rate source. Zoho can auto-fetch rates or let you enter them manually. Manual entry matters when your bank or receiving provider gives you a different landed rate than the market mid-rate.
Step 2: Raise a foreign-currency invoice
Assign the client their currency on their contact profile, then create the invoice as normal. Zoho displays the invoice to the client in their currency (say USD) and converts the line items into your base currency (INR) for your books using the rate on the invoice date.
For a US or EU client billed in USD, that means the client sees a clean USD invoice while your ledgers stay in INR. If you bill a related party, the same flow applies, but keep your transfer-pricing documentation aligned with the invoice currency and rate.
Step 3: Record the foreign-currency payment
When the money arrives, open the invoice, click Record Payment, and enter the amount, date and the exchange rate that actually applied. Zoho computes the difference between the invoice-date rate and the payment-date rate and posts it as a realised exchange gain or loss.
This is the step where the "record versus receive" gap bites. If your client wired USD and your bank credited you INR at its own rate, the number Zoho expects and the number your bank statement shows will not match, and you end up adjusting the base-currency equivalent by hand.
Realised vs unrealised forex gain: A worked INR example
This is the part every ranking guide defines but none actually work out. Here it is with numbers.
| Event | Rate (USD to INR) | Book value | Gain / loss |
|---|---|---|---|
| Invoice raised for USD 1,000 on 1 June | 83.10 | ₹83,100 | - |
| Payment received on 20 June | 83.60 | ₹83,600 | Realised gain ₹500 |
| Open USD 1,000 invoice still unpaid at 30 June | 83.40 | revalued to ₹83,400 | Unrealised gain ₹300 |
- Realised gain or loss happens when cash actually changes hands at a new rate. Zoho posts the ₹500 to the Exchange Gain or Loss account on the payment date.
- Unrealised gain or loss is a paper movement on an invoice that is still open. Zoho revalues it at period-end and reverses it once the invoice is settled.
If the landed rate on your receiving account is transparent and fixed at conversion, your realised figure is predictable. If it is buried inside a bank spread, it is not, and your books drift from reality.
Reconciliation: Where Zoho users actually get stuck
Search the Zoho community and the same pain repeats: a user raises a USD invoice, receives an INR bank credit, and cannot match the imported bank statement because the amounts and rates disagree. Zoho's own guidance is to manually adjust the base-currency equivalent to the current rate. That is fine for one invoice a month and painful at scale.
An Xflow receiving payout syncs into Zoho already matched: the USD received, the rate applied, and the INR settled are one consistent record, so there is no manual base-currency adjustment to chase.
Zoho Books records the payment, it does not receive it
This is the distinction that decides your whole setup. Your options for actually getting paid differ in one critical way, the currency you receive:
| Option | What you receive | Forex transparency | Best for |
|---|---|---|---|
| Zoho Payments | INR, domestic rails only | N/A (no cross-border) | Domestic Indian customers |
| A card gateway settling in INR | INR (converted by the gateway) | Low, spread is baked in | Small card-based collections |
| Bank SWIFT wire | USD to your bank, then bank-converted | Low to medium, bank spread | Occasional large transfers |
| Xflow receiving account | Real USD via ACH, Fedwire, RTP, SWIFT | High, transparent conversion to INR | Recurring exporter and freelancer income |
If you receive foreign payments settled straight into INR, you never see the true USD and the forex margin is invisible. Receiving real USD first and converting transparently is what keeps the realised-gain number in your Zoho books honest.
Do you still get your FIRA?
Recording a payment in Zoho does not generate your Foreign Inward Remittance Advice. The FIRA (and e-FIRC or e-BRC where applicable) is your proof of export earnings for FEMA, GST refunds on zero-rated supply, and your bank. Zoho tracks the money in your ledger; it does not issue the compliance document.
Xflow auto-issues the e-FIRA for every receipt and surfaces it alongside the synced payout, so the document you need for your GST refund and your CA is generated automatically rather than requested from a bank weeks later.
{{CALLOUT: An Xflow virtual receiving account gives Indian exporters and freelancers a real USD account number, transparent USD to INR conversion, one-click Zoho sync, auto-reconciliation, and an automatic e-FIRA on every payment.}}
How to connect Xflow to Zoho Books
- Create your Xflow account: Sign up, complete KYC, and generate your live-mode developer key.
- Check eligibility: Confirm your business is India-based, your client countries are supported, and USD to INR is enabled.
- Install from the Zoho Marketplace: Add the Xflow for Zoho Books extension and authorise the connection with your developer key.
Once connected, your Xflow virtual bank details auto-populate on foreign invoices, payouts sync back into Zoho, receipts reconcile automatically, and each e-FIRA is attached to its payment.
Which payment gateway is best for Zoho Books international payments?
The "best gateway" question has no single answer because the products are not the same thing. Domestic gateways collect INR from Indian cards and UPI. Card gateways that advertise international acceptance still settle the money to you in INR after taking the conversion inside their spread. A receiving account gives you a real foreign-currency account number so the USD arrives as USD before you decide when to convert.
For a recurring service exporter, the deciding factors are usually four:
- Settlement currency: Do you receive real USD, or INR that has already been converted for you? Receiving USD keeps the FX margin visible and your realised-gain figure accurate.
- Total cost: A headline "zero forex markup" means little if the rate applied is a wide mid-market spread. Compare the landed INR on a test amount, not the advertised percentage.
- Compliance output: You need an e-FIRA or e-FIRC for FEMA and for GST refunds on zero-rated exports. Some rails issue it automatically, some leave you to request it from a bank.
- Zoho fit: Whether payouts sync back into Zoho already reconciled, or you re-key them by hand.
A gateway that settles in INR is fine for occasional card collections. For repeat USD income from US and EU clients, a receiving account that lands real USD, converts transparently, syncs into Zoho and issues the FIRA is the setup that scales without manual cleanup.
Accounting for export invoices and GST in Zoho Books
For an Indian service exporter, the invoice is only half the record. Export of services is a zero-rated supply under GST, which means you can either export under a Letter of Undertaking without paying IGST, or pay IGST and claim a refund. Either way, the accounting in Zoho has to line up with the compliance trail.
Set up the client with the correct place of supply and a zero-rated tax treatment on the invoice so Zoho reports the supply correctly in your GST returns. Keep the invoice currency, the rate used, and the received amount consistent across the invoice, the payment record, and the FIRA, because a mismatch between the value you declared and the value you actually realised is exactly what triggers questions during a GST refund or a bank scrutiny.
This is where recording and receiving have to agree. If Zoho shows one INR figure from a manual rate and your realised receipt shows another, your zero-rated export value and your refund claim drift apart. Receiving through a rail that reports the exact converted amount, and syncing that figure into Zoho, keeps the declared value and the realised value identical.
A freelancer's Zoho Books workflow for foreign income
Freelancers do not need the full exporter setup, but the same four steps still apply, just lighter. Enable multi-currency, add a USD contact for each foreign client, raise USD invoices, and record each receipt at the rate that actually applied.
The two things that trip freelancers up are rate anxiety and tax proof. Rate anxiety comes from watching the INR you receive change between the day you invoiced and the day you got paid; that difference is your realised forex gain or loss, and it is normal. Tax proof comes at ITR time, when you need to show foreign income and, if you want a GST refund or clean FEMA records, the FIRA that a bank credit alone does not give you.
Recording foreign income in Zoho gives you the ledger for your ITR. It does not give you the receiving account number that lets clients pay you in USD, nor the compliance document. Pairing Zoho with an Xflow receiving account covers both, so the same payment that lands in USD also arrives in your books reconciled and with its e-FIRA attached.
Common mistakes when managing international payments in Zoho Books
- Setting the wrong base currency: It cannot be reversed. For an Indian business it should be INR before you create anything.
- Assuming Zoho received the money: Zoho records the receipt; a bank or a receiving rail moves it. Treating a recorded payment as a landed one is how reconciliation breaks.
- Using the market mid-rate instead of the landed rate: Record the rate you actually got, or your realised gain and your bank statement will never agree.
- Ignoring unrealised gains at period-end: Open foreign invoices need revaluing, or your reported position is stale.
- Forgetting the FIRA: Recording the payment does not generate your export compliance document. Confirm your rail issues it.
{{STRONG_CTA: Ready to actually receive USD to INR inside Zoho Books? Open an Xflow receiving account and get transparent conversion, one-click sync, and automatic e-FIRAs.}}
Frequently asked questions
Zoho Payments handles domestic Indian collections. To receive genuine cross-border USD you need a receiving rail such as an Xflow virtual account, which lands USD via ACH, Fedwire, RTP or SWIFT and converts to INR.
Enable multi-currency, assign the client their currency, raise the invoice in that currency, then click Record Payment with the actual rate. Zoho converts to your base currency and posts the exchange gain or loss automatically.
FCY is the foreign currency of the transaction (for example USD). BCY is your base currency (for example INR). Zoho stores both so your reports stay in BCY while the client sees FCY.
Set the client's currency to USD on their contact profile, then create the invoice. Zoho shows the client USD and records the INR equivalent for your books.
Zoho records the receipt but does not receive the money. Connect an Xflow receiving account to get real USD in, convert to INR transparently, and sync the reconciled payment back into Zoho.
Yes. Xflow is a licensed payments entity in India and Canada and is registered as an MSB in the US.