# Check a UBL file for free

This free UBL validator performs a basic check on a UBL invoice: well-formed XML, the UBL 2.1 invoice structure and namespaces, required core data and simple arithmetic for totals and VAT. The check runs entirely in your browser; your file and invoice data are never sent to SnelUBL or any other server.

<section id="ubl-validator" class="ubl-validator" aria-labelledby="ubl-validator-title">
  <div class="ubl-validator__heading">
    <div>
      <p class="ubl-validator__eyebrow">Browser-only basic check</p>
      <h2 id="ubl-validator-title">Check your UBL XML</h2>
    </div>
    <p class="ubl-validator__privacy">Stays on this device</p>
  </div>
  <div class="ubl-validator__tabs" role="tablist" aria-label="Choose input method">
    <button type="button" class="ubl-validator__tab is-active" id="ubl-file-tab" role="tab" aria-selected="true" aria-controls="ubl-file-panel" data-validator-tab="file">Upload file</button>
    <button type="button" class="ubl-validator__tab" id="ubl-paste-tab" role="tab" aria-selected="false" aria-controls="ubl-paste-panel" data-validator-tab="paste" tabindex="-1">Paste XML</button>
  </div>
  <div class="ubl-validator__panel" id="ubl-file-panel" role="tabpanel" aria-labelledby="ubl-file-tab">
    <label class="ubl-validator__file-label" for="ubl-file-input">
      <strong>Choose a UBL XML file</strong>
      <span id="ubl-file-name">No file selected</span>
    </label>
    <input id="ubl-file-input" class="ubl-validator__file-input" type="file" accept=".xml,application/xml,text/xml">
  </div>
  <div class="ubl-validator__panel" id="ubl-paste-panel" role="tabpanel" aria-labelledby="ubl-paste-tab" hidden>
    <label for="ubl-xml-input">UBL XML</label>
    <textarea id="ubl-xml-input" rows="12" spellcheck="false" autocomplete="off" placeholder="Paste the complete UBL XML here..."></textarea>
  </div>
  <div class="ubl-validator__actions">
    <button type="button" class="public-btn public-btn--primary" id="ubl-validate-button">Run basic check</button>
    <button type="button" class="ubl-validator__clear" id="ubl-clear-button">Clear</button>
  </div>
  <div class="ubl-validator__results" id="ubl-validator-results" aria-live="polite" hidden>
    <div class="ubl-validator__summary">
      <h3 id="ubl-validator-summary">Result</h3>
      <p id="ubl-validator-summary-text"></p>
    </div>
    <ul id="ubl-validator-findings"></ul>
  </div>
</section>

## What does this basic check cover?

- Whether the input is well-formed XML and uses a UBL Invoice root with the expected UBL 2.1 Invoice, CommonBasicComponents and CommonAggregateComponents namespaces.
- Whether the invoice number, issue date, supplier, customer, currency, totals and a VAT breakdown are present.
- Whether the sum of invoice lines matches the tax-exclusive amount.
- Whether VAT amounts in the breakdown add up to the total VAT amount.

This is not full EN 16931 or Peppol BIS Billing 3.0 Schematron validation. A file that passes this basic check can still contain package-specific, profile-specific or country-specific errors.

## What is UBL?

UBL stands for Universal Business Language. It is an XML format that structures invoice data such as parties, lines, amounts, currency and VAT so accounting software can process it without manual retyping. Read more in [What is UBL?](/en/ubl.html).

<div class="seo-action-row">
  <a class="public-btn public-btn--primary" href="/login.html?screen_hint=signup" data-action="register" data-track-location="ubl_validator">Only have a PDF? Convert it to UBL</a>
</div>

## Frequently asked questions

### Is my UBL file uploaded?

No. The check runs locally in your browser and does not send your XML or invoice data to a server.

### Is this full Peppol validation?

No. This is a basic check of XML, UBL structure, core fields and simple arithmetic, not full EN 16931 or Peppol BIS Billing 3.0 Schematron validation.

### Which UBL structure does the validator check?

The validator expects a UBL Invoice with the usual UBL 2.1 Invoice, CommonBasicComponents and CommonAggregateComponents namespaces.

### Why might accounting software still reject the file?

An accounting package can impose additional profile, country, process or field requirements beyond this basic check.

### Can I check a PDF invoice with this validator?

No. This tool checks UBL XML. SnelUBL can first convert a PDF, DOCX, scan or photo into UBL.

Last updated: 1 October 2026.
