Partner Tenants

Create and manage child tenants (Partner API only).

A tenant represents a customer account in Bizzlink — the organizational unit that owns users, settings, and subscriptions. Each tenant can have one or more legal entities, which are the actual companies that appear on invoices and are registered in the Peppol network.

For example, a holding company (one tenant) may operate three subsidiaries (three legal entities), each with their own VAT number and Peppol IDs.

Billing models

When creating a child tenant, you must specify a billingModel:

  • SEATS — the tenant pays a fixed monthly fee per legal entity. Each legal entity added to the tenant counts as one seat.
  • FLOW — the tenant pays per document sent or received, regardless of the number of legal entities.

Your partner account must have an active subscription matching the requested billing model.

List child tenants

GET /bizzlink/tenants
Lists all tenants owned by the calling partner.

Responses

StatusDescription
200Tenant list
403Caller is not a partner

Response Body JsonApiListDocumentTenantResponseAttributes

FieldTypeDescription
JsonApiResourceTenantResponseAttributes[]
JsonApiLinks
JsonApiPaginationMeta
cURL Request
curl -X GET https://gateway.vigasoft.lu/bizzlink/tenants \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "X-Bizzlink-Signature: t=$TIMESTAMP,v1=$SIGNATURE"
Response 200 OK
{
    "data": [
    {
        "attributes": {
          "active": true,
          "addressCity": "string",
          "addressCountry": "LU",
          "addressPostalCode": "string",
          "addressStreet": "string",
          "billingModel": "SEATS",
          "companyName": "Kunde GmbH",
          "contactEmail": "max@kunde.lu",
          "contactName": "Max Müller",
          "contactPhone": "+352 123 456",
          "createdAt": "2026-01-01T00:00:00Z",
          "tenantCode": "KUNDE-GMBH",
          "updatedAt": "2026-01-01T00:00:00Z"
      },
        "id": "770e8400-e29b-41d4-a716-446655440000",
        "type": "tenants"
    }
    ],
    "links": {
      "first": "https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=1&page%5Bsize%5D=20",
      "last": "https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=7&page%5Bsize%5D=20",
      "next": "https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=4&page%5Bsize%5D=20",
      "prev": "https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=2&page%5Bsize%5D=20",
      "self": "https://gateway.vigasoft.lu/bizzlink/documents?page%5Bnumber%5D=3&page%5Bsize%5D=20"
  },
    "meta": {
      "page": 1,
      "size": 20,
      "totalElements": 137,
      "totalPages": 7
  }
}

Create a child tenant

POST /bizzlink/tenants
Creates a new tenant as a child of the calling partner tenant. Automatically creates a default legal entity and Peppol IDs based on VAT number.

Request Body

FieldTypeDescription
requiredobjectResource envelope. 'attributes' holds the domain fields; 'meta.scope' declares whether the resource belongs to the whole tenant or to a specific legal entity (Peppol ID).

Responses

StatusDescription
201Tenant created
403Caller is not a partner
422Validation error
cURL Request
curl -X POST https://gateway.vigasoft.lu/bizzlink/tenants \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "X-Bizzlink-Signature: t=$TIMESTAMP,v1=$SIGNATURE" \
  -H "Content-Type: application/json" \
  -d '{
      "data": {}
  }'

Get child tenant details

GET /bizzlink/tenants/{id}
Returns details of a specific child tenant.

Responses

StatusDescription
200Tenant details
403Caller is not a partner or tenant is not a child
404Tenant not found

Response Body JsonApiDocumentTenantResponseAttributes

FieldTypeDescription
JsonApiResourceTenantResponseAttributes
cURL Request
curl -X GET https://gateway.vigasoft.lu/bizzlink/tenants/{id} \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "X-Bizzlink-Signature: t=$TIMESTAMP,v1=$SIGNATURE"
Response 200 OK
{
    "data": {
      "attributes": {
        "active": true,
        "addressCity": "string",
        "addressCountry": "LU",
        "addressPostalCode": "string",
        "addressStreet": "string",
        "billingModel": "SEATS",
        "companyName": "Kunde GmbH",
        "contactEmail": "max@kunde.lu",
        "contactName": "Max Müller",
        "contactPhone": "+352 123 456",
        "createdAt": "2026-01-01T00:00:00Z",
        "tenantCode": "KUNDE-GMBH",
        "updatedAt": "2026-01-01T00:00:00Z"
    },
      "id": "770e8400-e29b-41d4-a716-446655440000",
      "type": "tenants"
  }
}

Update child tenant

PATCH /bizzlink/tenants/{id}
Updates an existing child tenant.

Request Body

FieldTypeDescription
requiredobject

Responses

StatusDescription
200Tenant updated
403Caller is not a partner or tenant is not a child
404Tenant not found

Response Body JsonApiDocumentTenantResponseAttributes

FieldTypeDescription
JsonApiResourceTenantResponseAttributes
cURL Request
curl -X PATCH https://gateway.vigasoft.lu/bizzlink/tenants/{id} \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "X-Bizzlink-Signature: t=$TIMESTAMP,v1=$SIGNATURE" \
  -H "Content-Type: application/json" \
  -d '{
      "data": {}
  }'
Response 200 OK
{
    "data": {
      "attributes": {
        "active": true,
        "addressCity": "string",
        "addressCountry": "LU",
        "addressPostalCode": "string",
        "addressStreet": "string",
        "billingModel": "SEATS",
        "companyName": "Kunde GmbH",
        "contactEmail": "max@kunde.lu",
        "contactName": "Max Müller",
        "contactPhone": "+352 123 456",
        "createdAt": "2026-01-01T00:00:00Z",
        "tenantCode": "KUNDE-GMBH",
        "updatedAt": "2026-01-01T00:00:00Z"
    },
      "id": "770e8400-e29b-41d4-a716-446655440000",
      "type": "tenants"
  }
}