---
title: "Turns a UBL-TR e-Invoice or e-Archive XML document into clean JSON: parties, line items, taxes and totals."
method: POST
path: "/v1/tr/invoice/parse"
tags: ["Finance"]
---

# Turns a UBL-TR e-Invoice or e-Archive XML document into clean JSON: parties, line items, taxes and totals.

`POST /v1/tr/invoice/parse`

## Request

- Base URL: `https://api.temsor.com`
- URL: `https://api.temsor.com/v1/tr/invoice/parse`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Works regardless of the namespace prefix the sender used (cbc:, cac:, ns0:), normalises single-line documents into arrays, and reports amount mismatches in `warnings` instead of returning quietly wrong totals. The job that costs accounting and expense software the most engineering time.

**Credits per call:** 3 · **Operation id:** `tr_invoice_parse`

## Request body

- object
  - `xml` string, required: UBL-TR e-Invoice / e-Archive (e-Arsiv) XML body.

## Response `200`

Success

- object
  - `ok` unknown, required
  - `data` object, required
    - `documentType` string, required
    - `profile` string, nullable, required
    - `invoiceTypeCode` string, nullable, required
    - `id` string, nullable, required
    - `uuid` string, nullable, required
    - `issueDate` string, nullable, required
    - `issueTime` string, nullable, required
    - `currency` string, required
    - `supplier` object, nullable, required
      - `name` string, nullable, required
      - `taxNumber` string, nullable, required
      - `taxOffice` string, nullable, required
      - `identifiers` object, required
      - `address` object, nullable, required
        - `street` string, nullable, required
        - `building` string, nullable, required
        - `district` string, nullable, required
        - `city` string, nullable, required
        - `postalCode` string, nullable, required
        - `country` string, nullable, required
      - `email` string, nullable, required
      - `phone` string, nullable, required
    - `customer` object, nullable, required
      - `name` string, nullable, required
      - `taxNumber` string, nullable, required
      - `taxOffice` string, nullable, required
      - `identifiers` object, required
      - `address` object, nullable, required
        - `street` string, nullable, required
        - `building` string, nullable, required
        - `district` string, nullable, required
        - `city` string, nullable, required
        - `postalCode` string, nullable, required
        - `country` string, nullable, required
      - `email` string, nullable, required
      - `phone` string, nullable, required
    - `lines` object[], required
      - `lineNumber` number, required
      - `name` string, nullable, required
      - `description` string, nullable, required
      - `sellerItemCode` string, nullable, required
      - `buyerItemCode` string, nullable, required
      - `quantity` number, nullable, required
      - `unit` string, nullable, required
      - `unitPrice` number, nullable, required
      - `lineExtensionAmount` number, nullable, required
      - `allowanceTotal` number, required
      - `taxes` object[], required
        - `taxableAmount` number, nullable, required
        - `taxAmount` number, nullable, required
        - `percent` number, nullable, required
        - `taxName` string, nullable, required
        - `taxCode` string, nullable, required
      - `vatRate` number, nullable, required
      - `vatAmount` number, nullable, required
    - `taxes` object[], required
      - `taxableAmount` number, nullable, required
      - `taxAmount` number, nullable, required
      - `percent` number, nullable, required
      - `taxName` string, nullable, required
      - `taxCode` string, nullable, required
    - `totals` object, required
      - `lineExtensionAmount` number, nullable, required
      - `taxExclusiveAmount` number, nullable, required
      - `taxInclusiveAmount` number, nullable, required
      - `allowanceTotalAmount` number, nullable, required
      - `payableAmount` number, nullable, required
      - `taxTotal` number, nullable, required
    - `notes` string[], required
    - `warnings` string[], required
  - `meta` object
    - `credits` integer
    - `cached` boolean
    - `requestId` string
    - `durationMs` integer

## Other responses

- `400`: Error
- `401`: Error
- `402`: Error
- `429`: Rate limit exceeded — wait `Retry-After` seconds. The RateLimit headers are sent here too.

---

[API](https://skmtc.dev/temsor/apis/temsor-api.md) · [All operations](https://skmtc.dev/temsor/apis/temsor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/temsor/apis/temsor-api/revisions/19702107e15a?raw)
