TL;DR

N26’s CSV gives you two amount columns (EUR + foreign currency for FX transactions) and two reference fields (Payment Reference from the sender, Transaction ID internal). Match on Amount (EUR) ↔ Xero Total (for EUR invoices), use Payment Reference for the primary reference match, and fall back to counterparty IBAN when names are missing.

What breaks when reconciling N26 with Xero

Three things that have caught me out:

The two amount columns. N26 separates Amount (EUR) and Amount (Foreign Currency). For domestic SEPA inflows, only Amount (EUR) is populated. For inbound non-EUR transfers (rare, since N26 is EUR-native), both are populated and you should match against Amount (EUR) since that’s what hits your account.

Payment Reference vs Transaction ID. Transaction ID is N26’s internal identifier — useless for matching to invoices. Payment Reference is the SEPA-standard “Unstructured Remittance Information” field, which is what the sender typed when initiating the transfer. Use Payment Reference for matching against Xero Reference and InvoiceNumber.

Missing counterparty names. N26’s CSV sometimes shows the Payee field as the counterparty IBAN instead of a readable name — particularly for first-time payers or for payers whose bank doesn’t transmit a clean name. The IBAN itself can be used to look up the counterparty if you keep a separate mapping table; otherwise you need to fall back to amount + reference.

Export the N26 statement

  1. N26 web app → Transactions → date range (top filter).
  2. Export icon (top-right) → CSV. (PDF and MT940 are also options; CSV for our use.)
  3. File saves as n26-csv-transactions.csv, UTF-8, comma-delimited.

Columns: Booking Date, Value Date, Partner Name, Partner Iban, Type, Payment Reference, Account Name, Amount (EUR), Original Amount, Original Currency, Exchange Rate.

For inflows, Amount (EUR) > 0. Type values: Income, Direct Debit, Bank Transfer, Mastercard Payment, RefundIncome and Bank Transfer are the two you’ll see for invoice payments.

Booking Date is when N26 recorded the transaction; Value Date is when the funds became available. Usually same-day for SEPA, sometimes +1 for non-SEPA inbound.

Export the Xero invoice list

Same as the Wise + Xero / BofA + Xero guides: Business → Invoices → filter → Export → CSV.

For this combo specifically: if your Xero contacts include German/French/Italian companies, the ContactName may include umlauts, accents, or special characters. Make sure your CSV is read as UTF-8 — Excel sometimes mis-reads it as Windows-1252.

Status filter: keep AUTHORISED and PAID for the reconciliation universe; drop DRAFT, VOIDED, DELETED.

Match algorithm cheats for this combo

  1. Reference exact match first. If N26 Payment Reference and Xero InvoiceNumber are both populated, attempt a case-insensitive exact match. Then try against Xero Reference (some teams use Reference for the customer PO number, which clients echo in the SEPA reference).
  2. Amount + name fuzzy. Match N26 Amount (EUR) against Xero Total (for EUR invoices) exactly. Then fuzzy-match N26 Partner Name against Xero ContactName. Strip German legal suffixes: GmbH, GmbH & Co. KG, AG, UG, e.K., e.V.. Strip French: SARL, SAS, SA, EURL. Strip Italian: Srl, SpA.
  3. IBAN-based lookup. When Partner Name is the IBAN itself (or otherwise non-name-like), use the IBAN as the join key. Maintain a iban → customer_id mapping for repeat payers — many invoicing tools don’t expose this in their default export.
  4. Foreign currency fallback. If a Xero invoice is denominated in a non-EUR currency (USD, GBP), and N26 received the EUR-converted amount, match by: expected EUR ≈ Xero.Total × ExchangeRate with a 3% tolerance for FX spreads. Use N26 Exchange Rate if populated for the transaction.
  5. Same-day grouping. For business clients paying multiple invoices on the same day, N26 sometimes consolidates into one SEPA bulk transfer with a concatenated reference ("INV-101 INV-102 INV-103"). Tokenize the reference and try sum-of-amounts matching against Xero invoices for that payer.

Real example

N26 inflow:

2026-04-18,2026-04-18,"Acme Beratung GmbH","DE89370400440532013000","Income","INV-2026-0218",,4275.00,,,,

Xero invoice:

"Acme Beratung GmbH","contact@acme-beratung.de",,"INV-2026-0218",,"04/01/2026","04/30/2026","4275.00","0.00","4275.00","PAID","EUR"

Reference exact match (INV-2026-0218), amount exact match (4275.00 EUR), counterparty exact match ("Acme Beratung GmbH""Acme Beratung GmbH"). Confidence: Exact.

Note Xero already shows Status = PAID — likely because the user manually marked it or the Xero bank feed connected to N26. Our match confirms the bank-side event.

Edge cases this combo hits

SEPA Instant vs Standard. Inbound SEPA Instant transfers show identically to standard SEPA in N26’s CSV. Settlement timing differs (10 seconds vs same-day) but that’s invisible to the matcher. Both reconcile the same way.

Direct Debit reversals. If you’ve set up Direct Debit collections (you debit customers, money flows to your N26 account), and a debit is rejected, N26 shows the original credit followed by a Type = Refund debit. Pair the two; the net is unpaid.

N26 Round-Up feature. N26 personal accounts (less common for business but possible) have a round-up-to-nearest-euro savings feature. For business reconciliation, this won’t apply, but if you see small “Round Up” transactions in the file, drop them before matching.

Concatenated SEPA references. Some corporate clients use bank software that auto-concatenates invoice numbers into the SEPA reference: "INV-101 INV-102 INV-103 + payment for March". Strip non-invoice tokens, then run multi-invoice matching against Xero invoices for that payer.

Xero multi-org. If you operate multiple Xero orgs under one login (consulting firm with multiple client books), make sure you’re in the correct org before exporting. The ContactName namespace is per-org; matching across orgs requires manual intervention.

When this combo breaks our tool

If your N26 account is on the German UI, exports default to German column headers (Buchungsdatum instead of Booking Date). Our detector handles both English and German, but not French or Italian N26 UIs. Switch to English in N26 settings before exporting if you’re on a non-supported locale.

For Xero contacts with composite names like "Müller & Schmidt GbR", the suffix-stripper may over-trim if the customer is genuinely a "GbR" without further qualifier — manual review is required for partial matches with very short remaining stems.

If you process more than ~50 multi-invoice bulk transfers per month, the sum-of-amounts subset matching becomes expensive. Default subset-search limit is 5 invoices per bulk transfer; past that, manual splitting in the result view.

Faster way

Drop your N26 transactions CSV + Xero invoice export into the reconciler on the homepage. The two-amount-column logic, IBAN-fallback matching, and German/French/Italian suffix stripping all run automatically. Subset-sum reconciliation for bulk transfers happens in one pass.

For the underlying conceptual model, the bank reconciliation glossary entry covers it.

If you also handle Wise alongside N26 (common for EU/UK businesses), the Wise + Xero combo follows the same overall pattern — see the Wise + Xero guide.