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.
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
- 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)
- 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 (AFAS, e-Boekhouden, Snelstart)
- On success: status changes to Synced, external ID is recorded
- On failure: error message is logged for review
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
- All sync attempts are logged with timestamps, duration, and error details
- Failed syncs can always be retried manually
See Billing Settings > Auto-Sync on Finalize for configuration.
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 (CCTAXA) | Customs webhook |
| 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 by type | declaration_types: ['H1', 'H7'] |
| 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' |
| Manual | Never auto-triggered, added manually | - |
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)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: Immediate, Delayed, Daily, Weekly, or Monthly
- Consolidation Mode: Per Dossier or Merged
- Currency: EUR (default)
- 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 |
Invoice Frequency
Rate cards support five billing frequencies:
| Frequency | Behavior | When Invoices Are Generated |
|---|---|---|
| Immediate | Real-time per event | As soon as a trigger event fires |
| 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 |
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 |
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.
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 Customer
Customers can be configured to bill a different entity:
- Default: Invoice sent to the declaring customer
- Explicit Override: Set the Invoice-To Customer field to bill a different customer
- Freight Forwarder Parent: If the customer has a parent freight forwarder, invoices go to the parent
Resolution priority: Explicit override > Parent forwarder > Self
Customer Invoice Settings
| Setting | Description |
|---|---|
| Invoice Email | Email address for invoice delivery |
| Auto-Send Invoices | Automatically email invoices when finalized |
| Invoice-To Customer | Override which customer receives invoices |
| 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
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