Felkoder
Referens för HTTP-statuskoder och felmeddelanden i TIC Credit API.
HTTP-statuskoder
Översikt av de statuskoder som API:et kan returnera.
| Kod | Betydelse | Beskrivning |
|---|---|---|
200 | OK | Förfrågan lyckades. |
400 | Bad Request | Ogiltig förfrågan — valideringsfel. |
401 | Unauthorized | Ogiltig eller saknad API-nyckel, inaktivt konto, eller konto som ännu inte validerats av TIC. |
404 | Not Found | Kreditupplysningen hittades inte, eller är inte slutförd ännu (status != "Completed"). |
429 | Too Many Requests | Månadens kvot är slut för vald leveransmetod och inget överskjutande pris är konfigurerat. |
500 | Internal Server Error | Serverfel — försök igen senare. |
Felsvarsformat
Alla fel returneras som JSON med samma struktur.
Felsvar
{
"error": "personalNumber is required"
}
Valideringsfel (400)
Vanliga valideringsfel och hur du åtgärdar dem.
| Felmeddelande | Orsak | Lösning |
|---|---|---|
personalNumber is required |
Personnummer saknas. | Ange ett 12-siffrigt personnummer. |
personalNumber must be 12 digits (YYYYMMDDNNNN) |
Ogiltigt personnummerformat. | Använd 12 siffror — bindestreck och mellanslag ignoreras automatiskt. |
mobilePhoneNumber is required for SMS delivery |
Mobilnummer saknas vid SMS-flöde. | Ange mobilnummer i E.164 eller svenskt nationellt format. |
Invalid phone number. Provide a valid number in E.164 or national format. |
Ogiltigt telefonnummer. | Exempel: +46XXXXXXXXX eller 0XXXXXXXXX. |
A mobile phone number is required for SMS delivery. |
Fast telefonnummer angivet. | Använd ett mobilnummer — SMS kan inte skickas till fasta nummer. |
Credit check cannot be cancelled in status '...' |
Försökt avbryta en redan slutförd upplysning. | Endast status Requested, SmsSent, PendingAuth eller PendingConsent kan avbrytas. |
Autentiseringsfel (401)
Problem med API-nyckel eller tenant-status.
| Felmeddelande | Orsak | Lösning |
|---|---|---|
Invalid API key |
API-nyckeln är ogiltig eller felskriven. | Kontrollera att du använder rätt nyckel i X-Api-Key-headern. |
Tenant is inactive |
Kontot har inaktiverats. | Kontakta support för att återaktivera. |
Tenant is pending validation |
Kontot har registrerats men väntar på TIC:s validering. | Vänta — validering sker normalt inom 1 arbetsdag efter registrering. |
Resurser ej funna (404)
Förfrågan refererar till en resurs som inte finns eller inte är tillgänglig ännu.
| Felmeddelande | Orsak | Lösning |
|---|---|---|
Credit check not found |
Kreditupplysning med angivet GUID finns inte inom ditt konto. | Kontrollera att GUID:et är korrekt och tillhör rätt tenant. |
Credit check is not completed |
Upplysningen finns men är inte klar ännu (status != "Completed"). |
Vänta på credit.completed-webhook eller polla /checks. |
Credit check is not completed or has no report |
PDF begärd innan kreditupplysningen är färdig. | Försök igen när status är Completed. |
Felkoder för inbäddat flöde (iframe)
Embed-flödet kommunicerar via postMessage-eventet
tic-credit:error som innehåller både ett mänskligt läsbart
message (svensk text) och en maskinläsbar code som du
kan branscha eller lokalisera på.
| Code | Orsak | Hantering på din sida |
|---|---|---|
timeout |
QR-/BankID-sessionens 5-minuters fönster gick ut. | Visa "försök igen"-knapp eller ladda om iframen via destroy() + ny embed(). |
bankid_failed |
BankID-autentiseringen avbröts eller misslyckades (userCancel, certificateErr, etc.). |
Användaren ser felet i iframen — du kan logga eventet och eventuellt erbjuda en alternativ inloggningsmetod. |
bankid_start_failed |
Initieringen mot Identity-API:et misslyckades (nätverksfel, tjänsten otillgänglig). | Övergående fel — be användaren försöka igen om en stund. |
ineligible |
Personen har skyddade uppgifter, är avregistrerad, eller har aktiverat konsumentspärr. | Fakturering sker inte. Erbjud alternativa identifieringsmetoder eller manuell hantering. |
report_unavailable |
BankID lyckades men datakällan för kreditupplysningen svarade inte. | Be användaren försöka igen senare. Sessionen markeras som Failed på TIC:s sida. |
collect_failed |
Sessionen kunde inte slutföras av annan anledning. | Visa generiskt fel + "försök igen". Logga message-fältet för felsökning. |
network |
Klientsidan tappade anslutningen mitt i collect-anropet. | Be användaren försöka igen — embed-sessionen är idempotent och returnerar samma resultat vid retry. |
sdk_version_mismatch |
SDK:n och iframen kör olika protokollversioner (servern är nyare). | Be användaren ladda om sidan, eller uppdatera din SDK-fil till senaste versionen. |
unknown |
Fel utan specifik kategori. | Falla tillbaka på message-fältet. |
HTTP-statuskoder från embed-endpoints
Embed-endpoints (/embed/{slug}/...) returnerar dessa direkt om man anropar dem manuellt:
| Status | Orsak |
|---|---|
403 Forbidden på iframe-laddning | Sidans origin finns inte i tenantens allowlist. |
401 Unauthorized på BankID-anrop | Embed-token har gått ut (15 min), saknas, eller är manipulerad. |
429 Too Many Requests | Iframe-laddningar från samma IP överskrider 60/15 min. |
404 Not Found vid iframe-laddning | Tenant inte aktiv, embed-flödet inte aktiverat, eller signeringshemlighet saknas. |
Kvotöverskridande (429)
Returneras när månadens inkluderade kvot för vald leveransmetod är slut och ditt planval inte har ett överskjutande pris konfigurerat för den metoden.
"letter" ↔ "sms") för att använda en metod
där överskjutande är tillåtet, eller uppgradera din plan. Se
Kvoter och överskjutande.
Felhantering — best practices
Rekommenderade mönster för robust integration.
Retry med exponential backoff
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
// Only retry on server errors — 429 means quota is exhausted
// for the chosen delivery method; retrying will not help.
if (response.status >= 500) {
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
continue;
}
return response;
}
}
Logga fel med tillräcklig kontext
const response = await fetch('/api/v1/check', options);
if (!response.ok) {
const error = await response.json();
console.error(`TIC Credit API error: ${response.status}`, {
error: error.error,
creditCheckId: creditCheckId ?? null,
timestamp: new Date().toISOString()
});
}
Behöver du hjälp?
Om du stöter på ett fel som du inte kan lösa.
Kontakta support@tic.io med:
- HTTP-statuskod och felmeddelande
- Request-body (utan känslig data)
- Tidpunkt för felet
- Din tenant-slug