3 API3.5
Stornieren vor der Übermittlung
Eine Rechnung stoppen, bevor sie übermittelt wird.
- In der Sandbox
In einfachen Worten
Dieser Aufruf stoppt eine Rechnung, die den Übermittlungsweg noch nicht erreicht hat; danach ist die Korrektur eine Gutschrift.
POST /invoices/{id}/cancel stoppt eine Rechnung, die der Übermittlungsweg noch nicht hat. Das funktioniert, solange die Rechnung received, validated oder queued ist und kein Versand läuft. Danach ist die Stornierung ein kaufmännischer Beleg: Stellen Sie eine Gutschrift aus.
Der Aufruf braucht einen Schlüssel mit dem Scope submit und einen Idempotency-Key (8 bis 100 Zeichen). Er nimmt keinen Body an.
Rechtzeitig storniert
Die Rechnung erhält den Zustand cancelled, und ihr Job in der Warteschlange wird verworfen.
curl -X POST "https://api-sandbox-eu.eurinvoice.com/invoices/inv_ae4d9834bf251353532fe5ee/cancel" \
-H "Authorization: Bearer <your-api-key>" \
-H "Idempotency-Key: cancel-2026-0001"import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api-sandbox-eu.eurinvoice.com/invoices/inv_ae4d9834bf251353532fe5ee/cancel"))
.header("Authorization", "Bearer <your-api-key>")
.header("Idempotency-Key", "cancel-2026-0001")
.POST(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}const response = await fetch('https://api-sandbox-eu.eurinvoice.com/invoices/inv_ae4d9834bf251353532fe5ee/cancel', {
method: 'POST',
headers: {
Authorization: 'Bearer <your-api-key>',
'Idempotency-Key': 'cancel-2026-0001',
},
});
console.log(response.status);
console.log(await response.text());{
"invoice_ref": "FRESH-mux3dlqm-0",
"environment": "sandbox",
"document_sha256": "b341c81da6fe297787829a8c26fd4b25106b5b34e67482d38c1039651bbfed65",
"route": "DE-XRECHNUNG",
"updated_at": "2026-10-06T19:49:10.992Z",
"client": "acme-srl",
"created_at": "2026-10-06T19:49:10.816Z",
"id": "inv_ae4d9834bf251353532fe5ee",
"state": "cancelled",
"invoice_number": "FRESH-mux3dlqm-0"
}Zu spät
Sobald der Übermittlungsweg die Rechnung hat oder ein Versand läuft, ist die Antwort 409.
curl -X POST "https://api-sandbox-eu.eurinvoice.com/invoices/inv_936a93e38de84e7b0a1d7681/cancel" \
-H "Authorization: Bearer <your-api-key>" \
-H "Idempotency-Key: cancel-2026-0002"import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api-sandbox-eu.eurinvoice.com/invoices/inv_936a93e38de84e7b0a1d7681/cancel"))
.header("Authorization", "Bearer <your-api-key>")
.header("Idempotency-Key", "cancel-2026-0002")
.POST(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}const response = await fetch('https://api-sandbox-eu.eurinvoice.com/invoices/inv_936a93e38de84e7b0a1d7681/cancel', {
method: 'POST',
headers: {
Authorization: 'Bearer <your-api-key>',
'Idempotency-Key': 'cancel-2026-0002',
},
});
console.log(response.status);
console.log(await response.text());{
"type": "https://eurinvoice.com/problems/already-submitted",
"title": "Already submitted to the route; issue a credit note instead",
"status": 409
}Antworten
| Status | Bedeutung |
|---|---|
200 | Storniert. Der Body ist die Rechnung. |
400 | Der Idempotency-Key fehlt oder hat nicht 8 bis 100 Zeichen. |
401 | Kein Schlüssel oder ein unbekannter Schlüssel. |
403 | Dem Schlüssel fehlt der Scope submit. |
404 | Keine solche Rechnung für diesen Kunden. |
409 | Bereits übermittelt (already-submitted) oder ein Versand läuft (send-in-progress). Stellen Sie eine Gutschrift aus oder warten Sie auf das Ergebnis. Auf eine Rechnung im Zustand dead_letter antwortet der Aufruf mit einem Kundenschlüssel dead-letter: Darüber entscheiden wir. |
429 | Zu viele Anfragen für den Schlüssel. Warten Sie Retry-After Sekunden. |
Das Stornieren einer bereits stornierten Rechnung antwortet erneut mit 200 und der Rechnung, sodass eine Wiederholung nach einer verlorenen Antwort unbedenklich ist. Eine Rechnung in der Warteschlange wird innerhalb von Sekunden aufgenommen, das Zeitfenster zum Stornieren ist also kurz. Wurde ein Versand versucht und ging seine Antwort verloren, steht die Rechnung auf submitting, und ein Storno antwortet send-in-progress, weil der Übermittlungsweg sie möglicherweise hat.