Skip to main content
The Admin API is only available to resellers with an organization API key. This is a privileged API for managing multiple customer tenants. If you’re looking for standard invoice operations, see the regular API documentation.

Overview

The Admin API enables resellers to programmatically manage customer organizations (tenants), provision API credentials, and handle Peppol network registration on behalf of customers. This is separate from the standard e-invoice.be API and uses different authentication.

Key Capabilities

  • Tenant Management - Create and manage customer organizations
  • API Key Provisioning - Generate and manage API keys for customers
  • Peppol Registration - Register customers on the Peppol network
  • Credential Rotation - Update and revoke API keys without customer involvement

Authentication

The Admin API requires an organization API key (also called admin API key), which is different from standard tenant API keys.
Organization API keys are only provided to approved resellers. Contact support@e-invoice.be to discuss the reseller programme.

Tenant Management

List All Tenants

Retrieve all customer organizations under your reseller account:
Query Parameters:
  • skip - Number of records to skip (default: 0)
  • limit - Maximum records to return (default: 100)
Response:

Create a Tenant

Create a new customer organization:
Request Body:
  • name (required) - Unique identifier for the tenant (lowercase, no spaces)
  • description (optional) - Human-readable description
  • company_number (optional) - Company registration number (e.g., CBE/KBO for Belgium, KvK for Netherlands, RCS for Luxembourg)
  • company_tax_id (optional) - Tax identification number (e.g., VAT number like BE0123456789)
  • peppol_ids (recommended) - Array containing the tenant’s Peppol ID
Response (201 Created):
You are responsible for determining and setting the correct Peppol ID for each tenant. Although peppol_ids is an array, the platform currently only supports a single Peppol ID per tenant. Setting the Peppol ID at tenant creation is important for proper Peppol registration later.

Company Number vs Tax ID

The tenant schema now separates company registration identifiers:
  • company_number - The official company registration number from the national business register:
    • Belgium: CBE/KBO number (e.g., 0123456789)
    • Netherlands: KvK number (Chamber of Commerce)
    • Luxembourg: RCS number (Registre de Commerce et des Sociétés)
    • Other countries: Equivalent business registration number
  • company_tax_id - The actual VAT or tax identification number:
    • Format includes country prefix (e.g., BE0123456789, NL123456789B01)
    • Used for tax purposes and invoicing
    • May be different from the company number in some jurisdictions
For Belgian companies, the CBE number (without “BE” prefix) is typically used in the Peppol ID as 0208:<CBE number>, while the full VAT number (with “BE” prefix) goes in company_tax_id.

Peppol ID Format

The Peppol ID follows the format scheme:identifier: Belgium (most common):
For Belgian companies, use scheme 0208 with the CBE/KBO number (enterprise number). Example relationship:
  • company_number: 0123456789 (CBE number)
  • company_tax_id: BE0123456789 (VAT number)
  • peppol_ids: ["0208:0123456789"] (scheme 0208 + CBE number)
Other schemes:
  • 9999 - DUNS number (international)
  • 0088 - Global Location Number (GLN)
  • 0184 - Dutch KVK number
  • 9956 - Belgian company number (alternative)

Why Set Peppol ID During Creation?

The Peppol ID is used when:
  1. Registering on the SMP (Service Metadata Publisher) - Maps the Peppol ID to e-invoice.be’s access point
  2. Writing to the Peppol Directory - Creates a searchable entry for participant lookup
  3. Routing documents - Ensures incoming invoices reach the correct tenant
Every tenant must have exactly one associated Peppol ID. Setting it during tenant creation ensures the tenant is properly configured before Peppol registration.
Use a consistent naming convention for tenant names, such as customer-slug or company-id. This makes it easier to manage multiple customers.

Get a Tenant

Retrieve details for a specific tenant:

Update a Tenant

Update tenant information:
You can update the company_number, company_tax_id, and peppol_ids fields after tenant creation if needed.

Delete a Tenant

Soft-delete a tenant (marks as deleted, doesn’t remove data):

API Key Management

Provision and manage API keys for customer tenants.

Create an API Key

Generate a new API key for a tenant:
Request Body:
  • name (required) - Identifier for the API key
  • description (optional) - Purpose or environment
