Täckning B2C API Documentation

The Täckning B2C API provides insurance premium calculation and application submission services for business transactions. This API is designed for B2B partners who need to integrate insurance services into their transaction workflows.

Base URL:
https://api.prod.tackning.se/prod/

Quick Start

1. Get Your API Key

Contact our technical support team at niclas@hellonest.se to get your API key and get started.

2. Make Your First Request

cURL Example
curl -X POST https://api.prod.tackning.se/submit-quote-application \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '
    {
    "price": "250000",
    "revenue": "344",
    "industry": "E-commerce",
    "country": "Albania",
    "role": "Seller",
    "email": "email@mail.com",
    "legal_issues": "no",
    "dependency": "yes",
    "audited": "no",
    "claim": "no",
    "insurance_declined": "yes",
    "targets": {
        "companyName": "Target AB",
        "orgNumber": "1234567890",
        "streetAddress": "Target Address 1",
        "postalCode": "111022",
        "city": "Stockholm",
        "country": "Sweden",
        "contactName": "John Doe"",
        "contactEmail": "john@company.se"
    },
    "buyer": {
        "companyName": "Buyer Company AB",
        "orgNumber": "1234567890",
        "streetAddress": "Buyer Address 1",
        "postalCode": "222033",
        "city": "Göteborg",
        "country": "Sweden",
        "contactName": "Jane Smith",
        "contactEmail": "jane@target.se"
    },
    "policyholder": {
        "companyName": "policyHolder",
        "orgNumber": "orgNumber",
        "streetAddress": "streetAddress",
        "postalCode": "postalCode",
        "city": "city",
        "country": "US",
        "contactName": "contactName",
        "contactEmail": "contactEmail@mail.com",
        "lastName": "lastName",
        "firstName": "firstName",
        "state": "AK"
    },
    "coInsured": [
     "companyName": "Co-insured Company AB",
        "orgNumber": "1234567890",
        "streetAddress": "Co-insured Address 1",
        "postalCode": "222033",
        "city": "Göteborg",
        "country": "Sweden",
        "contactName": "Sam Smith",
        "contactEmail": "sam@coinsured.se"
    ],
    "policyAgreed": "on"

  }'

Endpoints

POST

/submit-quote-application

Calculate an insurance premium for a business transaction. The API automatically calculates the insurance amount based on your selected percentage of the purchase price.

Business Logic Overview

  • • Insurance amount automatically calculated from selected percentage of purchase price
  • • Premium calculation uses proprietary risk assessment algorithms
  • • Selected percentage options: 10%, 20%, 30%, 40%, or 50%
  • • Maximum insurance amount: 60M SEK cap applies
Request Body
{
    "price": "250000",
    "revenue": "344",
    "industry": "E-commerce",
    "country": "Albania",
    "role": "Seller",
    "email": "email@mail.com",
    "legal_issues": "no",
    "dependency": "yes",
    "audited": "no",
    "claim": "no",
    "insurance_declined": "yes",
    "targets": {
        "companyName": "Target AB",
        "orgNumber": "1234567890",
        "streetAddress": "Target Address 1",
        "postalCode": "111022",
        "city": "Stockholm",
        "country": "Sweden",
        "contactName": "John Doe"",
        "contactEmail": "john@company.se"
    },
    "buyer": {
        "companyName": "Buyer Company AB",
        "orgNumber": "1234567890",
        "streetAddress": "Buyer Address 1",
        "postalCode": "222033",
        "city": "Göteborg",
        "country": "Sweden",
        "contactName": "Jane Smith",
        "contactEmail": "jane@target.se"
    },
    "policyholder": {
        "companyName": "policyHolder",
        "orgNumber": "orgNumber",
        "streetAddress": "streetAddress",
        "postalCode": "postalCode",
        "city": "city",
        "country": "US",
        "contactName": "contactName",
        "contactEmail": "contactEmail@mail.com",
        "lastName": "lastName",
        "firstName": "firstName",
        "state": "AK"
    },
    "coInsured": [
     "companyName": "Co-insured Company AB",
        "orgNumber": "1234567890",
        "streetAddress": "Co-insured Address 1",
        "postalCode": "222033",
        "city": "Göteborg",
        "country": "Sweden",
        "contactName": "Sam Smith",
        "contactEmail": "sam@coinsured.se"
    ],
    "policyAgreed": "on"

  } 
Example Body
const axios = require("axios");

const config = {
  headers: {
    "Content-Type": "application/json",
  },
};

const requestData = {
  ...as defined
};

try {
  const response = await axios.post(
    `${baseUrl}/submit-quote-application`,
    requestData,
    config
  );
  console.log("Premium:", response);
} catch (error) {
  console.error("Error:", error.response.data);
}
POST

/policyholder/bind

Bind the calculated quote amount with the user to make the policy, will generate a policy number to be kept by the user.

