---
title: "Generate the CII XML only, without schematron check (fast, for debugging mappings)"
method: POST
path: "/v1/invoices/preview-xml"
tags: ["e-invoicing"]
---

# Generate the CII XML only, without schematron check (fast, for debugging mappings)

`POST /v1/invoices/preview-xml`

## Request

- Base URL: `https://facturx.orvel.dev` (the document declares no server; this is the origin it was published from)
- URL: `https://facturx.orvel.dev/v1/invoices/preview-xml`
- Auth: none declared

## Request body

- GenerateRequest
  - `invoice` Invoice, required
    - `number` string, required: BT-1 (BR-FR-01/02: max 35 chars, letters, digits, . _ / -)
    - `issue_date` string, date, required: BT-2
    - `type_code` '380' | '381' | '384' | '386' | '389' | '261' | '751': UNTDID 1001, BT-3: 380 invoice, 381 credit note, 384 corrected, 386 prepayment, 389 self-billed
    - `currency` string: BT-5
    - `vat_accounting_currency` string, nullable: BT-6
    - `due_date` string, date, nullable: BT-9
    - `tax_point_date` string, date, nullable: BT-7
    - `buyer_reference` string, nullable: BT-10
    - `project_reference` string, nullable: BT-11
    - `contract_reference` string, nullable: BT-12
    - `purchase_order_reference` string, nullable: BT-13
    - `sales_order_reference` string, nullable: BT-14
    - `receiving_advice_reference` string, nullable: BT-15
    - `despatch_advice_reference` string, nullable: BT-16
    - `tender_reference` string, nullable: BT-17
    - `buyer_accounting_reference` string, nullable: BT-19
    - `payment_terms` string, nullable: BT-20
    - `operation_type` 'goods' | 'services' | 'mixed': Nature of the operation, used to derive the French business process code BT-23 (B1/S1/M1)
    - `already_paid` boolean: Invoice already paid at issuance (French BT-23 variants B2/S2/M2)
    - `business_process` string, nullable: Explicit BT-23 business process code (e.g. S1). Overrides operation_type/already_paid.
    - `french_mentions` FrenchMentions: Legal mentions required on French B2B invoices (BR-FR-05). Added as BG-1 notes with codes PMD, PMT, AAB.
      - `enabled` boolean: Add the three mandatory French mentions when missing
      - `late_payment_penalties` string: Note code PMD
      - `recovery_fee` string: Note code PMT
      - `early_payment_discount` string: Note code AAB
    - `notes` Note[]: BG-1
      - `text` string, required: BT-22
      - `subject_code` string, nullable: UNTDID 4451 code, BT-21 (e.g. AAI general, PMT payment, PMD penalties)
    - `seller` Party, required
      - `name` string, required: Legal name, BT-27 / BT-44
      - `trading_name` string, nullable: BT-28 / BT-45
      - `siren` string, nullable: French SIREN (9 digits). Written as legal registration id BT-30 / BT-47 with scheme 0002.
      - `legal_registration_id` string, nullable: BT-30 / BT-47 when not a SIREN. Ignored if siren is set.
      - `legal_registration_scheme` string, nullable: ISO 6523 ICD for legal_registration_id (BT-30-1 / BT-47-1), e.g. 0002 = SIREN
      - `vat_id` string, nullable: BT-31 / BT-48, e.g. FR12345678901
      - `electronic_address` string, nullable: BT-34 / BT-49
      - `electronic_address_scheme` string, nullable: EAS code for electronic_address (BT-34-1 / BT-49-1), e.g. 0225 = SIRET (FR)
      - `siret` string, nullable: French SIRET (14 digits). Shortcut for electronic_address with scheme 0225.
      - `global_ids` object: BT-29 / BT-46: {schemeID: identifier}, e.g. {'0009': SIRET}
      - `tax_registration_id` string, nullable: Seller only, BT-32
      - `legal_info` string, nullable: Seller only, BT-33: legal form, share capital, RCS city...
      - `address` Address, required
        - `line1` string, nullable: BT-35 / BT-50
        - `line2` string, nullable: BT-36 / BT-51
        - `line3` string, nullable: BT-162 / BT-163
        - `city` string, nullable: BT-37 / BT-52
        - `postal_code` string, nullable: BT-38 / BT-53
        - `country_subdivision` string, nullable: BT-39 / BT-54
        - `country` string, required: ISO 3166-1 alpha-2, BT-40 / BT-55
      - `contact` Contact
        - `name` string, nullable: BT-41 / BT-56
        - `department` string, nullable: BT-41-0 / BT-56-0 (used when name is empty)
        - `phone` string, nullable: BT-42 / BT-57
        - `email` string, nullable: BT-43 / BT-58
    - `buyer` Party, required
      - `name` string, required: Legal name, BT-27 / BT-44
      - `trading_name` string, nullable: BT-28 / BT-45
      - `siren` string, nullable: French SIREN (9 digits). Written as legal registration id BT-30 / BT-47 with scheme 0002.
      - `legal_registration_id` string, nullable: BT-30 / BT-47 when not a SIREN. Ignored if siren is set.
      - `legal_registration_scheme` string, nullable: ISO 6523 ICD for legal_registration_id (BT-30-1 / BT-47-1), e.g. 0002 = SIREN
      - `vat_id` string, nullable: BT-31 / BT-48, e.g. FR12345678901
      - `electronic_address` string, nullable: BT-34 / BT-49
      - `electronic_address_scheme` string, nullable: EAS code for electronic_address (BT-34-1 / BT-49-1), e.g. 0225 = SIRET (FR)
      - `siret` string, nullable: French SIRET (14 digits). Shortcut for electronic_address with scheme 0225.
      - `global_ids` object: BT-29 / BT-46: {schemeID: identifier}, e.g. {'0009': SIRET}
      - `tax_registration_id` string, nullable: Seller only, BT-32
      - `legal_info` string, nullable: Seller only, BT-33: legal form, share capital, RCS city...
      - `address` Address, required
        - `line1` string, nullable: BT-35 / BT-50
        - `line2` string, nullable: BT-36 / BT-51
        - `line3` string, nullable: BT-162 / BT-163
        - `city` string, nullable: BT-37 / BT-52
        - `postal_code` string, nullable: BT-38 / BT-53
        - `country_subdivision` string, nullable: BT-39 / BT-54
        - `country` string, required: ISO 3166-1 alpha-2, BT-40 / BT-55
      - `contact` Contact
        - `name` string, nullable: BT-41 / BT-56
        - `department` string, nullable: BT-41-0 / BT-56-0 (used when name is empty)
        - `phone` string, nullable: BT-42 / BT-57
        - `email` string, nullable: BT-43 / BT-58
    - `delivery` Delivery
      - `name` string, nullable: Deliver-to party name, BT-70
      - `location_id` string, nullable: BT-71
      - `location_id_scheme` string, nullable: BT-71-1
      - `address` Address
        - `line1` string, nullable: BT-35 / BT-50
        - `line2` string, nullable: BT-36 / BT-51
        - `line3` string, nullable: BT-162 / BT-163
        - `city` string, nullable: BT-37 / BT-52
        - `postal_code` string, nullable: BT-38 / BT-53
        - `country_subdivision` string, nullable: BT-39 / BT-54
        - `country` string, required: ISO 3166-1 alpha-2, BT-40 / BT-55
      - `actual_date` string, date, nullable: BT-72
      - `period_start` string, date, nullable: BT-73
      - `period_end` string, date, nullable: BT-74
    - `payment` Payment
      - `means_code` string: UNTDID 4461, BT-81. 30 credit transfer, 58 SEPA transfer, 59 SEPA direct debit, 48 card
      - `means_text` string, nullable: BT-82
      - `remittance_information` string, nullable: BT-83
      - `iban` string, nullable: Payee account, BT-84
      - `account_name` string, nullable: BT-85
      - `bic` string, nullable: BT-86
      - `mandate_reference` string, nullable: Direct debit, BT-89
      - `creditor_reference_id` string, nullable: Direct debit, BT-90
      - `debited_iban` string, nullable: Direct debit, BT-91
      - `terms` string, nullable: BT-20
    - `preceding_invoices` PrecedingInvoice[]: BG-3
      - `number` string, required: BT-25
      - `issue_date` string, date, nullable: BT-26
    - `additional_documents` AdditionalDocument[]: BG-24
      - `id` string, required: BT-122
      - `description` string, nullable: BT-123
      - `url` string, nullable: BT-124
    - `allowances` AllowanceCharge[]: BG-20
      - `amount` union, required: BT-92 / BT-99, tax excluded
        - number
        - string
      - `base_amount` union: BT-93 / BT-100
        - number
        - string
      - `percentage` union: BT-94 / BT-101
        - number
        - string
      - `reason` string, nullable: BT-97 / BT-104
      - `reason_code` string, nullable: UNTDID 5189 / 7161, BT-98 / BT-105
      - `vat_category` 'S' | 'Z' | 'E' | 'AE' | 'K' | 'G' | 'O' | 'L' | 'M': UNTDID 5305 subset used by EN 16931 (BT-151 / BT-118).
      - `vat_rate` union: BT-96 / BT-103
        - number
        - string
    - `charges` AllowanceCharge[]: BG-21
      - `amount` union, required: BT-92 / BT-99, tax excluded
        - number
        - string
      - `base_amount` union: BT-93 / BT-100
        - number
        - string
      - `percentage` union: BT-94 / BT-101
        - number
        - string
      - `reason` string, nullable: BT-97 / BT-104
      - `reason_code` string, nullable: UNTDID 5189 / 7161, BT-98 / BT-105
      - `vat_category` 'S' | 'Z' | 'E' | 'AE' | 'K' | 'G' | 'O' | 'L' | 'M': UNTDID 5305 subset used by EN 16931 (BT-151 / BT-118).
      - `vat_rate` union: BT-96 / BT-103
        - number
        - string
    - `lines` Line[], required: BG-25
      - `id` string, nullable: BT-126, auto-numbered when omitted
      - `note` string, nullable: BT-127
      - `item_name` string, required: BT-153
      - `item_description` string, nullable: BT-154
      - `seller_item_id` string, nullable: BT-155
      - `buyer_item_id` string, nullable: BT-156
      - `standard_item_id` string, nullable: BT-157, e.g. EAN/GTIN
      - `standard_item_id_scheme` string, nullable: BT-157-1, e.g. 0160 = GTIN
      - `origin_country` string, nullable: BT-159
      - `attributes` object: BG-32 item attributes
      - `quantity` union, required: BT-129
        - number
        - string
      - `unit_code` string: UN/ECE Rec 20, BT-130 (C62 unit, HUR hour, DAY, KGM, MTR, LTR...)
      - `unit_price` union, required: Net unit price, BT-146
        - number
        - string
      - `gross_unit_price` union: BT-148
        - number
        - string
      - `price_discount` union: BT-147
        - number
        - string
      - `price_base_quantity` union: BT-149
        - number
        - string
      - `price_base_unit_code` string, nullable: BT-150
      - `vat_category` 'S' | 'Z' | 'E' | 'AE' | 'K' | 'G' | 'O' | 'L' | 'M': UNTDID 5305 subset used by EN 16931 (BT-151 / BT-118).
      - `vat_rate` union: BT-152, required for category S
        - number
        - string
      - `allowances` LineAllowanceCharge[]: BG-27
        - `amount` union, required: BT-136 / BT-141
          - number
          - string
        - `base_amount` union: BT-137 / BT-142
          - number
          - string
        - `percentage` union: BT-138 / BT-143
          - number
          - string
        - `reason` string, nullable: BT-139 / BT-144
        - `reason_code` string, nullable: BT-140 / BT-145
      - `charges` LineAllowanceCharge[]: BG-28
        - `amount` union, required: BT-136 / BT-141
          - number
          - string
        - `base_amount` union: BT-137 / BT-142
          - number
          - string
        - `percentage` union: BT-138 / BT-143
          - number
          - string
        - `reason` string, nullable: BT-139 / BT-144
        - `reason_code` string, nullable: BT-140 / BT-145
      - `period_start` string, date, nullable: BT-134
      - `period_end` string, date, nullable: BT-135
      - `order_line_reference` string, nullable: BT-132
      - `buyer_accounting_reference` string, nullable: BT-133
      - `net_amount` union: BT-131. Computed as quantity x unit_price / base_qty - allowances + charges when omitted
        - number
        - string
    - `totals` Totals: Document totals (BG-22). All computed by the engine when omitted.
      - `line_total` union, required: BT-106
        - number
        - string
      - `allowance_total` union: BT-107
        - number
        - string
      - `charge_total` union: BT-108
        - number
        - string
      - `tax_exclusive` union, required: BT-109
        - number
        - string
      - `tax_total` union, required: BT-110
        - number
        - string
      - `tax_inclusive` union, required: BT-112
        - number
        - string
      - `prepaid` union: BT-113
        - number
        - string
      - `rounding` union: BT-114
        - number
        - string
      - `amount_due` union, required: BT-115
        - number
        - string
      - `vat_breakdown` VatBreakdown[]: BG-23
        - `category` 'S' | 'Z' | 'E' | 'AE' | 'K' | 'G' | 'O' | 'L' | 'M', required: UNTDID 5305 subset used by EN 16931 (BT-151 / BT-118).
        - `rate` union: BT-119
          - number
          - string
        - `taxable_amount` union, required: BT-116
          - number
          - string
        - `tax_amount` union, required: BT-117
          - number
          - string
        - `exemption_reason` string, nullable: BT-120
        - `exemption_reason_code` string, nullable: VATEX code, BT-121
    - `prepaid_amount` union: BT-113 shortcut when totals are computed
      - number
      - string
    - `rounding_amount` union: BT-114 shortcut when totals are computed
      - number
      - string
    - `tax_exemption_reason` string, nullable: 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` string, nullable: Default BT-121 VATEX code
  - `options` GenerateOptions
    - `profile` 'basicwl' | 'en16931' | 'extended' | 'extended-ctc-fr': Factur-X / CII profile for generation.
    - `output` 'facturx-pdf' | 'cii-xml' | 'ubl-xml'
    - `language` 'fr' | 'en'
    - `check` 'base' | 'fr-ctc': Schematron rule set to enforce
    - `logo_url` string, nullable: HTTPS URL of a PNG/SVG logo for the PDF header
    - `accent_color` string
    - `footer_text` string, nullable: Free text in the PDF footer
    - `party_check` boolean, nullable: Ask EU Verify whether seller and buyer are invoice-ready. Defaults to true for extended-ctc-fr.

## Response `200`

Successful Response

- unknown

## Other responses

- `400`: Invalid input or business-rule failure
- `401`: Missing or invalid API key
- `402`: Monthly quota exceeded
- `422`: Validation Error
- `503`: Validation engine temporarily unavailable

---

[API](https://skmtc.dev/orvel/apis/factur-x-api.md) · [All operations](https://skmtc.dev/orvel/apis/factur-x-api/llms.txt) · [OpenAPI document](https://skmtc.dev/orvel/apis/factur-x-api/revisions/1dc1acc1104e?raw)