Response:
The id field IS the API key. There is no separate key field — the value returned in id (e.g. api-3h8f5j2k9l4m7n6p1q5r8s2t4v6w9x3y) is the bearer token your customer must include in the Authorization header of every API request:
Treat the id as a secret. Capture it on creation, store it securely (e.g. encrypted at rest), and deliver it to your customer over a secure channel. Never log it, commit it to version control, or expose it in client-side code.

List API Keys

Get all API keys for a tenant:
Response:
Because the id is itself the bearer token, listing API keys returns the live credentials for this tenant. Treat the response as sensitive credential material: restrict who can call this endpoint, avoid logging the response body, and never return it to end users.

Get Latest API Key

Retrieve the most recently created API key for a tenant:

Update an API Key

Update API key metadata (name/description):

Revoke an API Key

Delete (revoke) an API key:
For credential rotation, create a new API key, update your customer’s configuration, then revoke the old key.

Peppol Registration

Manage Peppol network registration for customer tenants.

Check Registration Status

Check if a tenant is registered on Peppol:
Response:
state reflects the SMP registration status: not_registered, e-invoice (registered on our SMP), or other. smp is a structured object describing the SMP service group, business card, and supported document types (null when not registered).

Register on Peppol

Register a tenant on the Peppol network:
For Belgian companies, the system can automatically fetch company data from KBO (Crossroads Bank for Enterprises):
The system will:
  1. Fetch company details from KBO using the CBE number
  2. Register with the SMP (Service Metadata Publisher)
  3. Create a business card on the Peppol network
Peppol operations are not available for organizations in test mode. Calling the Peppol endpoints for a test-mode organization returns 403 Forbidden. Ensure your organization is in production mode before attempting registration.

Update Business Card

Update the business card information on Peppol:
Currently, only company name updates are supported for business cards.

Unregister from Peppol

Remove a tenant from the Peppol network:
This will:
  • Remove SMP registration
  • Delete the business card
  • Mark the tenant as unregistered

Testing

Simulate an Inbound Document

Inject a UBL document into a tenant’s inbox as if it had been received over Peppol. This is the supported way to test a customer’s receive-side integration: the document is created in the RECEIVED state, appears in GET /api/inbox/, and any document.received webhooks configured on the tenant fire normally.
Simulation is only available for test-mode tenants. Calling this on a tenant that is not in test mode returns 400 Bad Request.
The request is multipart/form-data with the UBL XML supplied as a ubl_file field (not a raw XML request body). The receiver identifiers in the UBL should match the tenant you are simulating for.
Form fields:
  • ubl_file - The UBL Invoice or Credit Note XML file (required, max 25 MB)
Response (201 Created):
The sender and receiver Peppol identifiers, document type (invoice vs. credit note), and line-item details are extracted from the uploaded UBL. Use the returned document_id with the standard document endpoints (for example GET /api/documents/{document_id}) to inspect the result.
This endpoint powers the Simulate inbound button shown in a test workspace’s inbox in the e-invoice.be app. See Testing Received Documents for the app-based workflow.

Complete Workflow Example

Here’s a complete Node.js example showing the typical reseller workflow:

Key Rotation Example

Rotate API keys without customer downtime:

Error Handling

Common error responses:

401 Unauthorized

Solution: Verify your organization API key is correct and active.

404 Not Found

Solution: Check the tenant ID is correct and the tenant exists.

409 Conflict

Solution: Choose a different tenant name.

422 Validation Error

Solution: Ensure all required fields are provided.

Best Practices

  • Remember: the id returned from the create-key endpoint IS the bearer token. Treat it as a secret from the moment you receive it.
  • Never log or display organization API keys
  • Store customer API keys securely (encrypted database)
  • Provide keys to customers via secure channels only
  • Implement key rotation policies (e.g., every 90 days)
Use consistent, predictable tenant names:
Implement idempotent operations and error recovery:
Log all admin operations for compliance:
Always verify registration prerequisites:

Environment

The Admin API is available on the single API host:
To test your integration before going live, create tenants in test mode (the API’s test Organization) and use their API keys. Test-mode tenants divert sends to email, support Simulate an Inbound Document, and never touch the Peppol network. See Environments for details.

Rate Limiting

Rate limits are applied per API key on write and validation endpoints (see API reference — Rate Limiting). When a limit is exceeded, the API returns 429 Too Many Requests with a Retry-After header. Honor Retry-After and use exponential backoff when driving bulk tenant operations.

Support

For Admin API access or technical questions: