API-referens
Komplett API-referens för TIC Credit. Bas-URL: https://credit.tic.io
Bygger du en konsumentintegration?
Det inbäddade flödet (iframe) är ofta enklare och snabbare än att integrera
mot detta API direkt — användaren autentiserar med BankID inline på din sida och
kreditupplysningen levereras synkront via postMessage. Inget API-anrop från din
server krävs. Läs embed-dokumentationen →
Det här API:et täcker den server-till-server-orienterade integrationen (SMS- och brev-flöden). Om båda vägarna passar din lösning kan du blanda dem — embed för konsumentinriktade upplevelser och API för B2B-arbetsflöden.
Autentisering
Alla API-anrop (utom /health) kräver en API-nyckel i headern.
| Header | Värde |
|---|---|
X-Api-Key |
YOUR_API_KEY |
API-nyckeln binds till en tenant (företagskonto). Nya konton måste valideras av vårt team
innan API-nyckeln fungerar — aktivering sker normalt inom 1 arbetsdag från registrering. Anrop från
ej validerade konton returnerar 401.
Begär identitets- och kreditkontroll
Två leveranssätt: SMS (personen har ett Mina sidor konto) eller letter (kreditupplysningskopia levereras till Kivra om tillgängligt, annars via post — kreditupplysningen levereras direkt till dig utan att vänta på godkännande).
SMS-godkännande är en engångshändelse per person. Första gången en person
får ett SMS ombeds personen bekräfta med BankID att de önskar kreditupplysningskopior levererade till deras
Mina sidor-konto. Alla efterföljande kreditupplysningskopior går då automatiskt över
till en kort påminnelse om att en ny kreditupplysningskopia finns på Mina sidor, ingen ny
BankID-godkänning krävs och kreditupplysningen levereras direkt till dig. När personen har
ett Mina sidor konto är letter inte längre tillgängligt och returnerar
409 phone_already_confirmed; eventuellt mobilePhoneNumber i
anropet kommer inte användas om personen redan har ett befintligt mobilnummer på sitt Mina sidor konto.
/api/v1/check
Request Body
| Parameter | Typ | Beskrivning |
|---|---|---|
| personalNumber Required | string | 12-siffrigt svenskt personnummer (YYYYMMDDNNNN). Bindestreck och mellanslag ignoreras. |
| deliveryMethod Optional | string |
"sms" (standard) eller "letter".
"letter" väljer automatiskt Kivra om mottagaren har brevlåda,
annars fysiskt brev. För personer med BankID-bekräftat Mina sidor
accepteras endast "sms" — "letter" returnerar
409 phone_already_confirmed.
|
| mobilePhoneNumber Required for SMS | string |
Mobilnummer i E.164 eller svenskt nationellt format
(+46XXXXXXXXX eller 0XXXXXXXXX). Krävs första
gången en person använder SMS-flödet. Om personen redan har ett
BankID-bekräftat mobilnummer på fil ignoreras värdet — TIC använder
alltid det bekräftade numret för att hindra att integratorer skickar
notifieringar till nya nummer utan ny BankID-godkänning.
|
| webhookUrl Optional | string | URL som tar emot webhook när upplysningen är klar. Åsidosätter tenantens konfigurerade webhook för detta anrop. |
| requestedAmount Optional | decimal | Sökt kreditbelopp i SEK. |
| questionerConsent Optional | boolean | Om true visas företagsnamnet som frågeställare för andra frågeställare under 12 månader. Standard: false. |
Request Headers
| Header | Värde |
|---|---|
X-Api-Key |
YOUR_API_KEY |
Content-Type |
application/json |
SMS-flöde
curl -X POST https://credit.tic.io/api/v1/check \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"personalNumber": "YYYYMMDDNNNN",
"deliveryMethod": "sms",
"mobilePhoneNumber": "+46XXXXXXXXX",
"webhookUrl": "https://your-app.com/webhook"
}'
Letter-flöde (Kivra/brev)
curl -X POST https://credit.tic.io/api/v1/check \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"personalNumber": "YYYYMMDDNNNN",
"deliveryMethod": "letter"
}'
Response — SMS-godkännande (första gången)
{
"creditCheckId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Requested",
"deliveredVia": "sms",
"hostedUrl": "/your-slug/check/550e8400-...",
"expiresAt": "2026-04-15T12:30:00Z"
}
Response — SMS-notifiering (bekräftat nummer)
{
"creditCheckId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Completed",
"deliveredVia": "sms",
"notificationOnly": true,
"completedAt": "2026-04-15T12:00:05Z"
}
Response — Letter-flöde (Kivra)
{
"creditCheckId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Completed",
"deliveredVia": "kivra",
"completedAt": "2026-04-15T12:00:05Z"
}
Response — Letter-flöde (fysiskt brev)
När mottagaren saknar Kivra-brevlåda byts deliveredVia till "mail":
{
"creditCheckId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Completed",
"deliveredVia": "mail",
"completedAt": "2026-04-15T12:00:05Z"
}
Fält
| Fält | Beskrivning |
|---|---|
creditCheckId |
Unikt ID för kreditupplysningen |
status |
Aktuell status, se Statusvärden |
deliveredVia |
"sms", "kivra" eller "mail" |
hostedUrl |
Endast första-gångens SMS-godkännande. Relativ URL till godkännandesidan — prefixa med bas-URL för att bygga fullständig länk |
expiresAt |
Endast första-gångens SMS-godkännande. Tidpunkt då sessionen går ut (ISO 8601, 30 min från begäran) |
notificationOnly |
Endast SMS-notifiering för bekräftat nummer. true betyder att kreditupplysningen är klar direkt och bara en påminnelse-SMS skickas — inget BankID-godkännande sker. |
completedAt |
Tidpunkt då kreditupplysningen blev klar — sätts för letter-flödet och SMS-notifieringsflödet (ej första-gångens SMS-godkännande) |
Felkoder
| Status | Orsak |
|---|---|
| 400 | Saknat eller ogiltigt fält, ej kvalificerad person (skyddad/avliden/spärrad). |
| 401 | Ogiltig API-nyckel, inaktivt konto, eller konto som inte validerats av TIC ännu. |
| 409 | phone_already_confirmed — personen har ett BankID-bekräftat mobilnummer på fil och letter är inte tillämpligt. Skicka om med deliveryMethod = "sms". |
| 429 | Månadens kvot för vald leveransmetod är slut och inget överskjutande pris är konfigurerat. |
Hämta kreditupplysningen
Returnerar den slutförda kreditupplysningen. Endast upplysningar med
status = "Completed" går att hämta här — anrop mot upplysningar som inte är klara
returnerar 404. Använd /checks eller webhooks för att följa upp
pågående upplysningar.
/api/v1/check/{guid}
Path Parameters
| Parameter | Typ | Beskrivning |
|---|---|---|
| guid Required | guid | Kreditupplysningens unika ID (creditCheckId). |
Response — Slutförd
{
"creditCheckId": "550e8400-...",
"status": "Completed",
"personalNumber": "YYYYMMDDNNNN",
"givenName": "Anna",
"surname": "Andersson",
"creditScore": 85,
"requestedAt": "2026-04-15T12:00:00Z",
"completedAt": "2026-04-15T12:02:30Z",
"ipRisk": {
"level": "low",
"consentIp": {
"ipAddress": "83.68.240.137",
"countryCode": "SE",
"countryName": "Sweden",
"usageType": "Fixed Line ISP",
"confidenceScore": 0,
"isTor": false,
"isWhitelisted": false,
"totalReports": 0
},
"deviceIp": null
},
"report": {
"creditScore": 85,
"person": { ... },
"ban": null,
"addresses": [ ... ],
"folkbokforing": { ... },
"deregistration": null,
"relationships": [ ... ],
"debtSummary": { ... },
"income": [ ... ],
"properties": [ ... ],
"companyRoles": [ ... ],
"enskildFirma": null,
"creditChecks": [ ... ]
}
}
ipRisk innehåller IP-risken för (a) IP:n som gav samtycke / startade integrationen och (b) IP:n där BankID-appen faktiskt slutförde autentiseringen.
Skiljer sig vid QR-flöden där laptop och telefon är på olika nätverk. level är
"low" · "moderate" · "high" eller null när ingen publik IP kunde kontrolleras.
Credit agerar inte på signalen — applicera er egen policy.
Fält i report
| Fält | Typ | Beskrivning |
|---|---|---|
creditScore | integer · null | Heuristisk poäng. Högre = bättre. |
person | object | Person, namnkomponenter (SPAR-detaljer som tilltalsnamn, mellannamn), ålder, skyddad identitet, samordningsnummer. |
ban | object · null | Aktivt näringsförbud (kallas ofta "betalningsanmärkning" i konsumentkontexter, men avser här näringsförbud från tingsrätt). |
addresses | array | Folkbokföringsadress, kontaktadress, särskild postadress. |
folkbokforing | object · null | Län, kommun, distrikt, folkbokföringsdatum. |
deregistration | object · null | Avregistreringsorsak (avliden, utvandrad, etc.). null för aktiva personer. |
relationships | array | Civilstånd, make/maka, barn, vårdnadshavare (från SPAR). |
debtSummary | object | Kronofogden-skulder: totalAmountInSek, recordOfNonPaymentCount (antal betalningsanmärkningar i KFM-mening), foreclosure, debtRestructuring. |
income | array | Skatteverket-inkomstdeklaration per år. Fältnamn använder Skatteverkets källkoder (INK_TJ, INK_TAX_FORV, SK_SLUT m.fl.). |
properties | array | Fastigheter (Lantmäteriet): beteckning, taxeringsvärde, inteckningar. |
companyRoles | array | Bolagsengagemang: roller (VD, styrelse, firmatecknare), aktiv/avregistrerad status. |
enskildFirma | object · null | Enskild näringsverksamhet, inkl. F-skatt, moms och löneregistrering. |
paymentRemarks | array | Betalningsanmärkningar — utslag i mål om betalningsföreläggande hos Kronofogdemyndigheten. Varje post: verdictDate, caseNumber, creditor, amountInSek. |
creditChecks | array | Tidigare kreditupplysningskopior (vem har frågat om personen). |
Se vår OpenAPI-spec på /openapi/v1/swagger.json för fullständigt schema med alla nestade fält.
Response — Ej slutförd
{
"error": "Credit check is not completed"
}
Ladda ner PDF
Returnerar den fullständiga kreditupplysningen i PDF-format
(Content-Type: application/pdf). Returnerar 404 om upplysningen inte
är slutförd.
/api/v1/check/{guid}/pdf
Path Parameters
| Parameter | Typ | Beskrivning |
|---|---|---|
| guid Required | guid | Kreditupplysningens unika ID. |
Exempel
curl -H "X-Api-Key: YOUR_API_KEY" \
https://credit.tic.io/api/v1/check/550e8400-.../pdf \
-o report.pdf
Response
Content-Type: application/pdf
Binär PDF-fil med den fullständiga kreditupplysningen.
Lista kreditupplysningar
Returnerar en paginerad lista av kreditupplysningar för din tenant.
/api/v1/checks
Query Parameters
| Parameter | Typ | Beskrivning |
|---|---|---|
| page Optional | integer | Sidnummer. Standard: 1. |
| pageSize Optional | integer | Antal per sida. Min 1, max 100. Standard: 50. |
Response
{
"total": 142,
"page": 1,
"pageSize": 50,
"items": [
{
"creditCheckId": "550e8400-...",
"status": "Completed",
"personalNumber": "YYYYMMDDNNNN",
"givenName": "Anna",
"surname": "Andersson",
"creditScore": 85,
"requestedAt": "2026-04-15T12:00:00Z",
"completedAt": "2026-04-15T12:02:30Z",
"ipRiskLevel": "low"
}
]
}
ipRiskLevel är en aggregerad signal: "low" · "moderate" · "high" · null.
Hämta hela ipRisk-objektet (per-IP-detaljer) via GET /api/v1/check/{guid}.
Avbryt identitets- och kreditkontroll
Avbryter en pågående identitets- och kreditkontroll och sätter status till Expired. Går endast
att anropa när nuvarande status är Requested, SmsSent,
PendingAuth eller PendingConsent.
/api/v1/check/{guid}/cancel
Path Parameters
| Parameter | Typ | Beskrivning |
|---|---|---|
| guid Required | guid | Kreditupplysningens unika ID. |
Response — Avbruten
{
"creditCheckId": "550e8400-...",
"status": "Expired",
"cancelledAt": "2026-04-15T12:05:00Z"
}
Response — Felaktigt tillstånd
{
"error": "Credit check cannot be cancelled in status 'Completed'"
}
Statusvärden
En identitets- och kreditkontroll kan ha följande statusvärden:
| Status | Beskrivning |
|---|---|
Requested | Upplysning skapad, inväntar leverans. |
SmsSent | SMS skickat till personen (endast SMS-flöde). |
PendingAuth | Personen har startat BankID-autentisering. |
PendingConsent | BankID-autentisering slutförd, inväntar godkännande. |
Approved | Personen har godkänt — kreditupplysningen genereras. |
Completed | Kreditupplysning klar — tillgänglig via API. |
Rejected | Personen nekade kreditupplysningen. |
Expired | Timeout efter 30 minuter, eller manuellt avbruten via /cancel. |
Failed | Tekniskt fel (personen hittades inte, generering misslyckades, etc.). |
Kvoter och överskjutande
Varje plan har ett antal inkluderade kreditupplysningar per månad
(CreditChecksIncluded) samt ett överskjutande pris per leveransmetod. När den
inkluderade kvoten är förbrukad:
- Om vald leveransmetod har ett överskjutande pris konfigurerat — anropet tillåts och överskjutande registreras per upplysning för fakturering.
-
Om vald leveransmetod inte har ett överskjutande pris — anropet returnerar
429. Byt leveransmetod eller uppgradera din plan.
Se prissättningen för inkluderade och överskjutande priser per plan.
Testläge
Nya konton skapas i testläge (IsTestMode = true). I testläge skickas inte SMS till
mottagaren — det loggas internt. Du kan öppna hostedUrl direkt i webbläsaren för att
testa godkännandeflödet. Du stänger av testläget själv under
Inställningar när ditt konto har validerats av TIC — se
Testläge & testdata.