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:skip- Number of records to skip (default: 0)limit- Maximum records to return (default: 100)
Create a Tenant
Create a new customer organization:name(required) - Unique identifier for the tenant (lowercase, no spaces)description(optional) - Human-readable descriptioncompany_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
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
- Belgium: CBE/KBO number (e.g.,
-
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
- Format includes country prefix (e.g.,
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 formatscheme:identifier:
Belgium (most common):
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)
9999- DUNS number (international)0088- Global Location Number (GLN)0184- Dutch KVK number9956- Belgian company number (alternative)
Why Set Peppol ID During Creation?
The Peppol ID is used when:- Registering on the SMP (Service Metadata Publisher) - Maps the Peppol ID to e-invoice.be’s access point
- Writing to the Peppol Directory - Creates a searchable entry for participant lookup
- 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.
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:name(required) - Identifier for the API keydescription(optional) - Purpose or environment
List API Keys
Get all API keys for a tenant: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:Peppol Registration
Manage Peppol network registration for customer tenants.Check Registration Status
Check if a tenant is registered on Peppol: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:- Fetch company details from KBO using the CBE number
- Register with the SMP (Service Metadata Publisher)
- Create a business card on the Peppol network
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:- 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 theRECEIVED state, appears in GET /api/inbox/, and any document.received webhooks configured on the tenant fire normally.
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.
ubl_file- The UBL Invoice or Credit Note XML file (required, max 25 MB)
201 Created):
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
404 Not Found
409 Conflict
422 Validation Error
Best Practices
Secure Key Management
Secure Key Management
- Remember: the
idreturned 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)
Tenant Naming Convention
Tenant Naming Convention
Use consistent, predictable tenant names:
Error Recovery
Error Recovery
Implement idempotent operations and error recovery:
Audit Logging
Audit Logging
Log all admin operations for compliance:
Peppol Registration Checks
Peppol Registration Checks
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 returns429 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:- Email: support@e-invoice.be
- Reseller programme: Learn more