Invoicing
Borderbolt provides comprehensive invoicing capabilities with automated billing from dossiers, rate card management, duty/tax pass-through, prepayment handling, and integration with popular Dutch accounting systems.
Permissions
Access to invoicing features is controlled by granular permissions. The table below shows which permissions are needed for each function and which roles have them by default.
Invoicing Permissions
| Permission | Description | Admin | Manager | Customs Manager | Senior Declarant | Viewer |
|---|---|---|---|---|---|---|
invoicing.view | View invoices, rate cards, billable items, and statements | Yes | Yes | Yes | Yes | Yes |
invoicing.create | Create new invoices | Yes | Yes | Yes | - | - |
invoicing.edit | Edit draft invoices | Yes | Yes | Yes | - | - |
invoicing.delete | Delete draft invoices | Yes | Yes | Yes | - | - |
invoicing.finalize | Finalize invoices (lock and assign number) | Yes | Yes | Yes | - | - |
invoicing.payments | Mark invoices as paid, manage prepayments | Yes | Yes | Yes | - | - |
invoicing.rate_cards | Create and manage rate cards | Yes | Yes | Yes | - | - |
invoicing.billable_items | Create and manage billable items | Yes | Yes | Yes | - | - |
invoicing.statements | View and manage statements | Yes | Yes | Yes | - | - |
invoicing.accounting | Manage accounting integrations and sync invoices | Yes | Yes | Yes | - | - |
invoicing.settings | Configure invoice/statement settings, numbering, and templates | Yes | - | - | - | - |
invoicing.designer | Design invoice and statement PDF templates | Yes | - | - | - | - |
No access: Junior Declarant, Data Entry, and User roles have no invoicing permissions by default.
Invoice Overview
What is an Invoice?
An invoice in Borderbolt represents a bill to a customer for customs services provided. Invoices can be:
- Generated automatically from completed dossiers based on trigger events
- Created manually with ad-hoc line items
- Generated in batches from pending invoice lines across multiple dossiers
- Flagged as prepayment invoices for advance billing
Each invoice belongs to a payment term group that determines payment terms:
| Payment Term Group | Default Terms | Typical Contents |
|---|---|---|
| Handling | Net 30 days | Service fees, declaration handling, document preparation |
| Duties | Net 14 days | Import/export duties, customs taxes (pass-through) |
| Disbursements | Net 14 days | Port fees, storage, inspection fees, third-party costs |
A single dossier can generate multiple invoices if it contains line items across different payment term groups.
Merge Payment Term Groups by Matching Due Date: When this setting is enabled in Billing Settings, invoices from different payment term groups that share the same payment due date (for example, two groups both due in 30 days) are combined onto a single invoice instead of being issued separately. This reduces the number of invoices sent to a customer when their payment term groups happen to share timing. An invoice combined this way lists all of the payment term groups it contains.
Invoice Statuses
Draft --> Finalized --> Sent --> Synced --> Paid
|
Credited (if cancelled)| Status | Description | Editable | Numbered |
|---|---|---|---|
| Draft | Initial state, fully editable | Yes | No (DRAFT-XXXX) |
| Finalized | Locked, final number assigned, PDF available | No | Yes (INV-2026-00001) |
| Sent | Emailed to customer | No | Yes |
| Synced | Exported to accounting system | No | Yes |
| Paid | Payment received and recorded | No | Yes |
| Credited | Credit note issued, original retained for audit | No | Yes |
Invoice List
Viewing Invoices
Required permission: invoicing.view
- Navigate to Invoicing > Invoices
- The invoice list shows:
- Invoice number and date
- Customer name
- Payment term group
- Item Number(s) — the billable item codes included on the invoice
- Status (Draft, Finalized, Sent, Synced, Paid)
- Total amount (including VAT)
- Due date
- Days overdue (if unpaid)
Filtering and Searching
Filter invoices by:
- Status: Draft, Finalized, Sent, Paid, Overdue
- Customer: Select from dropdown
- Payment Term Group: Handling, Duties, Disbursements
- Date Range: Invoice date, due date, or payment date
- Amount Range: Min/max invoice total
- Overdue Only: Show only unpaid invoices past due date
Search by:
- Invoice number
- Customer name
- Customer reference
- Dossier number
Creating Invoices
Method 1: Automatic from Dossier Events (Recommended)
Required permission: invoicing.create
Borderbolt automatically creates pending invoice lines when trigger events occur on dossiers. These lines are later converted into invoices based on the customer’s billing frequency.
How it works:
- A declaration in a dossier is released/accepted by customs
- The system evaluates all active billable items in the customer’s rate card
- For each matching trigger, a pending invoice line is created
- When the dossier reaches Ready to Invoice status, pending lines are locked
- Invoices are generated based on the rate card’s billing frequency
See Billable Items and Rate Cards for how triggers and pricing are configured.
Method 2: From Pending Lines (Batch)
Required permission: invoicing.create
Invoice multiple dossiers at once:
- Go to Invoicing > Create from Pending Lines
- Select a customer
- Borderbolt shows all uninvoiced dossier lines for this customer
- Check the lines to include (or select all)
- Click Create Invoice
- Invoice is generated with selected lines
- Review and finalize
Method 3: Manual Invoice
Required permission: invoicing.create
For ad-hoc billing without a dossier:
- Go to Invoicing > New Invoice
- Select the customer
- Fill in invoice details:
- Invoice Date: Default is today
- Due Date: Calculated from payment terms
- Currency: Customer default or specify
- Payment Term Group: Handling, Duties, or Disbursements
- Reference: Customer PO or reference number
- Click Add Line to add invoice lines manually
- Fill in description, quantity, unit price, and VAT rate
- Add more lines as needed
- Review totals and finalize
Invoice Lines Management
Line Item Fields
Each invoice line contains:
- Description: Service or item description (required), shown with the billable item’s code alongside it (e.g. “50101 - Customs handling fee”)
- Quantity: Number of units (default: 1)
- Unit Price: Price per unit (excluding VAT)
- VAT Rate: 21% (high), 9% (low), 0% (zero-rated), or Exempt
- Line Total: Auto-calculated as Quantity x Unit Price
- VAT Amount: Auto-calculated as Line Total x VAT Rate
- Payment Term Group: Handling, Duties, or Disbursements
Editing Lines
Required permission: invoicing.edit
On draft invoices:
- Click the Edit icon on any line
- Modify fields as needed
- Totals recalculate automatically
- Click Save
Deleting Lines
Required permission: invoicing.delete
- Click the Delete icon on any line
- Confirm deletion
- Line is removed and totals recalculate
Finalized Invoices: Once finalized, invoice lines cannot be edited or deleted. If corrections are needed, create a credit note.
Invoice Lifecycle
Finalizing
Required permission: invoicing.finalize
- Open the draft invoice
- Review all lines and totals
- Click Finalize Invoice
- Confirm the action
- Invoice number is assigned and status changes to Finalized
- If customer has auto-send enabled, the invoice is emailed automatically
Sending
Required permission: invoicing.edit
- Finalize the invoice first
- Click Send Email
- A modal opens with the To field pre-filled with the customer’s billing email
- Click Send
- Invoice PDF is attached automatically
- Status changes to Sent
Auto-Send on Finalize
If a customer has both:
- Auto-Send Invoices enabled
- A valid Invoice Email configured
Then invoices are automatically sent when finalized, with no manual intervention.
Configure per customer:
- Go to Customers > Edit > Invoicing section
- Enable Auto-Send Invoices
- Fill in Invoice Email with the customer’s billing email address
- Click Save
Marking as Paid
Required permission: invoicing.payments
- Open a finalized or sent invoice
- Click Mark as Paid
- Optionally enter a Payment Reference (bank transaction ID, check number)
- Click Confirm
- Status changes to Paid
- Payment date and the user who marked it are recorded
Syncing to Accounting
Required permission: invoicing.accounting
Manual Sync:
- Open a finalized invoice
- Click Sync to Accounting
- Invoice is sent to the configured accounting system
- On success: status changes to Synced, external ID is recorded, and the invoice document generated by the accounting system is attached to the invoice automatically
- On failure: the error message is shown directly on the invoice page
Auto-Sync on Finalize:
When auto-sync is enabled in the accounting integration settings, invoices are automatically synced to your accounting system as soon as they are finalized — no manual action required.
- The sync runs in the background after finalization
- If the sync fails, it automatically retries up to 3 times
- If all retries fail, a notification is sent to everyone who can manage accounting integrations so the failure doesn’t go unnoticed
- All sync attempts are logged with timestamps, duration, and error details, viewable directly on the invoice page under Accounting Sync
- Failed syncs can always be retried manually from the invoice page
See Billing Settings > Auto-Sync on Finalize for configuration.
Detecting Invoices Removed from Your Accounting System:
A daily background check compares synced invoices against your accounting system. If an invoice that was previously synced no longer exists there (for example, it was deleted directly in the accounting system), Borderbolt flags it for manual review:
- The invoice shows a Needs check badge in the invoice list
- The invoice page shows a banner explaining the invoice no longer exists in the accounting system
- Everyone with
invoicing.accountingpermission receives a notification - From the invoice page, you can either re-record the external reference (if you find the invoice still exists) or clear the flag to allow a fresh sync attempt
Billable Items
What are Billable Items?
Billable items are the catalog of services and charges that can be invoiced. Each item defines what to charge, when to charge it (trigger event), and how to calculate the amount (trigger type).
Required permission: invoicing.billable_items
Billable Item Categories
| Category | Description | Examples |
|---|---|---|
| Import | Charges for import declarations | Import declaration handling, line processing |
| Export | Charges for export declarations | Export declaration handling |
| Transit | Charges for transit declarations (D1-D3) | Transit departure/arrival fees |
| Surcharge | Additional fees and surcharges | Rush processing, after-hours service |
| Document | Document-related charges | Document preparation, certificate fees |
| Other | Miscellaneous charges | Consultation, customer service |
Trigger Events (When to Charge)
Trigger events determine when a billable item is automatically evaluated:
| Event | Description | Fired By |
|---|---|---|
| On Release | When customs releases a declaration | Customs response |
| On Acceptance | When customs accepts a declaration | Customs response |
| On Dossier Complete | When a dossier is marked as complete | User action |
| On Tax Assessment | When customs sends a duty/tax assessment | Customs webhook |
| On Control Notification | The first time customs opens a physical or document control on a declaration | Customs webhook |
| On Portbase Message Accepted | When Portbase accepts an import (MID) or export (MED) notification. Only for Per Portbase Message items | Portbase reply |
| Manual | Only triggered manually by a user | User action |
Trigger Types (How to Calculate)
Trigger types determine how the quantity and amount are calculated:
| Trigger Type | Description | Config Example |
|---|---|---|
| Per Declaration | Charge per declaration, optionally filtered to imports, exports, or both | declaration_types: ['IM'] (imports only), ['EX'] (exports only), or ['IM', 'EX'] (both) |
| Per Line | Charge per declaration line item | min_lines: 5 (only charge if 5+ lines) |
| Per Line After | Charge for lines exceeding a threshold | after: 10 (charge for lines 11+) |
| Per Unique HS Code | Charge per unique HS code prefix | hs_digits: 6, after: 10 (charge codes 11+) |
| Per Transit | Charge per transit declaration | - |
| Per Dossier | Flat fee per dossier | - |
| Per Kg | Charge per kilogram of goods | weight_field: 'gross' or 'net' |
| Per Customs Value | Percentage of declared customs value | percentage: 1 (1% fee) |
| Per Document | Charge per uploaded document | document_types: ['invoice', 'poa'] |
| Per Declaration Duties | Pass-through of actual customs duties | duty_type_code: ['A00', 'B00'] |
| Conditional | Charge based on a field condition | field: 'transport_mode', equals: 'Air' |
| Per Portbase Message | Charge once per Portbase notification that Portbase accepts | Tick MID (import notification) and/or MED (export notification); leave both unticked for all |
| Manual | Never auto-triggered, added manually | - |
For Per Declaration billable items, you can also restrict the charge to specific customs procedure movements — for example, only charging when a declaration moves goods from a bonded warehouse into free circulation. Add one or more previous/current procedure combinations to the billable item; the charge only applies when a declaration’s movement matches one of the combinations you’ve listed. Leave a side of a combination set to “Any” to match every value on that side, or leave the whole filter empty to charge for all procedure movements as before.
You can further restrict a Per Declaration item by representation type — charge only when the declaration’s customer has no representation, direct representation, or indirect representation configured. Check one or more boxes to filter, or leave all unchecked to charge regardless of representation type.
For Per Portbase Message billable items, the charge is added when Portbase accepts the message. Rejected messages and messages that could not be sent are never charged; a message that is corrected or retried and then accepted is charged exactly once. Only messages linked to a declaration or transit in a dossier are charged. See Portbase Notifications.
For Conditional billable items, in addition to matching a field’s exact value (Equals) or a substring (Contains), you can charge whenever a field is simply set to any non-empty value — useful for fields that record a timestamp, like when a control was opened on a declaration.
Control Fees
Borderbolt can automatically charge a fee the first time customs opens a physical or document control on a declaration. Create a billable item with trigger type Conditional, trigger event On Control Notification, and set the field to check as “Physical Control Just Billed” or “Document Control Just Billed” with “field is set” checked. The fee is charged exactly once per declaration per control type — later follow-up messages about the same control (reminders, or the eventual outcome) don’t charge it again, and a document control and a physical control on the same declaration are billed independently.
Payment Term Groups
Each billable item belongs to one of three payment term groups:
- Handling (Net 30 days) - Service fees, customs clearing, document handling
- Duties (Net 14 days) - Import/export duties and taxes (pass-through from customs)
- Disbursements (Net 14 days) - Port fees, storage, inspection, other third-party costs
When invoices are generated, lines are grouped by payment term group, creating separate invoices per group with different due dates.
Creating Billable Items
Required permission: invoicing.billable_items
- Go to Invoicing > Billable Items
- Click New Billable Item
- Fill in:
- Code: Short identifier (e.g.,
CLEAR-IMPORT,DUTY-A00) - Name: Full name (e.g., “Import Declaration Handling”)
- Category: Import, Export, Transit, Surcharge, Document, or Other
- Trigger Type: How quantity is calculated (see table above)
- Trigger Event: When to fire (see table above)
- Trigger Config: JSON configuration specific to the trigger type
- Default Price: Default unit price
- VAT Rate: Default VAT rate (typically 21%)
- Payment Term Group: Handling, Duties, or Disbursements
- Payment Term Days: Days until payment due
- Code: Short identifier (e.g.,
- Click Save
Duty and Tax Pass-Through
How It Works
When customs sends a tax assessment (CCTAXA/CC419A) for a declaration, Borderbolt automatically:
- Creates a cost line recording the actual duty amount
- Creates a revenue line passing the duty through to the customer
- Creates markup lines if configured (percentage-based markup on duties)
This ensures duties are accurately billed to customers at cost, with optional markup for handling.
Duty Type Codes
| Code | Description |
|---|---|
| A00 | Customs duties (import tariffs) |
| B00 | VAT (Value Added Tax) |
| C00 | Excise duties |
| D00 | Anti-dumping duties |
Markup on Duties
Rate card lines can be configured to add a percentage markup on duty amounts:
- Config:
markup_on: ['A00', 'B00']withpercentage: true - Unit price = markup percentage (e.g., 5 for 5%)
- Creates a separate invoice line for the markup amount
Example:
Customs duty assessed: 1,000.00
- Purchase line (cost): 1,000.00 (actual duty)
- Invoice line (revenue): 1,000.00 + 210.00 VAT (pass-through)
- Markup line (5%): 50.00 + 10.50 VAT (handling fee)Deferred VAT (Article 23): When a customer defers VAT under an Article 23 licence, customs assesses the VAT but the amount actually payable at the border is zero — the customer self-accounts for it on their own periodic VAT return instead. In this case, Borderbolt passes through and applies any markup to the actual payable amount, not the full assessed amount, so the customer is not billed for VAT they never had to pay at import.
VAT Reverse Charge
When a declaration has VAT reverse charge applied (BTW Verlegging / FR7):
- B00 (VAT) amounts from tax assessments are excluded from the financial impact
- The customer handles VAT directly with the tax authority
- See VAT Reverse Charge for configuration details
Rate Cards
What are Rate Cards?
Rate cards define customer-specific pricing for all billable items. Each customer is assigned one active rate card that determines:
- Which services are charged
- How much each service costs (overriding default prices)
- When invoices are generated (billing frequency)
- How invoices are consolidated
Required permission: invoicing.rate_cards
Creating a Rate Card
- Go to Invoicing > Rate Cards
- Click New Rate Card
- Fill in:
- Customer: Select the customer this rate card applies to
- Name: Descriptive name (e.g., “Standard Rates 2026”)
- Valid From: Start date for these rates
- Valid Until: End date (optional, leave blank for indefinite)
- Invoice Frequency: Delayed, Daily, Weekly, or Monthly
- Consolidation Mode: Per Dossier or Merged
- Currency: EUR (default)
- Auto-finalize generated invoices: When enabled, invoices generated for this customer are automatically finalized instead of waiting in Draft for manual review. This also triggers auto-send and auto-sync to accounting for that customer, if those are enabled.
- Click Save
Rate Card Line Overrides
Each line in a rate card can override the billable item defaults:
| Override | Description |
|---|---|
| Unit Price | Customer-specific price (overrides billable item default) |
| Minimum Charge | Floor for the calculated amount |
| Maximum Charge | Cap on the calculated amount |
| VAT Rate Override | Customer-specific VAT rate |
| Payment Term Days Override | Customer-specific payment terms |
| Frequency Override | Per-line billing frequency override |
| Trigger Config Override | Customized trigger conditions |
| Description Override | Custom line description on invoices |
A line’s frequency override is pre-filled automatically when you add a billable item that has its own default invoicing cadence configured (see Default Invoice Frequency below) — you can still change it afterward unless that billable item’s cadence is locked.
Invoice Frequency
Rate cards support four billing frequencies:
| Frequency | Behavior | When Invoices Are Generated |
|---|---|---|
| Delayed | After dossier completion | When dossier status becomes “Ready to Invoice” |
| Daily | Daily batch | Daily at configured time |
| Weekly | Weekly batch | Weekly on configured day |
| Monthly | Monthly batch | Monthly on configured day |
Default Invoice Frequency per Billable Item
Each billable item can have its own default invoicing cadence, so you don’t have to remember to set it on every customer’s rate card individually. Open a billable item and set Invoice Frequency Default to one of the four frequencies above. Any rate card line you add for that item afterward is pre-filled with that cadence automatically; existing lines are never changed retroactively.
If a billable item’s cadence needs to be non-negotiable — for example duty items that must always be invoiced daily regardless of what a customer’s rate card normally uses — check Lock this frequency. A locked cadence overrides any per-customer override and can’t be changed on individual rate card lines. If any customers already have a different cadence configured for that item when you lock it, you’ll see a confirmation listing exactly which customers are affected before the change takes effect.
Consolidation Modes
| Mode | Description |
|---|---|
| Per Dossier | Creates separate invoices per dossier per payment group, plus a statement of account |
| Merged | Combines all dossiers for a customer into one invoice per payment group. If different dossiers are set to be billed to different companies (see Invoice-To Allow-List below), each billed company gets its own invoice instead of being combined together. |
Assigning Rate Cards to Customers
- Go to Customers > Select a customer
- Open the rate card or create a new one linked to this customer
- Only one rate card can be active per customer at a time
- Use Valid From / Valid Until dates for rate card versioning
Multiple Rate Cards: A customer can have multiple rate cards with different date ranges. Only the currently valid and active rate card is used for billing.
Simulating a Rate Card
Before activating a new or edited rate card, you can test which charges it would apply to a specific declaration.
- Open the rate card’s detail page
- Click Simulate
- Search for a declaration by MRN or reference number
- Select the declaration from the results, which also show its declaration type and procedure codes
- The preview shows exactly which billable item lines would be charged, the calculated quantity and amount for each, and the totals per payment term group — along with any lines that would not be triggered for this declaration
This lets you confirm a rate card is configured correctly before making it active, without creating any actual charges.
Invoice Runs
What are Invoice Runs?
Invoice runs are batch processes that generate invoices for all customers with pending invoice lines. They are triggered automatically on a schedule or manually from the UI.
Viewing Invoice Run History
Required permissions: settings.view + invoicing.settings
- Navigate to Settings > Invoice Runs
- The list shows:
- Frequency (delayed, daily, weekly, monthly)
- Run date and duration
- Status (running, completed, failed)
- Customers processed
- Invoices created
- Total amount invoiced
- Error messages (if any)
Manual Invoice Runs
Required permissions: settings.view + invoicing.settings
If a scheduled invoice run fails or needs to be re-run:
- Navigate to Settings > Invoice Runs
- Click Run Now
- Select the frequency (Delayed, Daily, Weekly, Monthly)
- Confirm the action
- The job is queued for background processing
- Refresh the page to see the new run log entry
Failed runs can also be retried by clicking Retry on the failed run’s detail row.
Manual runs execute in the background: Invoice generation runs asynchronously. It may take a few minutes to complete depending on the number of customers and invoice lines.
Scheduled Invoice Runs
Invoice generation runs automatically on a schedule:
- Daily: Generates invoices for all customers with daily frequency rate cards
- Weekly: Generates invoices for all customers with weekly frequency rate cards (previous calendar week)
- Monthly: Generates invoices for all customers with monthly frequency rate cards (previous calendar month)
- Delayed: Generates invoices for all dossiers in “Ready to Invoice” status with delayed frequency
Prepayment Invoices
How Prepayments Work
Customers can be configured with a prepayment threshold. When a dossier’s estimated duties exceed this threshold, a prepayment invoice is automatically generated.
Required permission: invoicing.payments
Prepayment Flow
- Customer has a Prepayment Threshold configured (per-customer or company default)
- Dossier is created with estimated duties exceeding the threshold
- System generates a prepayment invoice
- Customer pays the prepayment invoice
- Invoice is marked as paid and the dossier is flagged as prepaid
- When actual duty assessment arrives, the prepayment is deducted
- Credit note generated for any overpayment
Configuring Prepayment Thresholds
- Per Customer: Set the Prepayment Threshold in Customers > Edit > Invoicing section
- Company Default: Set the Default Prepayment Threshold in Settings > Billing Settings
- Customer-level threshold overrides the company default
Customer Billing Configuration
Invoice-To Allow-List
Each customer has its own Invoice-To Allow-List — the list of companies allowed to be billed on that customer’s behalf. It’s managed on the customer’s edit page, in the Invoice-To Allow-List section:
- Add an entry: Click Add invoice-to entry and select a company from the list. Add the customer itself to allow self-billing (the customer being billed directly for its own dossiers).
- Set the default: Mark one entry as Default. When a dossier is created for this customer and no invoice-to company is explicitly chosen, the default entry is billed automatically.
- Remove an entry: Click the trash icon next to a row.
When creating or editing a dossier, the invoice-to company must be on the customer’s allow-list — the system checks this whenever the dossier is saved and rejects a choice that isn’t on the list. The same check applies to declarations created through AI Email Import, where the Invoice to dropdown on the review screen offers only companies on the allow-list once the customer for that email has been identified.
Existing default no longer used automatically: A single default billing party used to be picked automatically (falling back to a parent company if one was configured). That automatic fallback has been replaced by the allow-list above — make sure each customer’s allow-list has a default entry configured, otherwise the customer bills itself by default.
Customer Invoice Settings
| Setting | Description |
|---|---|
| Invoice Email | Email address for invoice delivery |
| Auto-Send Invoices | Automatically email invoices when finalized |
| Invoice-To Allow-List | The companies allowed to be billed for this customer, with one marked as default |
| Prepayment Threshold | Minimum amount requiring advance payment |
Dossier Revenue and Cost Tracking
Revenue Lines
Revenue lines are automatically created by trigger events and represent pending charges:
- Pending (unlocked): Can be edited or deleted
- Locked: Moved to an invoice, immutable
Each line tracks:
- Which billable item generated it
- Which declaration/transit triggered it
- Which trigger event fired
- The calculated quantity and amount
- The payment term group and frequency
Cost Lines
Cost lines track what you pay (used for margin calculation):
| Category | Description |
|---|---|
| Duties | Import/export duties from customs |
| Taxes | VAT and other taxes |
| Freight | Shipping costs |
| Inspection | Customs inspection fees |
| Storage | Warehouse storage |
| Handling | Third-party handling |
| Other | Other costs |
Margin Tracking
Each dossier displays:
- Total Revenue: Sum of all pending invoice line amounts
- Total Costs: Sum of all purchase line amounts
- Margin: Revenue minus Costs
- Margin %: Margin as percentage of Revenue
Statements
What are Statements?
Required permission: invoicing.statements
Statements are consolidated summaries of all invoices for a customer over a period. They are automatically generated when using Per Dossier consolidation mode.
Generating Statements
- Go to Invoicing > Statements
- Click Generate Statement
- Select:
- Customer: The customer to generate for
- Period: Month, Quarter, or Custom date range
- Include Paid: Show paid invoices or only unpaid
- Click Generate
- Download as PDF or email to customer
Invoice Line Deduplication
Control how duplicate billable items are handled when creating invoice lines.
Deduplication Modes
Configured globally in Settings > Billing Settings:
| Mode | Behavior | Best For |
|---|---|---|
| Allow Duplicates (default) | Each trigger creates a new line | Per-declaration billing, detailed audit trails |
| Update Quantity | Merges duplicates by incrementing quantity | Volume-based billing, consolidated invoices |
| Skip | Skips if line already exists | Flat fees, subscription billing |
Locked Lines: Deduplication only applies to unlocked (draft) lines. Locked lines on finalized invoices are never modified.
Accounting Integration
Supported Systems
Required permission: invoicing.accounting
| System | Features |
|---|---|
| AFAS | Invoice export, customer sync, VAT mapping |
| e-Boekhouden | Invoice export, customer sync, GL accounts |
| Snelstart | Invoice sync, payment matching, multi-admin |
| WeFact | Invoice export, customer (debtor) sync |
| CSV Export | Generic/Exact/Twinfield formats (manual) |
Setting Up Integration
Required permission: invoicing.accounting
- Go to Invoicing > Accounting
- Select your accounting platform
- Enter API credentials
- Configure field mappings (ledger accounts, VAT codes, cost centers)
- Click Test Connection
- If successful, click Enable Integration
WeFact Invoice Delivery Settings: When WeFact is selected, two additional delivery options are available:
- Sync invoices as: Choose Concept (stays in WeFact for review before sending) or Sent (marked as sent immediately)
- Send invoice by email via WeFact: When enabled, WeFact emails the invoice to the customer directly, and the system’s own invoice email is skipped for that invoice so the customer isn’t emailed twice
Syncing Invoices
Automatic Sync: When an invoice is finalized, it is automatically sent to the accounting system (if enabled).
Manual Sync: Open an invoice and click Sync to Accounting to sync individually.
Batch Sync: Select multiple invoices and click Sync to Accounting.
PDF Generation and Download
Generating Invoice PDF
Required permission: invoicing.view
- Open a finalized invoice
- Click Download PDF or Preview PDF
- PDF includes:
- Company logo and details
- Invoice number and date
- Customer billing address
- Payment terms and due date
- Line items with VAT breakdown
- Payment instructions (IBAN, BIC, bank name)
- Footer with terms and conditions
PDF Customization
Required permission: invoicing.designer
Customize invoice and statement templates via Settings > Template Designer.
Best Practices
Invoicing Workflow
- Complete Dossier: Ensure all services delivered before invoicing
- Review Revenue: Check all billable items are included
- Check Margins: Verify profitability before sending to customer
- Finalize Invoice: Lock the invoice with final number
- Send Promptly: Email invoice within 24 hours of completion
- Follow Up: Send reminder if unpaid after 7 days past due
Rate Card Management
- Annual Review: Update rate cards yearly for inflation
- Customer Tiers: Create different rate cards for different customer segments
- Effective Dates: Set effective dates in advance for planned price changes
- Versioning: Use Valid From / Valid Until dates to maintain pricing history
Payment Collection
- Clear Terms: Always specify payment terms on invoices
- Prompt Billing: Invoice immediately after service completion
- Automate: Use auto-send and periodic invoice runs to reduce manual work
- Statements: Send monthly statements to customers with recurring business
Troubleshooting
Invoice Not Generating from Dossier
“No invoice lines found”
- Check dossier has revenue lines added
- Verify revenue lines are not already locked/invoiced
- Ensure customer has an active rate card with billable items
- Check deduplication settings
“Customer not eligible for invoicing”
- Verify customer has complete billing details
- Check customer is active (not archived)
- Ensure customer has an active rate card
Duty Pass-Through Not Working
“No duty lines created after tax assessment”
- Verify rate card has
per_declaration_dutiesbillable items - Check
duty_type_codein trigger config matches the assessed duty type - Review customs response logs for tax assessment processing
Invoice Run Failed
- Check Settings > Invoice Runs for the error message
- Common causes: configuration issues, missing rate card data
- Use Retry button to re-run failed runs
- Contact support if the issue persists
Accounting Integration Issues
“Invoice sync failed”
- Check API credentials are still valid
- Verify customer exists in accounting system
- Check ledger account mappings are correct
- Review sync error log for specific error message
Related Topics
- Dossiers - Create dossiers for invoicing
- Customers - Customer master data and billing configuration
- Reports - Revenue and profitability reports
- Billing Settings - Invoice settings and accounting integration
- VAT Reverse Charge - Configure BTW Verlegging / FR7
- Roles & Permissions - Configure user access