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. |
| sections Optional | object |
Vilka delar som ska ingå utöver grunduppgifterna (namn, folkbokföring och adresser, näringsförbud,
företagsengagemang, enskild firma och tidigare frågor), med de booleska fälten
relationships (familj och relationer), income (inkomst),
properties (fastigheter) och debts (skulder och betalningsanmärkningar).
En del som utelämnas eller är null ingår; bara false tar bort den.
Utan sections blir det en fullständig kreditupplysning, som tidigare.
Kreditvärdigheten (creditScore) räknas bara fram när både income och
debts ingår. Personen ser vilka delar som ingår när hen godkänner, och omfrågekopian
innehåller samma delar.
|
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"
}'
Bara vissa delar
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",
"sections": { "relationships": false, "properties": false }
}'
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",
"sections": { "relationships": true, "income": true, "properties": true, "debts": true }
}
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 (pågående skuldsanering) och, när en skuldsanering pågår, restructuring: status (started = beslut om att inleda, ansökan prövas; granted = beviljad), isBusinessOwner, startedDate, grantedDate, forecastEndDate, forecastEndIsEstimated (true = fem år från beslutet om att inleda; false = Kronofogdens prognos efter en förlängning) och extendedDate. |
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.