Är du privatperson? Mina sidor

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.

POST /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)

200 OK
{
  "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)

200 OK
{
  "creditCheckId": "550e8400-e29b-41d4-a716-446655440000",
  "status": "Completed",
  "deliveredVia": "sms",
  "notificationOnly": true,
  "completedAt": "2026-04-15T12:00:05Z"
}

Response — Letter-flöde (Kivra)

200 OK
{
  "creditCheckId": "550e8400-e29b-41d4-a716-446655440000",
  "status": "Completed",
  "deliveredVia": "kivra",
  "completedAt": "2026-04-15T12:00:05Z"
}

Response — Letter-flöde (fysiskt brev)

200 OK

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.

GET /api/v1/check/{guid}

Path Parameters

Parameter Typ Beskrivning
guid Required guid Kreditupplysningens unika ID (creditCheckId).

Response — Slutförd

200 OK
{
  "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
creditScoreinteger · nullHeuristisk poäng. Högre = bättre.
personobjectPerson, namnkomponenter (SPAR-detaljer som tilltalsnamn, mellannamn), ålder, skyddad identitet, samordningsnummer.
banobject · nullAktivt näringsförbud (kallas ofta "betalningsanmärkning" i konsumentkontexter, men avser här näringsförbud från tingsrätt).
addressesarrayFolkbokföringsadress, kontaktadress, särskild postadress.
folkbokforingobject · nullLän, kommun, distrikt, folkbokföringsdatum.
deregistrationobject · nullAvregistreringsorsak (avliden, utvandrad, etc.). null för aktiva personer.
relationshipsarrayCivilstånd, make/maka, barn, vårdnadshavare (från SPAR).
debtSummaryobjectKronofogden-skulder: totalAmountInSek, recordOfNonPaymentCount (antal betalningsanmärkningar i KFM-mening), foreclosure, debtRestructuring.
incomearraySkatteverket-inkomstdeklaration per år. Fältnamn använder Skatteverkets källkoder (INK_TJ, INK_TAX_FORV, SK_SLUT m.fl.).
propertiesarrayFastigheter (Lantmäteriet): beteckning, taxeringsvärde, inteckningar.
companyRolesarrayBolagsengagemang: roller (VD, styrelse, firmatecknare), aktiv/avregistrerad status.
enskildFirmaobject · nullEnskild näringsverksamhet, inkl. F-skatt, moms och löneregistrering.
paymentRemarksarrayBetalningsanmärkningar — utslag i mål om betalningsföreläggande hos Kronofogdemyndigheten. Varje post: verdictDate, caseNumber, creditor, amountInSek.
creditChecksarrayTidigare 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

404 Not Found
{
  "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.

GET /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

200 OK

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.

GET /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

200 OK
{
  "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.

POST /api/v1/check/{guid}/cancel

Path Parameters

Parameter Typ Beskrivning
guid Required guid Kreditupplysningens unika ID.

Response — Avbruten

200 OK
{
  "creditCheckId": "550e8400-...",
  "status": "Expired",
  "cancelledAt": "2026-04-15T12:05:00Z"
}

Response — Felaktigt tillstånd

400 Bad Request
{
  "error": "Credit check cannot be cancelled in status 'Completed'"
}

Statusvärden

En identitets- och kreditkontroll kan ha följande statusvärden:

Status Beskrivning
RequestedUpplysning skapad, inväntar leverans.
SmsSentSMS skickat till personen (endast SMS-flöde).
PendingAuthPersonen har startat BankID-autentisering.
PendingConsentBankID-autentisering slutförd, inväntar godkännande.
ApprovedPersonen har godkänt — kreditupplysningen genereras.
CompletedKreditupplysning klar — tillgänglig via API.
RejectedPersonen nekade kreditupplysningen.
ExpiredTimeout efter 30 minuter, eller manuellt avbruten via /cancel.
FailedTekniskt 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.