For US controllers and AP leads who pay overseas suppliers and want each payment to match the bank, bill and ledger.
Last reviewed: 31 October 2026. Product details reflect this review date. Availability and behavior can vary by account, role and release.
NetSuite international payment processing lets a US company enter a bill in the supplier's currency and pay it through a bank file from a USD account. The bill keeps the rate on the bill date, and you enter the bank's rate on the payment. NetSuite posts the gap as a realized gain or loss automatically.
International payment processing is the work of paying a supplier in another country, usually in that supplier's currency, and keeping the books right in US dollars. It covers the supplier's currency and bank details, the bill, the payment, the file you send to your bank, the approval before it goes and the exchange difference afterwards.
In NetSuite this runs on three pieces you may already have. The Multiple Currencies feature lets a vendor bill carry euros, pounds or any other currency. The Electronic Bank Payments SuiteApp builds the payment file your bank accepts. The general ledger posts the realized gain or loss when the payment is applied to the bill.
Many US companies start by keying international wires straight into the bank portal and recording them in NetSuite later. That works for a handful of payments a year. Once overseas suppliers become regular, the bank portal and NetSuite drift apart, and someone spends month end matching them by hand. Running the payment from NetSuite keeps one record of what was paid, at what rate and who approved it.
To make this concrete, take a hypothetical Ohio distributor. Its NetSuite base currency is USD. It buys pumps from a German manufacturer that invoices in euros on net 30 terms. In September, the distributor receives two bills.
| Bill | Bill date | Amount | NetSuite rate (USD per EUR) | Value in USD |
|---|---|---|---|---|
| Bill 1 | 2 September | EUR 48,000.00 | 1.0800 | USD 51,840.00 |
| Bill 2 | 18 September | EUR 12,000.00 | 1.0950 | USD 13,140.00 |
| Total | EUR 60,000.00 | USD 64,980.00 |
On 2 October, the AP lead pays both bills in one international wire. Bill 2 is not due until 18 October, but one wire saves a second bank fee. The bank quotes 1.1000 USD per EUR for the transfer and charges a USD 45.00 outgoing wire fee. NetSuite's own daily rate for that date is 1.0985.
The rest of this post follows these two bills from setup to the bank statement. The numbers are invented for the example, but they add up, so you can test the same steps in your sandbox.
Setup happens once per supplier. Most of it sits on the vendor record and the bank details record that the Electronic Bank Payments SuiteApp adds.
Steps 5 and 6 matter most. A wrong IBAN is one of the hardest AP errors to undo, because an international wire can take days to trace and recover. Make bank detail changes a controlled request, with System Notes showing who changed what and when.
When AP enters Bill 1, they pick the vendor, the currency defaults to EUR and the Exchange Rate field fills from NetSuite's rate for 2 September: 1.0800. The bill posts EUR 48,000.00 to accounts payable, which is USD 51,840.00 in the ledger. Bill 2 posts the same way at 1.0950.
On 2 October, the payment goes out at the bank's rate of 1.1000. EUR 60,000.00 now costs USD 66,000.00. The ledger carried the two bills at USD 64,980.00. The USD 1,020.00 gap is a realized exchange loss: the dollar weakened between the bill dates and the payment date, so the same euros cost more.
NetSuite calculates this per bill with a simple formula: the payment rate minus the bill rate, multiplied by the amount paid in euros.
| Bill | Bill rate | Payment rate | Euros paid | Realized gain or loss |
|---|---|---|---|---|
| Bill 1 | 1.0800 | 1.1000 | EUR 48,000.00 | USD 960.00 loss |
| Bill 2 | 1.0950 | 1.1000 | EUR 12,000.00 | USD 60.00 loss |
| Total | EUR 60,000.00 | USD 1,020.00 loss |
The loss posts to the Realized Gain/Loss account by default. If your company uses Foreign Currency Variance Mapping, you can send these amounts to other accounts, for example by subsidiary or by type of transaction. The Realized Exchange Rate Gains and Losses report then lists each bill, the payment, both rates and the result, which gives your auditor one place to look.
Bills that are still open at month end are a separate matter. NetSuite revalues open foreign currency balances when you run the period end revaluation, and that unrealized amount is not the same as the realized amount above. Our post on foreign currency settlement in NetSuite explains how the two fit together when bills are paid across a period end.
With Electronic Bank Payments, AP doesn't key the wire into the bank portal. NetSuite builds a payment file that the bank imports. For international payments, that file uses a format with the multi currency option turned on, attached to a company bank account in your base currency. Oracle's documentation notes that international transfer formats need the advanced Electronic Bank Payments license, so confirm which license you hold before you design the process.
Here is the run for our two bills:
Step 5 is the one teams miss. If the payment uses NetSuite's 1.0985, it posts USD 65,910.00, while the bank takes USD 66,000.00. That leaves a USD 90.00 difference sitting in the bank reconciliation, and someone has to chase it at month end. Entering the bank's rate makes the payment match the bank debit to the cent.
Approval belongs before the file reaches the bank. Electronic Bank Payments has its own approval routing for payment batches, with approvers and limits set on the company bank record.
Some accounts already use the Vendor Payments approval routing preference in Accounting Preferences. In that case manual Bill Payment Processing is blocked, so use EFT Payment Batch Approval Routing for these runs instead. Either way, the person who approves the batch should not be the person who edited the supplier's bank details.
The bank statement for 2 October shows two debits: USD 66,000.00 for the wire and USD 45.00 for the fee. Keep them apart in NetSuite too. The supplier payment should equal the bill amounts in euros, and the fee is your cost of using the bank, not part of what you owe the supplier.
The cleanest place to record the fee is the bank reconciliation. On the Match Bank Data page, select the imported fee line, add a journal entry that debits bank charges and credits the operating account, then match the two. If the same fee appears on every international wire, an auto create rule can create and match that journal for you on future statements.
After that, the October bank reconciliation has three clean lines for this payment:
| Bank statement line | NetSuite record | Amount |
|---|---|---|
| International wire to German supplier | Bill payment for Bill 1 and Bill 2 at 1.1000 | USD 66,000.00 |
| Outgoing wire fee | Journal to bank charges | USD 45.00 |
| Exchange difference | Realized loss posted with the payment | USD 1,020.00 (no bank line) |
The realized loss has no line of its own on the bank statement. It sits inside the USD 66,000.00, which is why the bank rate on the payment matters so much. Our payment run checklist covers the checks to run on any batch before the file leaves NetSuite.
At CuriousRubik, we see international payments set up in one of two ways. Some teams add them during a new implementation. Others fix a live account where wires are still keyed into the bank portal.
The work is similar either way. It touches finance, AP, treasury and the bank, so it helps to agree the scope before anyone builds a format.
| Work item | What gets decided or built | Usual owner |
|---|---|---|
| Currencies and rates | Which currencies, which rate source, who updates rates on days the feed misses | Controller |
| Vendor and bank data | Primary currency, bank details fields, change control and callback check | AP lead with an independent reviewer |
| Payment format | Bank's international file format, multi currency option, field validation for IBAN and BIC | NetSuite administrator with the bank |
| Approval | Batch approval routing, approver limits, separation from bank detail edits | Controller and CFO |
| Accounting | Realized gain or loss accounts, variance mapping, bank fee account and auto create rules | Controller |
| Testing | A test file accepted by the bank, a small live payment, a full month end reconciliation | AP lead and the bank's implementation contact |
Your bank's onboarding team usually needs a test file before it accepts live ones, and that review often takes longer than the NetSuite setup. Start that conversation early. Our post on Electronic Bank Payments setup requirements lists what to collect from the bank first.
The next step is small. Pick your three most frequent foreign currency suppliers and check their vendor records and bank details against the list above. Then run one payment through Bill Payment Processing in your sandbox, with the bank's rate on the Exchange Rates subtab. If the sandbox payment, the realized loss and a test bank line all reconcile, you are ready to talk to the bank about a live file.
If you are tightening the purchase side as well, our order collaboration checklist covers the steps from purchase order to matched bill.
CuriousRubik's NetSuite finance and payments integration team can set up the vendor data, payment formats, approvals and reconciliation rules for your international suppliers and test them with your bank. You can also read how we work with NetSuite customers in the United States.
What to gather from your bank and your team before you build payment files.
How NetSuite settles foreign currency balances and where revaluation fits.
The checks to run on every payment batch before the file goes to the bank.