Violations
A violation identifies a problem that stops a document. Retrieve it with GET /transfer-documents/{id}. The response includes a violations array, empty when no problems were found.
Problems found while reading a file or converting a CSV are reported on the uploaded file, and Transfer does not send the failed file or row. Other rows can continue processing.
The violation object
{
"code": "INPUT_FIELD_MISSING",
"field": "split_payment",
"value": null,
"message": "Input field \"split_payment\" not found in the header",
"context": {"row": 2},
"occurred_at": "2026-05-05T15:30:07+00:00"
}
| Field | Meaning |
|---|---|
code | A stable identifier you can use in your application. See Codes. |
field | The affected input field or XML element, when applicable. |
value | The value that caused the problem, when applicable. |
message | A human-readable explanation, in English. |
context | Additional details, such as the CSV row number or expected format. |
occurred_at | When the problem was found, in UTC. |
For CSV files, context.row identifies the affected row. The header is row 1; data starts at row 2. For multi-line invoices, it identifies the invoice's first row.
Where violations land
Violations appear on different documents depending on where processing failed:
- Parsing: file-level problems, such as separator, encoding, or size, stop the uploaded file.
- Mapping: conversion problems are reported on the uploaded file, with one violation per failed row. That row is not sent.
- Transmission: a destination rejection stops the invoice's document and includes the details returned by the destination.
To include parsing and mapping failures, query all documents:
| What you want | Route |
|---|---|
| Everything that failed, including your files | GET /transfer-documents?status=failed |
| Only what the destination refused | GET /target-documents?status=failed |
| The violations of one document | GET /transfer-documents/{id} |
See Tracking via API.
Codes
Use the code to identify the problem and the English message for details about the affected field or value.
| Code | Step | When it happens | What to do |
|---|---|---|---|
CSV_EMPTY | Parsing | The CSV file is empty. A file with only a header does not raise this code. | Upload a file with a header and at least one data row. |
CSV_ENCODING | Parsing | The file cannot be read as UTF-8, and the automatic conversion could not repair it. | Save the file as UTF-8 and upload it again. |
CSV_CONFIG_NOT_FOUND | Parsing | Your account has no CSV configuration. | Contact A-Cube to check your account configuration. |
CSV_PARSE_ERROR | Parsing | Rows have different column counts, or quoting or escaping is invalid. | Check the separator, quotes, escape character, and column count in every row. |
CSV_SEPARATOR_MISMATCH | Parsing | The separator in the file is not the one the format expects. The message names the detected and the expected separator. | Use the separator of your destination's format. |
CSV_SIZE_EXCEEDED | Parsing | The file has more than 500 data rows, blank rows excluded. | Split the file into files of at most 500 rows. |
INPUT_FIELD_MISSING | Mapping | A required CSV column or UBL element is missing. The message identifies it. | Add the column with its exact name, or add the missing element. |
INPUT_DATE_FORMAT | Mapping | A date does not match the format of the destination. The message states the expected format. | Use the date format of your destination's format. |
INPUT_VALUE_NOT_ALLOWED | Mapping | A value is outside the allowed set. The message lists the allowed values. | Use one of the allowed values. |
INPUT_VALUE_NEGATIVE | Mapping | A unit price or a line amount is negative in a UBL document. | Correct the amounts: prices and totals of a line must be zero or positive. |
MAPPING_VALIDATION | Mapping | A required input field is empty or missing. The message names the field. | Fill the field. |
OUTPUT_SIZE_EXCEEDED | Mapping | The generated document exceeds the destination's size limit. | Reduce the number of lines or the attachment size. |
PROCESSING_ERROR | Mapping | The conversion failed without a more specific code. | Read the message, and contact A-Cube if it is not actionable. |
VALIDATION_ERROR | Transmission | The destination rejected the fiscal data or XML structure. | Correct the field named in each entry and upload the document again. |
FIELDS_MISSING | Transmission | An element the destination requires is not in the XML. The message names it. | Add the missing element to the XML. |
FILE_TOO_LARGE | Transmission | The XML is over the size limit of the destination, listed on its destination page. | Reduce the size of the document, or remove its embedded attachments. |
DOCTYPE_UNSUPPORTED | Transmission | The destination does not accept the document type of the file (Peppol). | Check the document type and upload the file again. |
TRANSMISSION_ERROR | Transmission | A-Cube's service for the destination could not be reached or gave no usable answer (Peppol). | Upload the file again later, and contact A-Cube if it happens again. |
UNSPECIFIED_ERROR | Transmission | Transfer received a processing error without usable details. | Read the message and contact A-Cube if you cannot resolve it. |
INTERNAL_ERROR | Transmission | A-Cube's service for the destination reported an internal problem, or Transfer met an unexpected error (Peppol). | Upload the file again and contact A-Cube if it happens again. |
Rejections after Transfer
Violations describe failures before the destination receives the document. A later rejection by the destination, such as SdI, adds no violation and leaves the document transmitted. See Outcome after Transfer.
Resending the failed rows
Correct the failed rows and upload a new CSV containing only the failed invoices. Resending the whole file can transmit successful invoices twice.
Name the new file so that the duplicate check of your destination does not skip it.