Riešenie neúspešných faktúr
Trvalé odmietnutia a kto ich má riešiť.
- V sandboxe
Jednoducho povedané
Zoznam na riešenie obsahuje faktúry, ktoré kanál krajiny definitívne odmietol alebo pri ktorých zlyhali všetky opakované pokusy, spolu s tým, čo je zle a kto má konať. Práve s ním pracuje mesačná služba Riešenie odmietnutí (Rejection Care). Odmietnutý súbor nikdy neodošleme znova v nezmenenej podobe: klient alebo partner opraví údaje v ERP a podá sa opravená faktúra.
Faktúra sa dostane do zoznamu na riešenie, keď ju kanál definitívne odmietne alebo keď dočasné zlyhania vyčerpajú opakované pokusy. Zoznam uvádza, čo je zle a kto má konať. Odmietnutý súbor nikdy neodošleme znova v nezmenenej podobe: opravte údaje v ERP a podajte opravenú faktúru. Riešenie odmietnutí, mesačný paušál, pracuje s týmito tromi volaniami. Úroveň služby je v zmluve, nie tu.
Kľúč klienta s oprávnením read číta riadky vlastného klienta. Označovanie riadkov ako vybavených je práca Riešenia odmietnutí, preto kľúč klienta dostane pri tomto volaní 403.
Zoznam
GET /care vráti jeden riadok na faktúru.
| Pole | Význam |
|---|---|
invoice_id | ID faktúry. |
invoice_ref | Vlastná referencia partnera. |
client, route | Klient a kanál faktúry. |
catalogue_code | Kód, ktorý vysvetľuje odmietnutie (pozri chyby). |
who_acts | Zodpovedná strana podľa kódu: erp, us, business, client, buyer alebo route. |
field | Miesto v kanonickom modeli, napríklad invoice.buyer_reference. Nikdy nie hodnota. |
fix_hint | Čo zmeniť, podľa odmietnutia alebo položky katalógu. |
age_seconds | Ako dlho je faktúra v zozname. |
deadline_at | Orientačná lehota faktúry, keď ju má (pozri čítanie faktúry). |
handled | Či ju niekto označil ako vybavenú. |
handled_at | Kedy bola označená. Prítomné len vtedy, keď má handled hodnotu true. |
Parameter dotazu status volí open, handled alebo all (predvolené). Kľúč klienta dostane najviac svojich 200 najnovších riadkov a truncated: true oznámi, že ich je viac. Zoznam možno vypísať 30-krát za minútu.
Poznámka
Zoznam neobsahuje telo faktúry a neobsahuje ho ani log.
curl "https://api-sandbox-eu.eurinvoice.com/care" \
-H "Authorization: Bearer <your-api-key>"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/care"))
.header("Authorization", "Bearer <your-api-key>")
.GET()
.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/care', {
headers: {
Authorization: 'Bearer <your-api-key>',
},
});
console.log(response.status);
console.log(await response.text());{
"data": []
}Označenie ako vybavené
POST /care/{id}/handled označí riadok ako vybavený a odpovie týmto riadkom. Opakované volanie ponechá prvý handled_at. Pre faktúru, ktorá nie je v zozname, je odpoveď 404. Môže ho volať len kľúč prevádzkovateľa.
curl -X POST "https://api-sandbox-eu.eurinvoice.com/care/inv_unknown/handled" \
-H "Authorization: Bearer <your-api-key>"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/care/inv_unknown/handled"))
.header("Authorization", "Bearer <your-api-key>")
.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/care/inv_unknown/handled', {
method: 'POST',
headers: {
Authorization: 'Bearer <your-api-key>',
},
});
console.log(response.status);
console.log(await response.text());{
"type": "https://eurinvoice.com/problems/not-found",
"title": "This invoice is not on the care list",
"status": 404
}Export dôkazov
GET /care/{id}/evidence vráti súbory uložené k faktúre: invoice_id a zoznam files, každý so svojím kind, svojím sha256 a samotným súborom ako file_base64. Súbor je uložený originál, preto je telo v tejto odpovedi, a nie v zozname. Pre faktúru, ktorá nie je v zozname, je odpoveď 404, rovnako aj pre faktúru iného klienta. Kľúč klienta s oprávnením read ho môže volať 10-krát za minútu. Súbory spolu nad 8 MiB odpovedia 413 (evidence-too-large); čítajte ich po jednom cez GET /invoices/{id}/documents/{kind}.
curl "https://api-sandbox-eu.eurinvoice.com/care/inv_unknown/evidence" \
-H "Authorization: Bearer <your-api-key>"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/care/inv_unknown/evidence"))
.header("Authorization", "Bearer <your-api-key>")
.GET()
.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/care/inv_unknown/evidence', {
headers: {
Authorization: 'Bearer <your-api-key>',
},
});
console.log(response.status);
console.log(await response.text());{
"type": "https://eurinvoice.com/problems/not-found",
"title": "This invoice is not on the care list",
"status": 404
}Odpovede
| Stav | Význam |
|---|---|
200 | Zoznam, označený riadok alebo dôkazy. |
401 | Chýba kľúč alebo je neznámy. |
403 | Kľúču chýba oprávnenie read alebo sa kľúč klienta pokúsil označiť riadok ako vybavený. |
404 | Faktúra nie je v zozname na riešenie. |
413 | Dôkazy majú spolu viac ako 8 MiB (evidence-too-large). |
429 | Príliš veľa požiadaviek pre kľúč. Počkajte Retry-After sekúnd. |