FX Differences: EUR Invoice, PLN Payment, and Reconciliation
Paying a foreign-currency invoice from a PLN bank account creates FX differences. The bank's rate differs from the invoice's NBP rate. The difference is a taxable event. Here is how to handle it.
FX Differences: EUR Invoice, PLN Payment, and Reconciliation
When you issue an invoice in EUR and the buyer pays from a PLN bank account, the bank converts PLN to EUR at its own rate. That rate differs from the NBP rate on the invoice. The difference is a foreign exchange difference (różnica kursowa), and it is a taxable event.
How FX Differences Arise
The invoice records the transaction at the NBP rate from the last working day before the tax point. The payment settles at the bank's actual conversion rate on the payment date. Two rates, two dates, one transaction. The gap between them is the FX difference.
| Scenario | Invoice rate | Payment rate | Difference |
|---|---|---|---|
| EUR weakens between invoice and payment | 4.32 PLN/EUR | 4.28 PLN/EUR | Positive (gain for buyer) |
| EUR strengthens between invoice and payment | 4.32 PLN/EUR | 4.36 PLN/EUR | Negative (loss for buyer) |
How to Calculate
For the buyer (paying a PLN invoice amount from a PLN account to settle a EUR invoice):
- Invoice PLN value: Net EUR * NBP rate = PLN net. PLN net * VAT rate = PLN VAT. Total PLN = PLN net + PLN VAT.
- Payment PLN value: The bank debits the PLN account for the amount needed to purchase the EUR payment at the bank's rate. Payment PLN = EUR amount * bank rate.
- FX difference: Payment PLN minus invoice PLN. Positive = expense (loss). Negative = income (gain).
The FX difference is calculated on the net amount, not the gross. VAT is settled at the invoice rate. The difference affects the income statement as a financial result (przychód or koszt).
Fintech Accounts (Revolut, Wise, PayPal)
If the buyer holds a EUR account (e.g., Revolut, Wise) and pays in EUR, there is no conversion and no FX difference on the payment. The invoice rate and the payment rate are the same: 1:1 in EUR.
But the reconciliation still needs the NBP rate for PLN reporting. The buyer's accountant needs:
- The EUR invoice amount
- The NBP rate from the invoice (for PLN VAT reporting)
- The actual EUR payment confirmation (for bank reconciliation)
For fintech accounts that auto-convert, the statement shows the bank's conversion rate. Reconcile at the statement level, not the invoice level.
Reconciliation Procedure
- Match the payment to the invoice. Use the KSeF number (from January 2027, mandatory in transfer titles) or the invoice number.
- Compare the payment PLN to the invoice PLN. The difference is the FX difference.
- Book the FX difference. Positive difference (paid more than invoiced) = financial expense. Negative difference (paid less) = financial income.
- Post to the różnice kursowe account. The account tracks cumulative FX gains and losses for the tax period.
- Report in JPK_V7. FX differences are reported in the appropriate box depending on whether they are income or expense.
Common Mistakes
Ignoring FX differences on small amounts. A 50 PLN difference on a 5,000 EUR invoice seems trivial. Over a year of currency invoicing, accumulated unrecorded differences distort the income statement and create JPK mismatches.
Using the invoice rate for payment booking. The payment must be booked at the bank's actual rate. The invoice rate is for VAT reporting. Mixing them creates a reconciliation error.
Not reconciling fintech accounts. Revolut and Wise statements do not arrive in the same format as Polish bank statements. The accountant needs to pull the statement and reconcile manually if the accounting software does not integrate.
This material is information of a general nature and does not constitute legal or tax advice. For a specific situation, verify the current rules or consult a qualified adviser.