Request:All the quote data is taken from the submit-quote-application API
Request Body
{
  "policyholder_id": "099998y78ttyfg",
  "quote_id": "hiuwgw5ttyftfugyg",
  "product": "jhjkdhhdhdhehh"
}
Response:Includes applicationId and premium calculation
Example Response (200 Created)
{
    "policyData": {
        "id": "ca482443-28dc-4611-8a23-3b338d80f6a4",
        "policy_number": "QEWEDLJVTP",
        "policyholder": {
            "address": {
                "line_1": "address policy holder",
                "line_2": null,
                "city": "albama",
                "area_code": "123455",
                "country": "US",
                "state": "AL"
            },
            "type": "individual",
            "company_name": null,
            "reference_id": "251808e8-e032-497a-8fa4-809c9a89eb3f",
            "opt_in": true,
            "first_name": "first name",
            "last_name": "last name",
            "email": "contact@mail.com",
            "id": "5b90285a-56ba-4f1e-8c1e-526dcf12dbc3",
            "created_at": "2026-01-16T11:35:53.691000Z",
            "updated_at": "2026-01-16T11:35:53.691000Z"
        },
        "start_date": "2026-01-16T00:01:00",
        "end_date": "2027-07-16T00:01:00",
        "created_at": "2026-01-16T11:35:55.787000Z",
        "currency": "USD",
        "limit": 250000,
        "policy_fee": 250,
        "premium": 1950,
        "product_track": "standalone",
        "quote_id": "ca482443-28dc-4611-8a23-3b338d80f6a4",
        "status": "bound",
        "us_state_tax": 132,
        "country_tax": 0,
        "sale_price": 250000,
        "total_cost": 2332,
        "display_total_cost": "$2,332.00"
    }
}

Data Structures

Transaction Questions

All transaction questions must be answered with either "yes" or "no":

legal_issuesmajor disputes or lawsuits in the last 3 years?
dependencybusiness dependent on a single key customer?
auditedfinancial statements for the last 2 years audited?
claimany claim related to M&A?
insurance_declinedinsurer declined to offer insurance?

Validation Rules

Transaction Data

purchaseMsek5-200 MSEK
turnoverMsek1-500 MSEK

Insurance Data

selectedPercent10%, 20%, 30%, 40%, or 50%
periodMonths12, 24, or 36

Note: Insurance amount is automatically calculated based on purchase price and selected percentage. Must be within acceptable risk-based ranges.

Company Details

Target companiesAt least one required
Organization numberMust be 10 digits

Valid Categories

Real EstateITConstruction & EngineeringRenewable EnergyService CompaniesRetail & CommerceSchool & EducationCulture & EntertainmentTechTourism & LeisureFood & AgricultureForest & Nature

Error Handling

HTTP Status Codes

200 OKSuccessful calculation
201 CreatedApplication successfully submitted
400 Bad RequestValidation errors
403 ForbiddenInvalid or missing API key
500 Internal Server ErrorServer error

Error Response Format

Example Error Response
{
  "error": "Validation failed",
  "details": [
    {
      "field": "transaction.purchaseMsek",
      "message": "Purchase amount must be between 5-200 MSEK"
    }
  ]
}

Migration Guide (v1.0.0 → v1.1.0)

Breaking Changes

v1.1.0 includes breaking changes to improve business logic and data isolation.

What Changed

✅ REMOVED:`insuranceAmountSek` from request body (now calculated automatically)
✅ FIXED:`selectedPercent` now properly used in premium calculations
✅ ADDED:Enhanced API tracking and processing status

Migration Steps

1. Update Request Format

OLD (v1.0.0) - ❌ Remove this:

{
  "insurance": {
    "insuranceAmountSek": 10000000,  // ❌ REMOVE THIS
    "selectedPercent": 20
  }
}

NEW (v1.1.0) - ✅ Keep this:

{
  "insurance": {
    "selectedPercent": 20  // ✅ KEEP THIS
  }
}

Rate Limiting

Default rate limit:100 requests per minute per API key

Contact support if you need higher limits for production use.

Getting Started

Ready to integrate our API into your platform?

1

Contact Sales

Reach out to jenny@tackning.se to discuss your integration needs

2

Get API Key

We'll provide authentication credentials and onboarding support

3

Test Integration

Use our comprehensive examples to validate your implementation

4

Go Live

Launch with confidence backed by our expert insurance team

Support

For technical support or questions about integration:

Technical Support

niclas@hellonest.se

Insurance and Policy inquiries

jenny@tackning.se

Documentation

Regularly updated

Resources & Downloads

Version History

v1.1.0

Current
  • ✅ Automated Insurance Amount Calculation: API now calculates insurance amount from selectedPercent
  • ✅ Enhanced Tracking: API key usage, client IP, and processing status tracking
  • ✅ Business Logic Fix: selectedPercent now properly used in premium calculations
  • ✅ Improved Validation: Automatic validation of insurance amount ranges

v1.0.0

Initial release with premium calculation and application submission endpoints