Error reference
Complete reference of all Beliq API error codes, HTTP statuses, and remediation guidance.
All API errors use the same response shape:
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable description of the error",
"details": {}
}
}| Field | Type | Description |
|---|---|---|
code |
string | Stable, machine-readable error code |
message |
string | Human-readable explanation |
details |
object? | Additional structured data (e.g. validation results for INVALID_INVOICE) |
incidentId |
string? | Support correlation ID, present on 5xx responses only. Quote it together with the x-request-id header when contacting support |
Error codes
| Code | HTTP Status | Meaning | Endpoints | Remediation |
|---|---|---|---|---|
VALIDATION_ERROR |
400 | Request body is invalid | All | Check required fields and types in the generate schema |
INVALID_INVOICE |
422 | Invoice data is structurally valid JSON but fails validation: EN 16931 or CIUS Schematron for UBL/CII, or authority XSD for Italy FatturaPA | /v1/generate |
Inspect details.validationResult.errors (and for FatturaPA, structural XSD findings where applicable) |
PROFILE_STANDARD_MISMATCH |
422 | The chosen profile is not allowed for the chosen standard |
/v1/generate |
Use a compatible combination — the response details includes standard, profile, and allowedProfiles. See the profile compatibility table. |
DOCUMENT_TYPE_STANDARD_MISMATCH |
422 | documentType: "creditnote" with a standard that does not accept CreditNote payloads — today fatturapa and facturae (invoices only). |
/v1/generate |
Inspect details.creditNoteCapableStandards; it lists standards that honour CreditNotes in the deployed engine (facturx, peppol-bis, xrechnung, zugferd, eslog). See the Peppol Credit notes section. |
UNSUPPORTED_FORMAT |
400 | The requested standard/profile/output combination is not supported | /v1/generate |
Check the supported combinations table |
PARSE_FAILED |
422 | Input file could not be parsed as a valid e-invoice | /v1/parse |
Verify the input is a well-formed UBL 2.1 or CII XML, or a ZUGFeRD / Factur-X hybrid PDF with an embedded CII attachment. FatturaPA and SDI messaggio inputs are not handled by parse — use /v1/validate for those. |
INVALID_XML |
422 | Input XML is malformed or fails schema validation | /v1/validate, /v1/parse |
Fix XML syntax and ensure it conforms to one of: UBL 2.1, CII D16B / D22B, Italy FatturaPA XSD graph (v1.4 runtime bundle) on /v1/validate, or Italy SDI MessaggiTypes v1.1 on /v1/validate |
AUTHENTICATION_REQUIRED |
401 | No API key provided or key format is invalid | All /v1/* |
Include Authorization: Bearer <key> or X-API-Key: <key> in the request headers |
INVALID_API_KEY |
403 | API key does not exist or has been revoked | All /v1/* |
Verify the API key in the dashboard. Generate a new key if it was revoked |
QUOTA_EXCEEDED |
429 | Monthly usage quota exhausted | /v1/generate, /v1/validate, /v1/parse |
Upgrade your subscription plan in the dashboard, or wait until the next billing period (Retry-After is the seconds until the next UTC calendar month) |
RATE_LIMITED |
429 | Too many requests in a short time window | All | Respect Retry-After and retry with backoff |
ENGINE_UNAVAILABLE |
503 | The e-invoice engine is temporarily unavailable | /v1/generate, /v1/validate, /v1/parse |
Retry after a short delay. If persistent, check the status page and contact support with the error.incidentId value |
INTERNAL_ERROR |
500 | Unexpected server error | All | Retry the request. If persistent, contact support with the error.incidentId value and the x-request-id response header |
PDF_TEMPLATE_AUTH_REQUIRED |
400 | pdfTemplateId was sent without an authenticated organization. Stored PDF templates are org-scoped, so they require an API key (the free, unauthenticated generator can use template: "standard" instead). |
/v1/generate |
Send the request with your Authorization: Bearer <key>, or drop pdfTemplateId and use template: "standard" for the built-in layout |
PDF_TEMPLATE_NOT_FOUND |
404 | The referenced pdfTemplateId does not exist in your organization |
/v1/generate |
Check the template’s ref in the dashboard under PDF templates |
PDF_TEMPLATE_INVALID |
422 | The stored template definition could not be parsed | /v1/generate |
Re-save the template in the dashboard designer; if it persists, contact support with the x-request-id |
Transmission errors (preview)
| Code | HTTP Status | Meaning | Remediation |
|---|---|---|---|
TRANSMISSION_DISABLED |
503 | Transmission is not enabled on this deployment. Returned by every transmission endpoint until managed delivery launches. | Build and validate the file today and deliver it through your own channel. Subscribe for the launch date. |
IDEMPOTENCY_KEY_REUSED |
409 | An Idempotency-Key was reused with a different request body. |
Use a fresh key for a different document, or resend the identical body to get the existing transmission back. See Idempotency. |
INBOX_UNKNOWN_PROVIDER |
404 | An inbound network callback referenced a provider that is not registered. | Provider-side authentication error, not reachable with an API key. |
INBOX_VERIFICATION_FAILED |
401 | An inbound network callback or document failed signature verification. | Provider-side authentication error, not reachable with an API key. |
HTTP status code summary
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request: invalid JSON, missing required fields, or unsupported format combination |
| 401 | Unauthorized: no API key or invalid key format |
| 403 | Forbidden: API key is revoked or does not exist |
| 404 | Not found: a referenced resource (e.g. a pdfTemplateId) does not exist in your organization |
| 409 | Conflict: an Idempotency-Key was reused with a different body (transmission, preview) |
| 422 | Unprocessable entity: input is syntactically valid but fails business rules or parsing |
| 429 | Too many requests: quota exceeded or rate limited |
| 500 | Internal server error |
| 503 | Service unavailable: engine is temporarily down, or transmission is not enabled |
INVALID_INVOICE details
INVALID_INVOICE includes a full validationResult in details, matching the validation result from /v1/validate:
{
"success": false,
"error": {
"code": "INVALID_INVOICE",
"message": "Invoice validation failed with 1 error",
"details": {
"validationResult": {
"valid": false,
"format": "cii",
"schematronVersion": "1.3.16",
"ciusVersion": "XRechnung-2.5.0",
"errors": [
{
"ruleId": "BR-DE-1",
"severity": "error",
"location": "/rsm:CrossIndustryInvoice",
"message": "An XRechnung invoice must contain a buyer reference (BT-10)."
}
],
"warnings": []
}
}
}
}PROFILE_STANDARD_MISMATCH details
PROFILE_STANDARD_MISMATCH includes the rejected combination so you can correct the request:
{
"success": false,
"error": {
"code": "PROFILE_STANDARD_MISMATCH",
"message": "Profile 'extended' is not allowed for standard 'peppol-bis'.",
"details": {
"standard": "peppol-bis",
"profile": "extended",
"allowedProfiles": ["peppol"]
}
}
}DOCUMENT_TYPE_STANDARD_MISMATCH details
DOCUMENT_TYPE_STANDARD_MISMATCH is returned when documentType: "creditnote" is sent for a standard that only supports invoices — notably fatturapa and facturae. The four EN 16931 hybrid/XML routes peppol-bis, facturx, xrechnung, and zugferd accept CreditNotes, as does the national eslog route (document type code 381 on the same e-SLOG message). Inspect creditNoteCapableStandards in error details; it mirrors the deployed engine capability set.
{
"success": false,
"error": {
"code": "DOCUMENT_TYPE_STANDARD_MISMATCH",
"message": "documentType='creditnote' is not supported for standard 'fatturapa'. Accepted for CreditNote payloads: ['facturx', 'peppol-bis', 'xrechnung', 'zugferd'].",
"details": {
"standard": "fatturapa",
"documentType": "creditnote",
"creditNoteCapableStandards": ["facturx", "peppol-bis", "xrechnung", "zugferd"]
}
}
}PDF template errors
These are returned only when a pdfTemplateId is referenced on POST /v1/generate. Stored templates are designed in the dashboard and are scoped to your organization, so they require an authenticated request.
| Code | When | Fix |
|---|---|---|
PDF_TEMPLATE_AUTH_REQUIRED |
pdfTemplateId sent on an unauthenticated request |
Use your API key, or switch to template: "standard" |
PDF_TEMPLATE_NOT_FOUND |
The ref is not a template in your organization | Verify the ref in the dashboard |
PDF_TEMPLATE_INVALID |
The stored definition is corrupt and cannot be rendered | Re-save the template in the designer |
{
"success": false,
"error": {
"code": "PDF_TEMPLATE_NOT_FOUND",
"message": "PDF template k3d-9mp was not found."
}
}Request ID and incident ID
Every API response includes an x-request-id header (UUID). Share this value with support for faster troubleshooting.
x-request-id: 7f3d2a1b-4e5c-6d7f-8a9b-0c1d2e3f4a5bServer-side failures (HTTP 500 and 503) additionally carry an error.incidentId in the response body. It links the response directly to the captured error event on our side, so quoting it in a support request is the fastest path to a diagnosis:
{
"success": false,
"error": {
"code": "ENGINE_UNAVAILABLE",
"message": "The e-invoice processing service is temporarily unavailable. Please try again shortly.",
"incidentId": "V7mKp2XwQd"
}
}