Stamp Duty Land Tax (SDLT) API

Calculate UK stamp duty land tax for residential and commercial properties with the latest 2026 rates

REST API
JSON Responses
API Key Authentication
2026 SDLT Rates

Overview

The Stamp Duty Land Tax (SDLT) API provides accurate calculations for stamp duty taxes on property purchases in England and Northern Ireland using the latest 2026 rates. Our API handles all buyer types, surcharges, and property types with detailed breakdown calculations.

This API provides:

  • Residential property SDLT calculations with 2026 rates
  • Commercial property SDLT calculations
  • First-time buyer relief calculations
  • Additional property surcharge (5%)
  • Non-UK resident surcharge (2%)
  • Detailed breakdown by tax bands

Current 2026 SDLT Rates:

Residential Property

  • Up to £125,000: 0%
  • £125,001 - £250,000: 2%
  • £250,001 - £925,000: 5%
  • £925,001 - £1.5m: 10%
  • Above £1.5m: 12%

Commercial Property

  • Up to £150,000: 0%
  • £150,001 - £250,000: 2%
  • Above £250,000: 5%

This API is ideal for:

  • Conveyancing software requiring automated SDLT calculations
  • Estate agents providing purchase cost estimates
  • Mortgage brokers calculating total transaction costs
  • Property investment platforms showing tax implications
  • Financial advisors and accountants
  • Property portals displaying stamp duty costs

Important Note

These calculations are based on current SDLT rates for England and Northern Ireland. Scotland and Wales have different land transaction taxes. Always verify with HMRC for legal purposes.

Authentication

All requests to the SDLT API require authentication using an API key. You can obtain your API key from your PropertyInsights dashboard after subscribing to an API plan.

Include your API key in the request header as follows:

X-API-Key: your_api_key_here

Security Warning

Never expose your API key in client-side code. Always make API calls from your server-side application to protect your credentials.

Endpoints

Base URL

https://propertyinsights.co.uk/api/v1/

Calculate SDLT

POST
/sdlt/calculate

Calculate stamp duty land tax for a property purchase including all applicable surcharges and detailed breakdown by tax bands.

Request Parameters

POST /sdlt/calculate

Send parameters as JSON in the request body.

ParameterRequiredTypeDescription
propertyTypeRequiredStringEither "residential" or "commercial"
propertyPriceRequiredNumberPurchase price in GBP (e.g., 500000)
firstTimeBuyerOptionalBooleanTrue if first-time buyer (residential only). Defaults to false.
higherRateOptionalBooleanTrue if additional property purchase (residential only). Defaults to false.
ukResidentOptionalBooleanFalse if non-UK resident (residential only). Defaults to true.

Default Values: If you omit optional parameters, the API will assume: firstTimeBuyer=false, higherRate=false, ukResident=true.

Non-UK Resident: You're considered a non-UK resident if you haven't been present in the UK for at least 183 days during the 12 months before the property purchase.

Billing details in the response

Successful chargeable JSON responses include a top-level billing object. The endpoint examples on this page focus on the endpoint-specific data, so this repeated block may not be shown in every example.

"billing": {
  "mode": "prepaid",
  "creditsCharged": 1,
  "creditsRemaining": 1999,
  "creditsRefreshAt": "2026-08-14T09:30:00.000Z"
}
Field or headerMeaning
billing.creditsCharged
X-Credits-Charged
Credits charged by this call. Failed and non-chargeable calls return 0 in the header.
billing.creditsRemaining
X-Credits-Remaining
The credit balance after the call.
billing.creditsRefreshAt
X-Credits-Refresh-At
The next monthly credit refresh as an ISO 8601 timestamp. Trial and non-renewing balances return null and omit the header.

All authenticated API-key calls expose the billing headers, including validation errors and zero-credit status or management requests. Only successful chargeable JSON responses add the billing object to the response body.

Response Format

All API responses are returned in JSON format. The standard response structure is as follows:

{
  "success": boolean,
  "data": {
    // Response data varies by endpoint
  },
  "error": {
    "code": string,
    "message": string
  } // Only present if success is false
}

