3 API3.5
Annuleren vóór de indiening
Een factuur stoppen voordat ze is ingediend.
- In de sandbox
In gewone woorden
Deze aanroep stopt een factuur die het verzendkanaal nog niet heeft bereikt; daarna gebeurt de correctie met een creditnota.
POST /invoices/{id}/cancel stopt een factuur die het verzendkanaal nog niet heeft. Het werkt zolang de factuur received, validated of queued is en er geen verzending loopt. Daarna is de annulering een zakelijk document: reik een creditnota uit.
De aanroep vereist een sleutel met de scope submit en een Idempotency-Key (8 tot 100 tekens). Hij neemt geen body aan.
Op tijd geannuleerd
De factuur gaat naar cancelled, en haar job in de wachtrij vervalt.
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"
}Te laat
Zodra het verzendkanaal de factuur heeft, of er een verzending loopt, is het antwoord 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
}Antwoorden
| Status | Betekenis |
|---|---|
200 | Geannuleerd. De body is de factuur. |
400 | De Idempotency-Key ontbreekt of is niet 8 tot 100 tekens lang. |
401 | Geen sleutel, of een onbekende sleutel. |
403 | De sleutel mist de scope submit. |
404 | Deze factuur bestaat niet voor deze eindklant. |
409 | Al ingediend (already-submitted), of er loopt een verzending (send-in-progress). Reik een creditnota uit, of wacht op het resultaat. Een factuur met de status dead_letter geeft aan de sleutel van een eindklant dead-letter terug: daarover beslissen wij. |
429 | Te veel aanvragen voor de sleutel. Wacht het aantal seconden in Retry-After. |
Het annuleren van een factuur die al is geannuleerd geeft opnieuw 200 met die factuur, dus een nieuwe poging na een verloren antwoord is veilig. Een factuur in de wachtrij wordt binnen enkele seconden opgepakt, dus het venster om te annuleren is kort. Als een verzending is geprobeerd en het antwoord verloren ging, staat de factuur op submitting en geeft annuleren send-in-progress, omdat het verzendkanaal haar mogelijk heeft.