Rekenbox

Rekenbox API

Check VAT and EORI numbers, IBANs, suppliers and UBL from your software. Use one credit balance.

Authentication

Create a key in your account. Send it only from your server in the Authorization header. Every key can be revoked immediately.

Authorization: Bearer YOUR_REKENBOX_API_KEY
Content-Type: application/json

Financial ratios and calculations with credits

Use GET /api/v1/calculations/tools for supported calculators, fields and the price. Results include formulas, warnings and all 21 financial ratios where applicable. POST /api/v1/calculations/credits costs 6 credits per successful calculation. Individual web calculations stay free.

POST /api/v1/calculations/credits
{ "requestId": "550e8400-e29b-41d4-a716-446655440100",
  "calculation": {
    "tool": "kengetallen",
    "input": { "company": "Example BV", "fiscalYear": "2026",
      "previousYear": "false", "profitMode": "calculate",
      "fixed": "60000", "stock": "20000", "debtors": "15000",
      "cash": "10000", "otherAssets": "5000", "equity": "50000",
      "longDebt": "30000", "creditors": "15000", "taxPayable": "5000",
      "otherDebt": "10000", "revenue": "240000", "purchases": "100000",
      "staff": "65000", "depreciation": "10000", "otherCosts": "30000",
      "interest": "3000", "tax": "6000", "netProfit": "26000",
      "capex": "15000", "shortBorrowings": "0", "nonOperatingAssets": "0" },
    "options": { "locale": "en", "version": "2026.1" }
  }
}

Fictional example: replace every account with your own figures. Amounts are euro strings; supply zero explicitly as "0". All required current fields and previousYear must be supplied. With previousYear "true", previous_ fields are required too. Use the current version from the catalog. Up to 120 sequential calls per minute. For 429 or 503, wait and retry with the same requestId and inputs. Within 24 hours, a successful request replays without a second debit; different inputs under the same ID return 409. Failures cost no credits. The response has result, creditCost and the shared usage.balance.

Financial plans use tool financieel-plan, exploitatiebegroting, investeringsbegroting or liquiditeitsbegroting. Explicitly supply every catalog field, including actuals and the VAT choice. The budget object contains 12 to 36 months; money amounts are cent strings. Reports remain indicative.

EORI and bulk checks

The routes below use the same personal API key and credit balance as VIES. The 10 free daily registry checks are shared by VIES, EORI and individual supplier checks. Bulk always costs 6 credits per completed row.

POST /api/v1/eori/check
{ "eori": "YOUR_PARTNER_EORI", "requestId": "550e8400-e29b-41d4-a716-446655440000" }

POST /api/v1/eori/bulk/check
{ "eori": "YOUR_PARTNER_EORI", "requestId": "550e8400-e29b-41d4-a716-446655440001" }

POST /api/v1/inspections/check
{ "requestId": "550e8400-e29b-41d4-a716-446655440002",
  "input": { "kind": "iban", "iban": "YOUR_PARTNER_IBAN" } }

POST /api/v1/inspections/check
{ "requestId": "550e8400-e29b-41d4-a716-446655440003",
  "input": { "kind": "ubl", "file": "<Invoice ...>...</Invoice>" } }

POST /api/v1/inspections/check
{ "requestId": "550e8400-e29b-41d4-a716-446655440004",
  "input": { "kind": "suppliers", "supplier": "Your reference",
    "vatId": "YOUR_PARTNER_VAT_ID", "eori": "YOUR_PARTNER_EORI", "iban": "YOUR_PARTNER_IBAN" } }

POST /api/v1/inspections/check
{ "requestId": "550e8400-e29b-41d4-a716-446655440005",
  "input": { "kind": "invoices", "supplier": "Example supplier", "number": "INV-001",
    "date": "2026-09-01", "net": "100", "vat": "21", "gross": "121",
    "rate": "21", "currency": "EUR", "iban": "" } }

Process one row per request, sequentially, up to 30 requests per minute. EORI supports EU + XI; GB returns HTTP 422. A supplier row may contain one or more identifiers and costs 6 credits total. Omit unavailable fields. UBL is limited to 1 MB per file. Invoice CSV supports EUR; use 0, 9, 21 or mixed for the VAT rate.

EORI returns source EU-EORI, status valid or invalid, eori, checkedAt, requestDate (YYYY-MM-DD) and optional name/address fields as null when unavailable. Technical checks return source Rekenbox, status clear or attention, findings and details. Both include charged, replayed, requestId and usage. IBAN confirms format and checksum only. HTTP 503 means no verdict and no debit.