Successful SDLT Calculation Response

{
  "success": true,
  "data": {
    "propertyPrice": 500000,
    "propertyType": "residential",
    "firstTimeBuyer": true,
    "higherRate": false,
    "ukResident": true,
    "stampDuty": 10000,
    "breakdown": [
      {
        "band": "£0 - £300,000",
        "rate": "0%",
        "amount": 0
      },
      {
        "band": "£300,000 - £500,000",
        "rate": "5.0%",
        "amount": 10000
      }
    ],
    "surcharges": {
      "additionalProperty": 0,
      "nonUkResident": 0
    }
  }
}

Response Fields

FieldTypeDescription
stampDutyNumberTotal SDLT amount in GBP
breakdownArrayDetailed breakdown by tax bands
surchargesObjectAdditional surcharges applied (residential only)

Examples

Example 1: Standard Residential Property

POST https://propertyinsights.co.uk/api/v1/sdlt/calculate
Content-Type: application/json
X-API-Key: your_api_key_here

{
  "propertyType": "residential",
  "propertyPrice": 295000,
  "firstTimeBuyer": false,
  "higherRate": false,
  "ukResident": true
}

Result: £4,750 SDLT (£0 + £2,500 + £2,250)

Example 2: First-Time Buyer

POST https://propertyinsights.co.uk/api/v1/sdlt/calculate
Content-Type: application/json
X-API-Key: your_api_key_here

{
  "propertyType": "residential",
  "propertyPrice": 450000,
  "firstTimeBuyer": true,
  "higherRate": false,
  "ukResident": true
}

Result: £7,500 SDLT (first-time buyer relief applied)

Example 3: Additional Property + Non-UK Resident

POST https://propertyinsights.co.uk/api/v1/sdlt/calculate
Content-Type: application/json
X-API-Key: your_api_key_here

{
  "propertyType": "residential",
  "propertyPrice": 400000,
  "firstTimeBuyer": false,
  "higherRate": true,
  "ukResident": false
}

Result: £38,000 SDLT (base £10,000 + 5% additional property + 2% non-UK resident)

Example 4: Commercial Property

POST https://propertyinsights.co.uk/api/v1/sdlt/calculate
Content-Type: application/json
X-API-Key: your_api_key_here

{
  "propertyType": "commercial",
  "propertyPrice": 275000
}

Result: £3,250 SDLT (£0 + £2,000 + £1,250)

Error Handling

The API uses standard HTTP response codes and returns detailed error information in JSON format. All errors follow a consistent structure to help you handle them appropriately in your application.

HTTP CodeError CodeDescription
400MISSING_PROPERTY_TYPEProperty type parameter is required
400MISSING_PROPERTY_PRICEProperty price parameter is required
400INVALID_PROPERTY_TYPEProperty type must be "residential" or "commercial"
400INVALID_PROPERTY_PRICEProperty price must be a positive number
500CALCULATION_ERRORInternal calculation error occurred
401AUTHENTICATION_REQUIREDValid API key is required
402INSUFFICIENT_CREDITSNot enough API credits remaining to perform operation
500DATABASE_ERRORError accessing database - please try again
500INTERNAL_SERVER_ERRORAn unexpected error occurred

Error Response Format

{
  "success": false,
  "error": {
    "code": "INVALID_PROPERTY_TYPE",
    "message": "Property type must be \"residential\" or \"commercial\"."
  }
}

Rate Limits

API requests are subject to rate limiting based on your subscription plan. The current limits are:

PlanRequests per MinuteRequests per DayRequests per Month
Basic105005,000
Standard302,00030,000
Premium1005,000100,000
EnterpriseCustomCustomCustom

When you exceed your rate limit, the API will return a 429 Too Many Requests response. Each response includes the following headers to help you track your usage:

X-RateLimit-Limit: [requests-per-minute limit]
X-RateLimit-Remaining: [requests remaining in current window]
X-RateLimit-Reset: [timestamp when limit resets]

Need Help?

If you need assistance with implementation or have questions about the SDLT API, our support team is here to help.