{"openapi":"3.1.0","info":{"title":"Factur-X API","summary":"Generate, embed, validate and extract Factur-X / EN 16931 e-invoices (FR/EU).","description":"REST API for French and EU electronic invoicing. Same engine is exposed to AI agents over MCP at `/mcp`. Human documentation: [/docs](/docs/).","contact":{"name":"Factur-X API","url":"https://facturx.orvel.dev/"},"version":"0.1.2"},"paths":{"/v1/invoices/generate":{"post":{"tags":["e-invoicing"],"summary":"Generate a Factur-X PDF or CII/UBL XML from invoice JSON","operationId":"generate_v1_invoices_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}},"required":true},"responses":{"200":{"description":"Binary document by default; JSON envelope (base64) when Accept: application/json","content":{"application/json":{"schema":{"$defs":{"FindingOut":{"properties":{"source":{"type":"string","title":"Source"},"severity":{"type":"string","enum":["fatal","warning","info"],"title":"Severity"},"rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rule"},"message":{"type":"string","title":"Message"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"test":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Test"}},"type":"object","required":["source","severity","rule","message"],"title":"FindingOut"},"ValidationOut":{"properties":{"valid":{"type":"boolean","title":"Valid"},"flavor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Flavor"},"profile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile"},"checks_run":{"items":{"type":"string"},"type":"array","title":"Checks Run"},"checks_skipped":{"items":{"type":"string"},"type":"array","title":"Checks Skipped"},"error_count":{"type":"integer","title":"Error Count"},"warning_count":{"type":"integer","title":"Warning Count"},"findings":{"items":{"$ref":"#/$defs/FindingOut"},"type":"array","title":"Findings"},"pdf":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pdf"}},"type":"object","required":["valid","flavor","profile","checks_run","checks_skipped","error_count","warning_count","findings"],"title":"ValidationOut"}},"properties":{"filename":{"type":"string","title":"Filename"},"media_type":{"type":"string","title":"Media Type"},"profile":{"type":"string","title":"Profile"},"output":{"type":"string","title":"Output"},"content_base64":{"type":"string","title":"Content Base64"},"totals":{"additionalProperties":true,"type":"object","title":"Totals"},"validation":{"$ref":"#/$defs/ValidationOut"}},"type":"object","required":["filename","media_type","profile","output","content_base64","totals","validation"],"title":"GenerateJsonOut"}},"application/pdf":{},"application/xml":{}}},"400":{"description":"Invalid input or business-rule failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"402":{"description":"Monthly quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"503":{"description":"Validation engine temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invoices/preview-xml":{"post":{"tags":["e-invoicing"],"summary":"Generate the CII XML only, without schematron check (fast, for debugging mappings)","operationId":"preview_xml_v1_invoices_preview_xml_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input or business-rule failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"402":{"description":"Monthly quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"503":{"description":"Validation engine temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invoices/embed":{"post":{"tags":["e-invoicing"],"summary":"Embed a Factur-X XML into an existing PDF (PDF/A-3)","operationId":"embed_v1_invoices_embed_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_embed_v1_invoices_embed_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}},"application/pdf":{}}},"400":{"description":"Invalid input or business-rule failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"402":{"description":"Monthly quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"503":{"description":"Validation engine temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invoices/validate":{"post":{"tags":["e-invoicing"],"summary":"Validate a Factur-X PDF, CII XML or UBL XML (XSD + schematron)","operationId":"validate_v1_invoices_validate_post","parameters":[{"name":"check","in":"query","required":false,"schema":{"enum":["base","fr-ctc"],"type":"string","description":"Rule set: EN 16931 only or + French CTC rules","default":"fr-ctc","title":"Check"},"description":"Rule set: EN 16931 only or + French CTC rules"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_validate_v1_invoices_validate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationOut"}}}},"400":{"description":"Invalid input or business-rule failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"402":{"description":"Monthly quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"503":{"description":"Validation engine temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invoices/extract":{"post":{"tags":["e-invoicing"],"summary":"Extract the embedded XML and key fields from a Factur-X PDF or e-invoice XML","operationId":"extract_v1_invoices_extract_post","parameters":[{"name":"include_xml","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Xml"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_extract_v1_invoices_extract_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractOut"}}}},"400":{"description":"Invalid input or business-rule failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"402":{"description":"Monthly quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"503":{"description":"Validation engine temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/schema/invoice":{"get":{"tags":["e-invoicing"],"summary":"JSON Schema of the invoice input","operationId":"invoice_schema_v1_schema_invoice_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/schema/options":{"get":{"tags":["e-invoicing"],"summary":"JSON Schema of the generation options","operationId":"options_schema_v1_schema_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/plans":{"get":{"tags":["e-invoicing"],"summary":"Public plan catalog with self-service checkout links","operationId":"plans_v1_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/checkout/{plan}":{"get":{"tags":["e-invoicing"],"summary":"Redirect to Stripe Checkout for a plan","operationId":"checkout_v1_checkout__plan__get","parameters":[{"name":"plan","in":"path","required":true,"schema":{"type":"string","title":"Plan"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/session/{session_id}":{"get":{"tags":["e-invoicing"],"summary":"Return the API key after a successful Stripe Checkout","operationId":"checkout_session_v1_billing_session__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/portal":{"post":{"tags":["e-invoicing"],"summary":"Open the Stripe customer portal for this API key","operationId":"billing_portal_v1_billing_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/usage":{"get":{"tags":["e-invoicing"],"summary":"Current monthly usage for the API key","operationId":"usage_v1_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageOut"}}}}}}}},"components":{"schemas":{"AdditionalDocument":{"properties":{"id":{"type":"string","title":"Id","description":"BT-122"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"BT-123"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"BT-124"}},"additionalProperties":false,"type":"object","required":["id"],"title":"AdditionalDocument"},"Address":{"properties":{"line1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line1","description":"BT-35 / BT-50"},"line2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line2","description":"BT-36 / BT-51"},"line3":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line3","description":"BT-162 / BT-163"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"BT-37 / BT-52"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code","description":"BT-38 / BT-53"},"country_subdivision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Subdivision","description":"BT-39 / BT-54"},"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country","description":"ISO 3166-1 alpha-2, BT-40 / BT-55"}},"additionalProperties":false,"type":"object","required":["country"],"title":"Address"},"AllowanceCharge":{"properties":{"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Amount","description":"BT-92 / BT-99, tax excluded"},"base_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Base Amount","description":"BT-93 / BT-100"},"percentage":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,8}0*$)\\d{0,3}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Percentage","description":"BT-94 / BT-101"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"BT-97 / BT-104"},"reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason Code","description":"UNTDID 5189 / 7161, BT-98 / BT-105"},"vat_category":{"$ref":"#/components/schemas/VatCategory","description":"BT-95 / BT-102","default":"S"},"vat_rate":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,8}0*$)\\d{0,3}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Vat Rate","description":"BT-96 / BT-103"}},"additionalProperties":false,"type":"object","required":["amount"],"title":"AllowanceCharge","description":"Document-level allowance (BG-20) or charge (BG-21)."},"Body_embed_v1_invoices_embed_post":{"properties":{"pdf":{"type":"string","contentMediaType":"application/octet-stream","title":"Pdf","description":"The visual PDF invoice"},"xml":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Xml","description":"Factur-X / CII XML (alternative to invoice_json)"},"invoice_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Json","description":"Invoice JSON to generate the XML from"},"profile":{"$ref":"#/components/schemas/Profile","default":"en16931"},"check":{"type":"string","enum":["base","fr-ctc"],"title":"Check","default":"fr-ctc"},"language":{"type":"string","enum":["fr","en"],"title":"Language","default":"fr"}},"type":"object","required":["pdf"],"title":"Body_embed_v1_invoices_embed_post"},"Body_extract_v1_invoices_extract_post":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"}},"type":"object","title":"Body_extract_v1_invoices_extract_post"},"Body_validate_v1_invoices_validate_post":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"}},"type":"object","title":"Body_validate_v1_invoices_validate_post"},"Contact":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"BT-41 / BT-56"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department","description":"BT-41-0 / BT-56-0 (used when name is empty)"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"BT-42 / BT-57"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"BT-43 / BT-58"}},"additionalProperties":false,"type":"object","title":"Contact"},"Delivery":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Deliver-to party name, BT-70"},"location_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id","description":"BT-71"},"location_id_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id Scheme","description":"BT-71-1"},"address":{"anyOf":[{"$ref":"#/components/schemas/Address"},{"type":"null"}]},"actual_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Actual Date","description":"BT-72"},"period_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Period Start","description":"BT-73"},"period_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Period End","description":"BT-74"}},"additionalProperties":false,"type":"object","title":"Delivery"},"ErrorOut":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"details":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Details"}},"type":"object","required":["code","message"],"title":"ErrorOut"},"ExtractOut":{"properties":{"flavor":{"type":"string","title":"Flavor"},"profile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile"},"guideline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guideline"},"xml_filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Xml Filename"},"fields":{"additionalProperties":true,"type":"object","title":"Fields"},"pdf":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pdf"},"xml":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Xml"}},"type":"object","required":["flavor","profile","guideline","xml_filename","fields","pdf"],"title":"ExtractOut"},"FindingOut":{"properties":{"source":{"type":"string","title":"Source"},"severity":{"type":"string","enum":["fatal","warning","info"],"title":"Severity"},"rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rule"},"message":{"type":"string","title":"Message"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"test":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Test"}},"type":"object","required":["source","severity","rule","message"],"title":"FindingOut"},"FrenchMentions":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Add the three mandatory French mentions when missing","default":true},"late_payment_penalties":{"type":"string","title":"Late Payment Penalties","description":"Note code PMD","default":"Tout retard de paiement entraîne une pénalité exigible à compter de la date d'échéance, calculée sur la base de trois fois le taux d'intérêt légal."},"recovery_fee":{"type":"string","title":"Recovery Fee","description":"Note code PMT","default":"Indemnité forfaitaire pour frais de recouvrement en cas de retard de paiement : 40 €."},"early_payment_discount":{"type":"string","title":"Early Payment Discount","description":"Note code AAB","default":"Pas d'escompte pour paiement anticipé."}},"additionalProperties":false,"type":"object","title":"FrenchMentions","description":"Legal mentions required on French B2B invoices (BR-FR-05). Added as BG-1 notes with codes PMD, PMT, AAB."},"GenerateOptions":{"properties":{"profile":{"$ref":"#/components/schemas/Profile","description":"Factur-X profile / EN 16931 conformance level","default":"en16931"},"output":{"$ref":"#/components/schemas/OutputFormat","description":"facturx-pdf, cii-xml or ubl-xml","default":"facturx-pdf"},"language":{"$ref":"#/components/schemas/Language","description":"Language of the visual PDF","default":"fr"},"check":{"type":"string","enum":["base","fr-ctc"],"title":"Check","description":"Schematron rule set to enforce","default":"fr-ctc"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"HTTPS URL of a PNG/SVG logo for the PDF header"},"accent_color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","title":"Accent Color","default":"#1f3a5f"},"footer_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Footer Text","description":"Free text in the PDF footer"}},"additionalProperties":false,"type":"object","title":"GenerateOptions"},"GenerateRequest":{"properties":{"invoice":{"$ref":"#/components/schemas/Invoice"},"options":{"$ref":"#/components/schemas/GenerateOptions"}},"type":"object","required":["invoice"],"title":"GenerateRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Invoice":{"properties":{"number":{"type":"string","maxLength":35,"pattern":"^[A-Za-z0-9._/\\-]+$","title":"Number","description":"BT-1 (BR-FR-01/02: max 35 chars, letters, digits, . _ / -)"},"issue_date":{"type":"string","format":"date","title":"Issue Date","description":"BT-2"},"type_code":{"type":"string","enum":["380","381","384","386","389","261","751"],"title":"Type Code","description":"UNTDID 1001, BT-3: 380 invoice, 381 credit note, 384 corrected, 386 prepayment, 389 self-billed","default":"380"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency","description":"BT-5","default":"EUR"},"vat_accounting_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vat Accounting Currency","description":"BT-6"},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date","description":"BT-9"},"tax_point_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Tax Point Date","description":"BT-7"},"buyer_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Buyer Reference","description":"BT-10"},"project_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Reference","description":"BT-11"},"contract_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contract Reference","description":"BT-12"},"purchase_order_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purchase Order Reference","description":"BT-13"},"sales_order_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sales Order Reference","description":"BT-14"},"receiving_advice_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receiving Advice Reference","description":"BT-15"},"despatch_advice_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Despatch Advice Reference","description":"BT-16"},"tender_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Reference","description":"BT-17"},"buyer_accounting_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Buyer Accounting Reference","description":"BT-19"},"payment_terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Terms","description":"BT-20"},"operation_type":{"type":"string","enum":["goods","services","mixed"],"title":"Operation Type","description":"Nature of the operation, used to derive the French business process code BT-23 (B1/S1/M1)","default":"services"},"already_paid":{"type":"boolean","title":"Already Paid","description":"Invoice already paid at issuance (French BT-23 variants B2/S2/M2)","default":false},"business_process":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Process","description":"Explicit BT-23 business process code (e.g. S1). Overrides operation_type/already_paid."},"french_mentions":{"$ref":"#/components/schemas/FrenchMentions","description":"Mandatory French legal mentions (BR-FR-05)"},"notes":{"items":{"$ref":"#/components/schemas/Note"},"type":"array","title":"Notes","description":"BG-1"},"seller":{"$ref":"#/components/schemas/Party","description":"BG-4"},"buyer":{"$ref":"#/components/schemas/Party","description":"BG-7"},"delivery":{"anyOf":[{"$ref":"#/components/schemas/Delivery"},{"type":"null"}],"description":"BG-13"},"payment":{"anyOf":[{"$ref":"#/components/schemas/Payment"},{"type":"null"}],"description":"BG-16"},"preceding_invoices":{"items":{"$ref":"#/components/schemas/PrecedingInvoice"},"type":"array","title":"Preceding Invoices","description":"BG-3"},"additional_documents":{"items":{"$ref":"#/components/schemas/AdditionalDocument"},"type":"array","title":"Additional Documents","description":"BG-24"},"allowances":{"items":{"$ref":"#/components/schemas/AllowanceCharge"},"type":"array","title":"Allowances","description":"BG-20"},"charges":{"items":{"$ref":"#/components/schemas/AllowanceCharge"},"type":"array","title":"Charges","description":"BG-21"},"lines":{"items":{"$ref":"#/components/schemas/Line"},"type":"array","minItems":1,"title":"Lines","description":"BG-25"},"totals":{"anyOf":[{"$ref":"#/components/schemas/Totals"},{"type":"null"}],"description":"BG-22, computed when omitted"},"prepaid_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Prepaid Amount","description":"BT-113 shortcut when totals are computed"},"rounding_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Rounding Amount","description":"BT-114 shortcut when totals are computed"},"tax_exemption_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Exemption Reason","description":"Default BT-120 text for E/AE/K/G/O categories, e.g. 'TVA non applicable, art. 293 B du CGI'"},"tax_exemption_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Exemption Reason Code","description":"Default BT-121 VATEX code"}},"additionalProperties":false,"type":"object","required":["number","issue_date","seller","buyer","lines"],"title":"Invoice"},"Language":{"type":"string","enum":["fr","en"],"title":"Language"},"Line":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"BT-126, auto-numbered when omitted"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note","description":"BT-127"},"item_name":{"type":"string","title":"Item Name","description":"BT-153"},"item_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Description","description":"BT-154"},"seller_item_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seller Item Id","description":"BT-155"},"buyer_item_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Buyer Item Id","description":"BT-156"},"standard_item_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Standard Item Id","description":"BT-157, e.g. EAN/GTIN"},"standard_item_id_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Standard Item Id Scheme","description":"BT-157-1, e.g. 0160 = GTIN"},"origin_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Country","description":"BT-159"},"attributes":{"additionalProperties":{"type":"string"},"type":"object","title":"Attributes","description":"BG-32 item attributes"},"quantity":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,13}|(?=[\\d.]{1,20}0*$)\\d{0,13}\\.\\d{0,6}0*$)"}],"title":"Quantity","description":"BT-129"},"unit_code":{"type":"string","title":"Unit Code","description":"UN/ECE Rec 20, BT-130 (C62 unit, HUR hour, DAY, KGM, MTR, LTR...)","default":"C62"},"unit_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Unit Price","description":"Net unit price, BT-146"},"gross_unit_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Gross Unit Price","description":"BT-148"},"price_discount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Price Discount","description":"BT-147"},"price_base_quantity":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,13}|(?=[\\d.]{1,20}0*$)\\d{0,13}\\.\\d{0,6}0*$)"},{"type":"null"}],"title":"Price Base Quantity","description":"BT-149"},"price_base_unit_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Base Unit Code","description":"BT-150"},"vat_category":{"$ref":"#/components/schemas/VatCategory","description":"BT-151","default":"S"},"vat_rate":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,8}0*$)\\d{0,3}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Vat Rate","description":"BT-152, required for category S"},"allowances":{"items":{"$ref":"#/components/schemas/LineAllowanceCharge"},"type":"array","title":"Allowances","description":"BG-27"},"charges":{"items":{"$ref":"#/components/schemas/LineAllowanceCharge"},"type":"array","title":"Charges","description":"BG-28"},"period_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Period Start","description":"BT-134"},"period_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Period End","description":"BT-135"},"order_line_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Line Reference","description":"BT-132"},"buyer_accounting_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Buyer Accounting Reference","description":"BT-133"},"net_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Net Amount","description":"BT-131. Computed as quantity x unit_price / base_qty - allowances + charges when omitted"}},"additionalProperties":false,"type":"object","required":["item_name","quantity","unit_price"],"title":"Line"},"LineAllowanceCharge":{"properties":{"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Amount","description":"BT-136 / BT-141"},"base_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Base Amount","description":"BT-137 / BT-142"},"percentage":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,8}0*$)\\d{0,3}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Percentage","description":"BT-138 / BT-143"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"BT-139 / BT-144"},"reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason Code","description":"BT-140 / BT-145"}},"additionalProperties":false,"type":"object","required":["amount"],"title":"LineAllowanceCharge"},"Note":{"properties":{"text":{"type":"string","title":"Text","description":"BT-22"},"subject_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Code","description":"UNTDID 4451 code, BT-21 (e.g. AAI general, PMT payment, PMD penalties)"}},"additionalProperties":false,"type":"object","required":["text"],"title":"Note"},"OutputFormat":{"type":"string","enum":["facturx-pdf","cii-xml","ubl-xml"],"title":"OutputFormat"},"Party":{"properties":{"name":{"type":"string","title":"Name","description":"Legal name, BT-27 / BT-44"},"trading_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trading Name","description":"BT-28 / BT-45"},"siren":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Siren","description":"French SIREN (9 digits). Written as legal registration id BT-30 / BT-47 with scheme 0002."},"legal_registration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Registration Id","description":"BT-30 / BT-47 when not a SIREN. Ignored if siren is set."},"legal_registration_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Registration Scheme","description":"ISO 6523 ICD for legal_registration_id (BT-30-1 / BT-47-1), e.g. 0002 = SIREN"},"vat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vat Id","description":"BT-31 / BT-48, e.g. FR12345678901"},"electronic_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Electronic Address","description":"BT-34 / BT-49"},"electronic_address_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Electronic Address Scheme","description":"EAS code for electronic_address (BT-34-1 / BT-49-1), e.g. 0225 = SIRET (FR)"},"siret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Siret","description":"French SIRET (14 digits). Shortcut for electronic_address with scheme 0225."},"global_ids":{"additionalProperties":{"type":"string"},"type":"object","title":"Global Ids","description":"BT-29 / BT-46: {schemeID: identifier}, e.g. {'0009': SIRET}"},"tax_registration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Registration Id","description":"Seller only, BT-32"},"legal_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Info","description":"Seller only, BT-33: legal form, share capital, RCS city..."},"address":{"$ref":"#/components/schemas/Address"},"contact":{"anyOf":[{"$ref":"#/components/schemas/Contact"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["name","address"],"title":"Party"},"Payment":{"properties":{"means_code":{"type":"string","title":"Means Code","description":"UNTDID 4461, BT-81. 30 credit transfer, 58 SEPA transfer, 59 SEPA direct debit, 48 card","default":"30"},"means_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Means Text","description":"BT-82"},"remittance_information":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remittance Information","description":"BT-83"},"iban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iban","description":"Payee account, BT-84"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name","description":"BT-85"},"bic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bic","description":"BT-86"},"mandate_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mandate Reference","description":"Direct debit, BT-89"},"creditor_reference_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creditor Reference Id","description":"Direct debit, BT-90"},"debited_iban":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Debited Iban","description":"Direct debit, BT-91"},"terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms","description":"BT-20"}},"additionalProperties":false,"type":"object","title":"Payment"},"PrecedingInvoice":{"properties":{"number":{"type":"string","title":"Number","description":"BT-25"},"issue_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Issue Date","description":"BT-26"}},"additionalProperties":false,"type":"object","required":["number"],"title":"PrecedingInvoice"},"Profile":{"type":"string","enum":["basicwl","en16931","extended","extended-ctc-fr"],"title":"Profile","description":"Factur-X / CII profile for generation."},"Totals":{"properties":{"line_total":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Line Total","description":"BT-106"},"allowance_total":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Allowance Total","description":"BT-107"},"charge_total":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Charge Total","description":"BT-108"},"tax_exclusive":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Tax Exclusive","description":"BT-109"},"tax_total":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Tax Total","description":"BT-110"},"tax_inclusive":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Tax Inclusive","description":"BT-112"},"prepaid":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Prepaid","description":"BT-113"},"rounding":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Rounding","description":"BT-114"},"amount_due":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Amount Due","description":"BT-115"},"vat_breakdown":{"items":{"$ref":"#/components/schemas/VatBreakdown"},"type":"array","title":"Vat Breakdown","description":"BG-23"}},"additionalProperties":false,"type":"object","required":["line_total","tax_exclusive","tax_total","tax_inclusive","amount_due"],"title":"Totals","description":"Document totals (BG-22). All computed by the engine when omitted."},"UsageOut":{"properties":{"plan":{"type":"string","title":"Plan"},"used":{"type":"integer","title":"Used"},"quota":{"type":"integer","title":"Quota"},"remaining":{"type":"integer","title":"Remaining"},"period":{"type":"string","title":"Period"}},"type":"object","required":["plan","used","quota","remaining","period"],"title":"UsageOut"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"ValidationOut":{"properties":{"valid":{"type":"boolean","title":"Valid"},"flavor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Flavor"},"profile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile"},"checks_run":{"items":{"type":"string"},"type":"array","title":"Checks Run"},"checks_skipped":{"items":{"type":"string"},"type":"array","title":"Checks Skipped"},"error_count":{"type":"integer","title":"Error Count"},"warning_count":{"type":"integer","title":"Warning Count"},"findings":{"items":{"$ref":"#/components/schemas/FindingOut"},"type":"array","title":"Findings"},"pdf":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pdf"}},"type":"object","required":["valid","flavor","profile","checks_run","checks_skipped","error_count","warning_count","findings"],"title":"ValidationOut"},"VatBreakdown":{"properties":{"category":{"$ref":"#/components/schemas/VatCategory","description":"BT-118"},"rate":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,8}0*$)\\d{0,3}\\.\\d{0,4}0*$)"},{"type":"null"}],"title":"Rate","description":"BT-119"},"taxable_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Taxable Amount","description":"BT-116"},"tax_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,15}|(?=[\\d.]{1,20}0*$)\\d{0,15}\\.\\d{0,4}0*$)"}],"title":"Tax Amount","description":"BT-117"},"exemption_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exemption Reason","description":"BT-120"},"exemption_reason_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exemption Reason Code","description":"VATEX code, BT-121"}},"additionalProperties":false,"type":"object","required":["category","taxable_amount","tax_amount"],"title":"VatBreakdown"},"VatCategory":{"type":"string","enum":["S","Z","E","AE","K","G","O","L","M"],"title":"VatCategory","description":"UNTDID 5305 subset used by EN 16931 (BT-151 / BT-118)."}}}}