to select ↑↓ to navigate
ERPNext

ERPNext

Open in ChatGPT
Ask ChatGPT about this page
Open in Claude
Ask Claude about this page

ICP Declaration

ICP Declaration

The Opgaaf Intracommunautaire Prestaties (ICP, or "ICP declaration") is the quarterly summary of supplies you've made to VAT-registered businesses in other EU countries. Every NL company that delivers intra-community is required to file it — separately from the BTW return, but the two must reconcile.

What's reportable

A line lands in your ICP declaration when all of these are true:

  • The Customer has a Tax Category that matches one of the ICP triggers configured in EU Intracommunity Settings (default: EU-B2B).
  • The Customer's Country is an EU member state (other than yours).
  • The Customer has a valid EU VAT number on their tax_id field.
  • The Sales Invoice (or credit note) has a posting date inside the declared period.

ICP splits supplies into:

  • Rubriek 3a — Goods (intracommunautaire leveringen van goederen)
  • Rubriek 3b — Services (intracommunautaire diensten)
  • Rubriek 3a + 3b combined for ABC-triangulation transactions where you act as the middle party.

The split is driven by the Item Group of each invoice line — Items in a group whose is_stock_item is checked count as goods; others count as services. ABC triangulation requires explicit marking on the Sales Invoice.

Creating a declaration

Search ICP Declaration in the awesomebar → New.

  1. Company — pick the company filing.
  2. From Date / To Date — typically a calendar quarter (2026-01-01 to 2026-03-31 for Q1 2026).
  3. Save. The app walks every Sales Invoice in the period, filters to those matching the ICP triggers, and produces a per-customer summary plus a per-invoice drill-down.

The form lists:

  • Customer (party name)
  • Customer VAT number (their tax_id)
  • Country (their country)
  • Total Supplies (sum of net amounts for the period)
  • Rubriek (3a goods, 3b services, or both for ABC)

Reconciliation against the BTW return

This is the critical check: the ICP total must equal BTW return Box 3b for the same period. If they don't, the Belastingdienst will spot it and ask questions.

The app doesn't automatically reconcile — that's a deliberate choice; if there's a discrepancy you want to investigate it manually rather than let the system paper over it. Run both reports side-by-side and the totals should match to the cent. If they don't, common causes:

  • A Sales Invoice posted in the period but with a Customer whose Tax Category was changed after the BTW return was generated.
  • A credit note for a previous period being included in this period.
  • ABC-triangulation rows counted differently in BTW (Box 3b) vs ICP (3a + 3b).

Refreshing data

Late-arriving invoices are the rule, not the exception. After creating the declaration, the form's menu has Refresh Declaration Data which re-walks the source invoices and updates the totals.

Filing

Submission is done outside this module — print the ICP Declaration Official print format, log into Mijn Belastingdienst Zakelijk, type the per-customer values into the official form, submit.

Direct electronic filing via Digipoort isn't supported yet — on the roadmap.

Reports for audit

Two reports back the declaration:

  • ICP Declaration Summary — by customer, the official filing layout. Print and use as input to the Belastingdienst form.
  • ICP Declaration Details — transaction-level drill-down. Use this to investigate any unexpected total or to answer questions from your accountant.
Last updated 3 days ago
Was this helpful?
Thanks!