# 🔍 Validate invoice data without creating draft Validate invoice data against EN16931 requirements without creating a draft. Returns detailed validation results with specific error messages and suggestions. This endpoint helps identify issues before submitting invoice data. Use this for: - Pre-validation before creating a draft - Checking data quality during form input - Understanding validation requirements Endpoint: POST /drafts/validate-data Version: 1.0.0 ## Header parameters: - `X-PDP-Client-Id` (string, required) ID of the PDP Client for which the operation is performed ## Request fields (application/json): - `invoice_data` (object, required) Invoice data to validate - `invoice_data.specification_identifier` (string) Specification identifier (BT-24) - `invoice_data.issue_date` (string, required) Invoice issue date (BT-2) - `invoice_data.due_date` (any) Payment due date (BT-9) - `invoice_data.type_code` (string, required) Invoice type code (BT-3) Enum: "380", "381", "383", "384" - `invoice_data.currency_code` (string, required) Invoice currency code (BT-5) - ISO 4217 - `invoice_data.tax_point_date` (any) Tax point date (BT-7) - `invoice_data.value_added_tax_point_date` (any) Value added tax point date (BT-8) - `invoice_data.business_process_type` (any) Business process type (BT-23) - `invoice_data.purchase_order_reference` (any) Purchase order reference (BT-13) - `invoice_data.sales_order_reference` (any) Sales order reference (BT-14) - `invoice_data.receiving_advice_reference` (any) Receiving advice reference (BT-15) - `invoice_data.despatch_advice_reference` (any) Despatch advice reference (BT-16) - `invoice_data.tender_or_lot_reference` (any) Tender or lot reference (BT-17) - `invoice_data.invoice_object_identifier` (any) Invoiced object identifier (BT-18) - `invoice_data.buyer_accounting_reference` (any) Buyer accounting reference (BT-19) - `invoice_data.project_reference` (any) Project reference (BT-11) - `invoice_data.contract_reference` (any) Contract reference (BT-12) - `invoice_data.seller` (object, required) Seller party information (BG-4) - `invoice_data.seller.name` (string, required) Party name - `invoice_data.seller.postal_address` (object, required) - `invoice_data.seller.postal_address.street_name` (any) - `invoice_data.seller.postal_address.additional_street_name` (any) - `invoice_data.seller.postal_address.city_name` (string, required) - `invoice_data.seller.postal_address.postal_zone` (any) - `invoice_data.seller.postal_address.country_subdivision` (any) - `invoice_data.seller.postal_address.country_code` (string, required) ISO 3166-1 alpha-2 country code - `invoice_data.seller.electronic_address` (any) - `invoice_data.seller.tax_registrations` (any) - `invoice_data.seller.legal_registration_name` (any) - `invoice_data.seller.trading_name` (any) - `invoice_data.seller.party_identifier` (any) Party identifier - `invoice_data.seller.party_identifier_scheme` (any) Party identifier scheme - `invoice_data.seller.seller_identifier` (any) Seller identifier (BT-29) - `invoice_data.seller.seller_identifier_scheme` (any) Seller identifier scheme (BT-30) - `invoice_data.seller.seller_vat_identifier` (any) Seller VAT identifier (BT-31) - `invoice_data.seller.seller_tax_registration_identifier` (any) Seller tax registration identifier (BT-32) - `invoice_data.seller.seller_additional_legal_information` (any) Seller additional legal information (BT-33) - `invoice_data.buyer` (object, required) Buyer party information (BG-7) - `invoice_data.buyer.buyer_identifier` (any) Buyer identifier (BT-46) - `invoice_data.buyer.buyer_identifier_scheme` (any) Buyer identifier scheme (BT-47) - `invoice_data.buyer.buyer_legal_registration_identifier` (any) Buyer legal registration identifier (BT-47) - `invoice_data.buyer.buyer_vat_identifier` (any) Buyer VAT identifier (BT-48) - `invoice_data.invoice_lines` (array, required) Invoice lines (BG-25) - `invoice_data.invoice_lines.line_id` (string, required) Invoice line identifier - `invoice_data.invoice_lines.invoiced_quantity` (any, required) Invoiced quantity - `invoice_data.invoice_lines.unit_of_measure` (string, required) Unit of measure code - `invoice_data.invoice_lines.line_net_amount` (any, required) Invoice line net amount - `invoice_data.invoice_lines.item_name` (string, required) Item name - `invoice_data.invoice_lines.item_description` (any) - `invoice_data.invoice_lines.item_price` (any, required) Item net price - `invoice_data.invoice_lines.vat_category_code` (string, required) Enum: "S", "Z", "E", "AE", "K", "O" - `invoice_data.invoice_lines.vat_rate` (any) VAT rate as percentage - `invoice_data.vat_breakdowns` (array, required) VAT breakdown (BG-23) - `invoice_data.vat_breakdowns.category_code` (string, required) Enum: "S", "Z", "E", "AE", "K", "O" - `invoice_data.vat_breakdowns.rate` (any) VAT rate as percentage - `invoice_data.vat_breakdowns.taxable_amount` (any, required) VAT taxable amount - `invoice_data.vat_breakdowns.tax_amount` (any, required) VAT amount - `invoice_data.vat_breakdowns.exemption_reason` (any) - `invoice_data.document_totals` (object, required) Document level totals (BG-22) - `invoice_data.document_totals.sum_of_line_net_amounts` (any, required) Sum of Invoice line net amount (BT-106) - `invoice_data.document_totals.sum_of_allowances` (any) Sum of allowances on document level - `invoice_data.document_totals.sum_of_charges` (any) Sum of charges on document level - `invoice_data.document_totals.invoice_total_without_vat` (any, required) Invoice total amount without VAT (BT-109) - `invoice_data.document_totals.invoice_total_vat_amount` (any, required) Invoice total VAT amount (BT-110) - `invoice_data.document_totals.invoice_total_with_vat` (any, required) Invoice total amount with VAT (BT-112) - `invoice_data.document_totals.paid_amount` (any) Paid amount - `invoice_data.document_totals.rounding_amount` (any) Rounding amount - `invoice_data.document_totals.amount_due_for_payment` (any, required) Amount due for payment (BT-115) - `invoice_data.payment_terms` (any) Payment instructions (BG-16) - `invoice_data.order_reference` (any) Deprecated: use purchase_order_reference instead - `invoice_data.invoice_note` (any) Invoice note (BT-22) - `invoice_data.preceding_invoice_reference` (any) For credit notes - reference to original invoice (BT-25) - `strict_mode` (boolean) Whether to apply strict EN16931 validation ## Response 200 fields (application/json): - `is_valid` (boolean, required) Whether the invoice data is valid - `issues` (array, required) List of validation issues found - `issues.field_path` (string, required) JSON path to the problematic field (e.g., 'seller.postal_address.country_code') - `issues.error_code` (string, required) Machine-readable error code (e.g., 'INVALID_COUNTRY_CODE') - `issues.error_message` (string, required) Human-readable error message - `issues.severity` (string, required) Issue severity: 'error', 'warning', or 'info' - `issues.suggested_value` (any) Suggested correct value if applicable - `total_errors` (integer, required) Total number of errors - `total_warnings` (integer, required) Total number of warnings - `en16931_compliant` (boolean, required) Whether the invoice meets EN16931 requirements - `summary` (string, required) Human-readable validation summary ## Response 400 fields (application/json): - `error` (string, required) - `code` (integer, required) - `trace_id` (string, required) ## Response 401 fields (application/json): - `error` (string, required) - `code` (integer, required) - `trace_id` (string, required) ## Response 422 fields (application/json): - `detail` (array) - `detail.loc` (array, required) - `detail.msg` (string, required) - `detail.type` (string, required)