Skip to content

Add a seller entity for a jurisdiction

Add a seller entity for a jurisdiction

To invoice under a second legal entity — say a German GmbH alongside a Danish ApS — add a seller entity. Each entity issues invoices under its own legal identity, tax registrations, currency, and per-entity number sequence, and the issuing entity drives the tax outcome. Background: Tax & seller entities.

1. Declare the entity

Add it to config/billing.phpseller.entities, keyed by a short slug:

'entities' => [
    'cbox-dk' => [ /* … existing … */ ],

    'cbox-de' => [
        'legal_name' => 'Cbox GmbH',
        'registration_number' => 'HRB000000',
        'establishment' => 'DE',
        'currency' => 'EUR',
        'invoice_prefix' => 'CBOX-DE',
        'tax_registrations' => [
            ['country' => 'DE', 'number' => 'DE000000000'],
        ],
    ],
],

Use your real registered legal name, registration number, and VAT numbers — the shipped values are synthetic placeholders. The app does not invent or validate these.

The new entity gets its own gapless invoice-number sequence under its invoice_prefix (via DatabaseInvoiceNumberSequence).

2. Make it the default (optional)

CBOX_BILLING_SELLER=cbox-de

config/billing.phpseller.default reads this. The ConfiguredEntityRouter routes to it. Re-cache config in production (php artisan config:cache).

3. Confirm the tax outcome

Because the issuing entity drives tax, an invoice from cbox-de is composed against Germany's establishment and registrations (place of supply, reverse charge, EU VAT) by the tax engine. The app supplies the entity and its registrations via TaxContextFactory; the calculation is the tax engine's — see cboxdk/laravel-tax.

4. See it in the console

Settings → Sellers lists the entities; Settings → Tax shows their registrations.

Advanced filing

Statutory filing (HMRC MTD VAT, EU OSS payloads) is the cbox-billing-tax-plus commercial plugin, not the open app. See Open core → Commercial plugins.