For a single supplier check using free allowance, use /api/v1/inspections/single/check with kind suppliers. The batch API checks each document individually. Compare identity fields in your software to find duplicates or differing IBANs across documents; the website performs this comparison in its bulk overview. Set up monthly monitoring on the website.

Check a VAT number

Create a free API key in your personal account. VAT checks need no API subscription. You have 10 free checks per day; each completed check after that uses 6 credits. Your account and IP address jointly determine the free allowance. A new key does not reset it.

POST https://www.rekenbox.com/api/v1/vat/check

{
  "vatId": "YOUR_CUSTOMER_VAT_NUMBER",
  "requestId": "550e8400-e29b-41d4-a716-446655440000"
}

Use a new UUID as requestId for each new check. After a connection failure, retry with the same requestId and number. For 24 hours this returns the same result without a second debit. A different number with the same requestId returns HTTP 409. The check time remains that of the original result.

{
  "source": "VIES",
  "vatId": "YOUR_CUSTOMER_VAT_NUMBER",
  "status": "valid",
  "name": "EXAMPLE BUSINESS",
  "address": null,
  "checkedAt": "2026-09-06T09:00:00.000Z",
  "requestDate": "2026-09-06T09:00:00.000Z",
  "requestId": "550e8400-e29b-41d4-a716-446655440000",
  "charged": "free",
  "replayed": false,
  "usage": {
    "freeLimit": 10, "freeUsed": 1, "freeRemaining": 9,
    "creditsRemaining": 50, "creditsSpent": 0,
    "balance": { "remaining": 300, "spent": 0, "granted": 300 },
    "resetsAt": "2026-09-06T22:00:00.000Z", "timeZone": "Europe/Amsterdam"
  }
}

The response above is a fictional documentation example. Name and address may be absent. Both valid and invalid count as completed checks. A VIES outage, bad input or blocked request costs no allowance or credits.

GET https://www.rekenbox.com/api/v1/vat/usage

balance.remaining is your global credit balance. The existing creditsRemaining and creditsSpent fields remain counts of VAT checks for compatibility. This route does not debit anything. The daily allowance renews at midnight Europe/Amsterdam. Purchased credits do not expire. Insufficient balance returns HTTP 402 (vat_credits_required); an outage returns HTTP 503 (vies_unavailable). HTTP 429 is a temporary request limit, not a payment request. Wait for the Retry-After interval. At most 30 check requests per account per minute; shared VIES capacity may impose an earlier temporary limit.

Check a paid list

POST https://www.rekenbox.com/api/v1/vat/bulk/check

Send one VAT number and unique requestId per request using the same JSON as above. This route always uses 6 credits per completed check; free allowance remains untouched. Without purchased credits it returns HTTP 402, even with free allowance left. Deduplicate your list first, process numbers sequentially and reuse each number’s requestId when retrying. The website supports paste and CSV/TSV up to 250 rows. Pausing stops after the current request.

Existing calculation API: run a calculation

The calculation and bulk endpoints below remain part of previously purchased API licences. Credits do not grant access to them.

POST https://www.rekenbox.com/api/v1/calculate

{
  "tool": "btw",
  "input": { "amount": "100", "rate": "21", "mode": "add" },
  "options": { "year": 2026, "version": "2026.1", "locale": "nl" }
}

All input fields are strings. Input money amounts are euros; result fields of type money are whole cents as strings. The response contains result and usage.

Tools and field definitions

GET https://www.rekenbox.com/api/v1/tools

This returns supported tool IDs, fields, selection values, limits, years, versions, sources and assumptions. Unknown years or versions are rejected; Rekenbox does not silently substitute them.

Bulk

POST https://www.rekenbox.com/api/v1/bulk

{ "calculations": [
  { "tool": "btw", "input": { "amount": "100" } },
  { "tool": "iban", "input": { "iban": "NL91ABNA0417164300" } }
] }

At most ten calculations per request and 10 MB of source files. Each entry has ok and result or error. Failed entries do not count towards quota. Processing stops when the time limit is reached; unprocessed entries report bulk_time_limit.

Quota and errors

HTTPMeaning
400 / 422Check input, tool, year or format.
401Invalid or revoked key.
402Licence inactive for this feature.
429Monthly quota or request limit reached.
503Service busy or temporarily unavailable; retry later.

Quota are shared by all keys and bulk checks for the billing account per UTC calendar month. At most 120 requests per key per minute. No automatic overage charges. Supply source files in input.file as XML or CSV text; they are not retained after processing. Keep the result version with your application.