XRechnung & ZUGFeRD Prüfung
Laden Sie Ihre XML- oder PDF-Rechnung hoch, um die enthaltenen Daten zu analysieren.
Unser E-Rechnung/ZUGFeRD Analyse-Tool erlaubt es Ihnen sicherzustellen, dass Ihre E-Rechnungen valide Informationen enthalten. Nach der Auswertung werden Ihre PDF- und XML-Dateien von unseren Servern automatisch gelöscht.
Fehler bei der Analyse
Metadaten
Extrahiertedaten (XPath)
| XPath | Wert | Hinweise |
|---|
https://www.bytes-commerce.de/api/invoice/insights
Eine PDF-Rechnung hochladen, um strukturierte Erkenntnisse zu extrahieren.
Gibt eine InvoiceInsights-Ressource mit den extrahierten Daten sowie einer id und einem secret für den späteren Abruf zurück.
curl -X POST "https://www.bytes-commerce.de/api/invoice/insights" \
-H "Content-Type: application/json" \
-d '{
"base64": "BASE64_ENCODED_PDF_CONTENT"
}'
<?php
$pdfBase64 = base64_encode(file_get_contents('invoice.pdf'));
$payload = json_encode([
'base64' => $pdfBase64,
], JSON_THROW_ON_ERROR);
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://www.bytes-commerce.de/api/invoice/insights',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Accept: application/json',
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($response, true);
// Browser: pdfFile is a File (from <input type="file">)
const arrayBuffer = await pdfFile.arrayBuffer();
const bytes = new Uint8Array(arrayBuffer);
// Convert bytes -> base64
let binary = '';
for (const b of bytes) binary += String.fromCharCode(b);
const pdfBase64 = btoa(binary);
const response = await fetch('https://www.bytes-commerce.de/api/invoice/insights', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({ base64: pdfBase64 })
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
console.log(data.id, data.secret);
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Base64;
HttpClient client = HttpClient.newHttpClient();
byte[] pdfBytes = Files.readAllBytes(Path.of("invoice.pdf"));
String pdfBase64 = Base64.getEncoder().encodeToString(pdfBytes);
String json = """
{
"base64": "%s"
}
""".formatted(pdfBase64);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.bytes-commerce.de/api/invoice/insights"))
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json, StandardCharsets.UTF_8))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200 || response.statusCode() == 201) {
String body = response.body();
// Parse JSON as needed
} else {
throw new RuntimeException("HTTP " + response.statusCode() + ": " + response.body());
}
id und das secret aus der Antwort speichern – sie werden später zum Abruf der zwischengespeicherten Erkenntnisse benötigt.
https://www.bytes-commerce.de/api/invoice/insights/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx?secret=...
Ersetze xxx durch deine UUID aus der Anfrage
Zuvor verarbeitete Rechnungserkenntnisse mit id und secret aus der POST-Anfrage abrufen.
Zwischengespeicherte Ergebnisse sind bis zu 90 Tage verfügbar.
curl -X GET "https://www.bytes-commerce.de/api/invoice/insights/{id}?secret={secret}
<?php
$id = 'your-uuid-here';
$secret = 'your-secret-here';
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://www.bytes-commerce.de/api/invoice/insights/{$id}?secret=" . urlencode($secret),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPGET => true
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($response, true);
const id = 'your-uuid-here';
const secret = 'your-secret-here';
const response = await fetch(
`https://www.bytes-commerce.de/api/invoice/insights/${id}?secret=${encodeURIComponent(secret)}`
);
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
const data = await response.json();
HttpClient client = HttpClient.newHttpClient();
String id = "your-uuid-here";
String secret = URLEncoder.encode("your-secret-here", StandardCharsets.UTF_8);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.bytes-commerce.de/api/invoice/insights/" + id + "?secret=" + secret))
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
String json = response.body();
// Parse JSON as needed
}
Datenspeicherung zur Serviceverbesserung
Durch das Aktivieren dieser Option helfen Sie uns, unseren kostenlosen Service zu verbessern.
- Was wird gespeichert? Wenn Sie zustimmen, speichern wir die extrahierte XML-Datei und Metadaten der Rechnung.
- Warum? Wir nutzen diese Daten gelegentlich für Analysen, um unsere Parser zu verbessern und die Benutzererfahrung zu optimieren.
- Replay: Gespeicherte Uploads können zur erneuten Analyse verwendet werden, um sicherzustellen, dass zukünftige Updates die gleichen Ergebnisse liefern.
- Wie lange? Wir behalten es uns vor die erhobenen Informationen für unbeschränkte Dauer zu speichern.
- Freiwillig: Die Speicherung ist vollkommen optional. Wenn Sie die Option deaktivieren, wird Ihre Datei wie gewohnt verarbeitet und sofort danach gelöscht.