Validate invoice

Validates invoice data against business rules and optionally against the full UBL Schematron validation rules. Use this endpoint to check for errors before issuing or submitting an invoice.

POST /api/v1/invoices/{uuid}/validate

Headers

NameTypeRequiredDescription
AuthorizationstringYesBearer token for authentication
X-CompanystringYesCompany UUID to scope the request

Path parameters

NameTypeRequiredDescription
uuidstringYesInvoice UUID

Query parameters

NameTypeDefaultDescription
modestringquickValidation mode: quick or full

Validation modes

  • quick - Fast validation against basic business rules and data integrity
  • full - Comprehensive validation including Schematron rules and UBL 2.1 schema compliance
ℹ️

The full validation mode can take several seconds for complex invoices. Use quick mode for real-time validation feedback in the UI.

Request

# Quick validation
curl -X POST "https://api.storno.ro/api/v1/invoices/7c9e6679-7425-40de-944b-e07fc1f90ae7/validate?mode=quick" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Company: 550e8400-e29b-41d4-a716-446655440000"

# Full validation
curl -X POST "https://api.storno.ro/api/v1/invoices/7c9e6679-7425-40de-944b-e07fc1f90ae7/validate?mode=full" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Company: 550e8400-e29b-41d4-a716-446655440000"

Response

Returns validation results with any errors or warnings found.

Valid invoice response

{
  "valid": true,
  "errors": [],
  "warnings": []
}

Invalid invoice response

{
  "valid": false,
  "errors": [
    "Client VAT number (CIF) is required for invoices over 1000 RON",
    "Invoice line 1: Unit price must be greater than zero",
    "Due date cannot be before issue date"
  ],
  "warnings": [
    "No payment terms specified",
    "Internal note is very long (over 500 characters)"
  ]
}

Response fields

FieldTypeDescription
validbooleanWhether the invoice passes all validation checks
errorsarrayCritical validation errors that must be fixed
warningsarrayNon-critical issues or suggestions

Validation rules

Quick mode checks

  • Required fields are present (client, issue date, lines)
  • Numeric values are valid (positive amounts, valid percentages)
  • Date logic (due date after issue date)
  • Line item calculations are correct
  • VAT rates are valid
  • Currency code is valid
  • Client and supplier information is complete
  • Total amounts match line item sums

Full mode additional checks

  • UBL 2.1 schema compliance
  • Schematron business rules (EN 16931)
  • Cross-field validation rules
  • Romanian e-Factura specific rules
  • Tax identification number formats
  • Address format validation
  • Payment terms codelist compliance
  • Unit of measure codelist compliance

Common validation errors

ErrorDescriptionSolution
Missing client CIFVAT identification number requiredAdd client CIF/VAT number
Invalid VAT rateVAT rate not in allowed listUse a valid VAT rate (0, 5, 9, 19)
Negative amountsLine price or quantity is negativeUse positive values
Date mismatchDue date before issue dateAdjust dates
Missing linesInvoice has no line itemsAdd at least one line
Invalid currencyCurrency code not ISO 4217Use valid 3-letter code (RON, EUR, USD)
Total mismatchCalculated total doesn't match line sumsRecalculate line items

Error codes

CodeDescription
401Missing or invalid authentication token
403No access to the specified company
404Invoice not found
422Invalid validation mode parameter