3 API3.5
Anulare înainte de transmitere
Opriți o factură înainte de a fi transmisă.
- În sandbox
În cuvinte simple
Acest apel oprește o factură care nu a ajuns încă la canal; după aceea, corecția se face printr-o notă de credit.
POST /invoices/{id}/cancel oprește o factură pe care canalul nu o are încă. Funcționează cât timp factura este received, validated sau queued și nu este în curs nicio trimitere. După aceea, anularea este un document comercial: emiteți o notă de credit.
Apelul necesită o cheie cu domeniul submit și un Idempotency-Key (între 8 și 100 de caractere). Cererea nu are corp.
Anulată la timp
Factura trece în cancelled, iar sarcina ei din coadă este eliminată.
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"
}Prea târziu
Odată ce canalul are factura sau o trimitere este în curs, răspunsul este 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
}Răspunsuri
| Cod | Semnificație |
|---|---|
200 | Anulată. Corpul răspunsului este factura. |
400 | Idempotency-Key lipsește sau nu are între 8 și 100 de caractere. |
401 | Lipsește cheia sau cheia este necunoscută. |
403 | Cheia nu are domeniul submit. |
404 | Nu există o astfel de factură pentru acest client. |
409 | Deja transmisă (already-submitted) sau o trimitere este în curs (send-in-progress). Emiteți o notă de credit sau așteptați rezultatul. O factură dead_letter primește dead-letter la cheia unui client: noi decidem în aceste cazuri. |
429 | Prea multe cereri pentru cheie. Așteptați numărul de secunde din Retry-After. |
Anularea unei facturi deja anulate răspunde 200 cu aceeași factură, deci o reîncercare după un răspuns pierdut este sigură. O factură din coadă este preluată în câteva secunde, așa că intervalul pentru anulare este scurt. Dacă o trimitere a fost încercată și răspunsul ei s-a pierdut, factura apare ca submitting, iar o anulare răspunde send-in-progress, pentru că este posibil ca canalul să o aibă.