ZUGFeRD & XRechnung Viewer
Upload a ZUGFeRD or Factur-X PDF or an XRechnung XML and read it as an invoice — parties, lines, VAT and totals, laid out the way an invoice reads.
- Free
- No account
- Files deleted automatically
Opened in three steps.
From the file on your computer to an invoice you can read.
-
01
Upload the invoice
Drop a ZUGFeRD or Factur-X PDF or an XRechnung XML into the box. You need no account for it.
-
02
The data is read
The invoice XML, attached inside the PDF or the file itself, is read field by field.
-
03
See the invoice
The data is laid out as an invoice: who bills whom, every line, the VAT and what is due.
The data behind
the invoice.
An e-invoice carries its data as XML, behind a PDF page or with no page at all.
The viewer shows what that data says, in the order an invoice is read.
Parties
The seller and the buyer with their addresses and VAT IDs, as the data states them.
Lines
Every invoice line with its quantity, unit price, VAT rate and amount.
Totals
Net, VAT and gross, what was already paid and the amount that is due.
Payment
The IBAN, the payment reference and the payment terms the invoice carries.
The same data,
in your code.
This tool runs our reader API. Send the URL of an e-invoice, PDF or XML, with one request and get the invoice you see above as JSON — 1,000 calls a month are free.
Request
curl -X POST https://apdf.io/api/pdf/einvoice/read \
-H "Authorization: Bearer TOKEN" \
-d file="FILE_URL"
const data = new FormData();
data.append('file', 'FILE_URL');
fetch('https://apdf.io/api/pdf/einvoice/read', {
headers: {'Authorization': 'Bearer TOKEN'},
method: 'POST',
body: data
})
.then(response => response.json())
.then(json => console.log(json));
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post(
'https://apdf.io/api/pdf/einvoice/read', [
'headers' => [
'Authorization' => 'Bearer TOKEN'
],
'form_params' => [
'file' => 'FILE_URL'
]
]);
$body = $response->getBody();
echo json_encode($body->getContents());
require 'rest-client'
response = RestClient.post(
'https://apdf.io/api/pdf/einvoice/read',
{
'file' => 'FILE_URL'
},
{
Authorization: "Bearer TOKEN"
}
)
puts response.body
import requests
response = requests.post(
'https://apdf.io/api/pdf/einvoice/read',
headers = {
'Authorization': 'Bearer TOKEN'
},
data = {
'file': 'FILE_URL'
}
)
print(response.text)
import (
"fmt"
"github.com/go-resty/resty/v2"
)
func main() {
client := resty.New()
data := map[string]string{
"file": "FILE_URL"
}
resp, _ := client.R().
SetFormData(data).
SetHeader("Authorization", "Bearer TOKEN").
Post("https://apdf.io/api/pdf/einvoice/read")
fmt.Println(resp.String())
}
import okhttp3.*;
class Pdf {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
FormBody formBody = new FormBody.Builder()
.add("file", "FILE_URL")
.build();
Request request = new Request.Builder()
.url("https://apdf.io/api/pdf/einvoice/read")
.addHeader("Authorization", "Bearer TOKEN")
.post(formBody)
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
}
}