Colombia SOAT and RTM Verification by API

Colombia SOAT and RTM Verification API (2026): Keep Every Fleet Vehicle Compliant with 3 Parameters

Tabla of Contents
Share this article

Short answer: To check a vehicle’s SOAT and RTM in Colombia by API, send a GET request to https://api.verifik.co/v2/co/runt/vehiculo with the plate and the owner’s document type and number. Verifik returns RUNT data showing whether each document is valid (valid) and when it expires (dueDate). Calls are paid with smartCHECK credits, from $49 a month.

If you run a fleet, a mobility platform or an insurance operation, knowing whether a vehicle’s SOAT (mandatory traffic accident insurance) and RTM (revisión técnico-mecánica, the technical inspection) are current can’t depend on someone checking plates one by one. Verifik’s Colombia SOAT and RTM verification API uses the RUNT – SOAT and RTM endpoint and takes 3 parameters (document type, document number and plate). In one JSON response you get the status of both documents, their issue and expiry dates and the vehicle’s basic details. Because the request includes the owner’s document, it also confirms that the vehicle is registered to the person who says they own it.

This guide covers when each document expires, which fields the API returns, how to integrate it and how to set up expiry monitoring for your whole fleet.

What SOAT and RTM are and why your fleet should verify them

SOAT is Colombia’s mandatory traffic accident insurance. The RTM is the inspection carried out at an authorized Centro de Diagnóstico Automotor (CDA) to confirm the vehicle is safe to drive and within emission limits. Both are recorded in RUNT, the national transit registry, and both are required to drive legally.

Non-compliance is widespread. According to a study by Intempo, built on historical RUNT records and reported by BluRadio on October 15, 2026:

  • 10.7 million vehicles had no valid SOAT in September 2026, up from 5.3 million in 2016. The evasion rate rose from 40.6% to 47.3%.
  • Of the 18.8 million vehicles required to hold both documents, 9.8 million (52.4%) had neither one up to date.
  • When the first RTM comes due, SOAT continuity drops from 89% to 46%, and 3.9 million young vehicles are close to that first inspection.
  • Owners who do renew their SOAT take 52 days on average after it expires. Evasion is 23.6% in public transport versus 47.8% in private service.

That last figure matters most for a business: the study links lower evasion in public transport to company controls and fleet supervision. Systematic checks work.

There is a practical reason too. RUNT Comunicado 060 of 2026 explains that the new online change-of-offender feature for camera tickets does not apply to electronic tickets related to SOAT or RTM. If one of your vehicles goes out with an expired document, you can’t reassign that ticket to the driver through that process. It’s better to catch it before the vehicle leaves.

When each document expires and what the RTM costs in 2026

SOAT is renewed every year. For the RTM, Infobae summarizes the current schedule as follows (prices in Colombian pesos):

Vehicle typeFirst RTMAfter thatApproximate 2026 fee
New private vehicle5 years after registration (6 years if registered between May 20, 2017 and May 19, 2018)Every yearCOP 368,853 (light vehicles)
Public service2 years after registrationEvery yearDepends on the category; heavy vehicles COP 476,201 to 562,800
Motorcycle2 years after registrationEvery yearCOP 247,490

The same source notes that driving without a valid inspection can lead to a ticket of 15 legal minimum daily wages and to the vehicle being impounded. The exact fee can vary slightly between CDAs.

Be careful about calculating these dates yourself. According to El Colombiano, the Ministry of Transport is preparing a reform of the National Traffic Code that includes, among other changes, new RTM deadlines. The reform is still being drafted and is not in force, but if it changes, rules based on registration dates would go stale. It’s safer to read validity and the expiry date straight from RUNT on every check.

What Verifik’s Colombia SOAT and RTM verification API returns

The 200 response contains a data object with four groups of information, plus a Verifik signature:

BlockFieldsWhat it’s for
IdentificationdocumentType, documentNumber, plateConfirm the plate matches the owner document you queried
vehicleInformationcolor, brand, line, status, enrollmentDate, plateCheck make, line and color, and that the vehicle is ACTIVO (active)
soatvalid, expeditionDate, dueDate, coverageStartDate, soatNumberKnow whether the policy is valid, when coverage started and when it expires
techReviewvalid, reviewNumber, expeditionDate, dueDate, requireTechReviewKnow whether the RTM is valid, its review number and its expiry date
TraceabilityconsultationDateTime, signature.dateTime, signature.messageKeep a record of when the check was made, signed “Certified by Verifik.co”

According to the documentation, the service queries RUNT in real time, covers the whole country and returns JSON.

How to integrate the API: cURL and JavaScript examples

You need your Verifik token in the Authorization: Bearer header and these 3 required parameters:

  • documentType: the owner’s document type. The documentation lists CC, CE, PA, RC and NIT.
  • documentNumber: the owner’s document number, without dots or spaces.
  • plate: the vehicle’s plate.

Here is the request with cURL:

curl -G "https://api.verifik.co/v2/co/runt/vehiculo" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $VERIFIK_TOKEN" \
  --data-urlencode "documentType=CC" \
  --data-urlencode "documentNumber=123456789" \
  --data-urlencode "plate=ABC123"

And here is the JavaScript (axios) example, based on the one in the documentation:

import axios from "axios";

const options = {
  method: "GET",
  url: "https://api.verifik.co/v2/co/runt/vehiculo",
  params: { documentType: "CC", documentNumber: "123456789", plate: "ABC123" },
  headers: {
    Accept: "application/json",
    Authorization: `Bearer ${process.env.VERIFIK_TOKEN}`,
  },
};

try {
  const { data } = await axios.request(options);
  console.log(data);
} catch (error) {
  console.error(error);
}

This is the sample 200 response published in the documentation:

{
  "data": {
    "documentType": "CC",
    "documentNumber": "123456789",
    "plate": "XXXXX",
    "vehicleInformation": {
      "color": "PLATEADO",
      "brand": "CHERY",
      "line": "QQ3 SQR7080 S116",
      "status": "ACTIVO",
      "enrollmentDate": "07/10/2010",
      "plate": "XXXXX"
    },
    "soat": {
      "valid": true,
      "expeditionDate": "10/09/2021",
      "dueDate": "11/09/2022",
      "coverageStartDate": "12/09/2021",
      "soatNumber": "XXXXXX"
    },
    "techReview": {
      "valid": true,
      "reviewNumber": "XXXXX",
      "expeditionDate": "12/09/2021",
      "dueDate": "12/09/2022",
      "requireTechReview": true
    },
    "consultationDateTime": "2022-03-03T17:10:00.568Z"
  },
  "signature": {
    "dateTime": "March 3, 2022 12:10 PM",
    "message": "Certified by Verifik.co"
  }
}

In the sample, SOAT and RTM dates come as day/month/year text, and consultationDateTime comes in ISO 8601 format. If there is no record for that plate and document, the API returns a 404 with {"code": "NotFound", "message": "Record not found."}. If a parameter is missing, it returns a 409 with the code MissingParameter. The documentation also shows a 409 with the message documentType must be one of: [CC] for an invalid document type, so start testing with CC (cédula) and check the other types in the documentation.

Want to try it? Create your free Verifik account and make your first call with your token.

How to monitor expiry dates across your fleet

Verifik’s documentation names fleet management explicitly, to monitor expiry dates and schedule renewals. A pattern that works well:

  1. Inventory: store the plate and the owner’s document type and number for every vehicle. For third-party fleets (drivers with their own car), collect them at onboarding.
  2. Periodic sweep: check the whole fleet every night or every week, depending on its size.
  3. Block: if soat.valid is false, the vehicle isn’t dispatched or activated on the platform. Do the same with techReview.valid when requireTechReview is true.
  4. Early warning: if dueDate is 30 days away or less, notify the driver or the maintenance team.
  5. Recheck after renewal: a newly paid policy can take a while to show up in RUNT. If the driver says they’ve renewed, check again the next day before closing the alert.
  6. Evidence: keep the response, with its signature and consultationDateTime, in the vehicle’s file.

This JavaScript script goes through the fleet and applies those rules:

import axios from "axios";

// Your fleet: plate + owner document for each vehicle
const fleet = [
  { plate: "ABC123", documentType: "CC", documentNumber: "123456789" },
];

const WINDOW_DAYS = 30;

// Dates come as day/month/year text, for example "11/09/2022"
const daysUntil = (dmy) => {
  const [d, m, y] = dmy.split("/").map(Number);
  return Math.ceil((new Date(y, m - 1, d) - Date.now()) / 86400000);
};

for (const vehicle of fleet) {
  const { data } = await axios.get("https://api.verifik.co/v2/co/runt/vehiculo", {
    params: vehicle,
    headers: {
      Accept: "application/json",
      Authorization: `Bearer ${process.env.VERIFIK_TOKEN}`,
    },
  });
  const { soat, techReview } = data.data;
  const alerts = [];

  if (!soat.valid) alerts.push("SOAT not valid: block dispatch");
  else if (daysUntil(soat.dueDate) <= WINDOW_DAYS) alerts.push(`SOAT expires in ${daysUntil(soat.dueDate)} days`);

  if (techReview.requireTechReview && !techReview.valid) alerts.push("RTM not valid: block dispatch");
  else if (techReview.requireTechReview && daysUntil(techReview.dueDate) <= WINDOW_DAYS) alerts.push(`RTM expires in ${daysUntil(techReview.dueDate)} days`);

  if (alerts.length) console.log(vehicle.plate, alerts.join(" | "));
}

If your operations team doesn’t code, smartCHECK supports bulk queries by uploading a CSV file.

Use cases by industry

  • Logistics and last mile: check own and third-party vehicles before assigning routes. It’s the same need Verifik’s logistics solution addresses.
  • Ride-hailing and delivery platforms: at onboarding, confirm the driver’s vehicle has a valid SOAT and RTM and is registered to the declared owner. After that, monitor expiry dates so you can deactivate in time.
  • Insurers and brokers: check current coverage before issuing a new policy or processing a claim, as the documentation suggests.
  • Car rental and leasing: avoid handing over a vehicle with a document about to expire, and schedule renewals from dueDate.
  • Dealers and used-car buyers: confirm document status before taking a used vehicle as a trade-in.

Verifik - Top Identity Verification Platform

Combine it with other Verifik checks

The vehicle is only half the risk. With the same account you can verify the driver and the rest of the vehicle’s record:

The difference from those endpoints is focus: /v2/co/runt/vehiculo returns just what you need to control SOAT and RTM validity, with direct validity and expiry fields, and checks the owner’s document along the way.

What kind of provider covers SOAT and RTM in Colombia

RUNT runs its own REST service for insurers. Its technical manual requires, among other things, a legal-entity digital certificate, a single authorized IP address and a user ID issued by RUNT. If your company isn’t an insurer, you’ll usually go through a provider. Here’s what each provider’s public page shows today:

ProviderColombia SOAT and RTM dataWhat it needsPublished price
Verifiksoat and techReview objects with validity and expiry, within a platform of 90+ APIs from 15+ countriesPlate plus the owner’s document type and numbersmartCHECK plans from $49 a month
PlacApiAn array of SOAT policies inside a single lookup that combines seven sources (RUNT, SOAT, tecnomecánica, SIMIT, taxes, FASECOLDA and pico y placa)Plate and owner’s documentPrepaid credits: from COP 349 per API query (30-pack) down to COP 99 (50,000-pack)
DiditIts database validation list includes cédula verification for Colombia (Registraduría / ANI); it lists no Colombian vehicle dataNot applicable to SOAT and RTM$0.20 per cédula verification
IDMeritIts Colombia page describes KYC and driving license verification; it doesn’t mention SOAT or RTMNot applicable to SOAT and RTMNot shown on that page

How much the Colombia SOAT and RTM verification API costs

Each call is deducted from your smartCHECK plan credits. According to the smartCHECK pricing page:

  • Starter: $49 a month, or $490 a year with $588 in credits.
  • Basic: $129 a month, or $1,290 a year with $1,548 in credits.
  • Plus: $299 a month, or $2,990 a year with $3,588 in credits.
  • Business: $649 a month, or $6,490 a year with $7,788 in credits.

Annual plans include 2 free months. You’ll see the cost of each /v2/co/runt/vehiculo call in your dashboard once you create your account. If you plan to monitor a large fleet, book a session with the team to estimate volume.

Quick answers

How do I check a vehicle’s SOAT and RTM by API? Send a GET request to Verifik’s /v2/co/runt/vehiculo with the plate and the owner’s document type and number. The response includes the soat and techReview objects, each with valid (valid or not) and dueDate (expiry date).

How often is the RTM required in Colombia? New private vehicles take it 5 years after registration; public service vehicles and motorcycles after 2 years. After that it’s every year. A Traffic Code reform being drafted could change the deadlines, so it’s best to read validity from RUNT.

Why does SOAT show as expired if it was just renewed? A newly paid policy can take a while to show up in RUNT. If the driver shows proof of payment, check again the next day before closing the alert or unblocking the vehicle.

How do I monitor expiry dates for a whole fleet? Check the fleet every night or week, block vehicles where valid is false and alert when dueDate is 30 days away or less. Without developers, smartCHECK supports bulk queries with a CSV file.

Can I check SOAT without knowing the owner? Yes. The plate-only RUNT lookup (/v2/co/runt/vehicle-by-plate-only) returns the vehicle record, including its SOAT policies and technical inspection, using only the plate.

What happens if a fleet vehicle drives without SOAT or RTM? It can be ticketed and impounded. According to RUNT Comunicado 060 of 2026, the online change-of-offender process doesn’t apply to electronic tickets related to SOAT or RTM.

Start controlling your fleet’s SOAT and RTM today

With a single check you know whether each vehicle can go out, when its documents expire and whether it’s registered to the owner you were given, with a signed record of every verification. Read the endpoint documentation and make your first call.

Ready to get started? Create your free Verifik account or book a demo to see how to automate SOAT and RTM checks in your operation.

Johan Castellanos - CEO Verifik

Frequently Asked Questions (FAQs)

➖

How do I check a vehicle's SOAT and RTM by API?

Send a GET request to Verifik's /v2/co/runt/vehiculo with the plate and the owner's document type and number. The response includes the soat and techReview objects, each with valid (valid or not) and dueDate (expiry date).

➕

How often is the RTM required in Colombia?

New private vehicles take it 5 years after registration; public service vehicles and motorcycles after 2 years. After that it's every year. A Traffic Code reform being drafted could change the deadlines, so it's best to read validity from RUNT.

➕

Why does SOAT show as expired if it was just renewed?

A newly paid policy can take a while to show up in RUNT. If the driver shows proof of payment, check again the next day before closing the alert or unblocking the vehicle.

➕

How do I monitor expiry dates for a whole fleet?

Check the fleet every night or week, block vehicles where valid is false and alert when dueDate is 30 days away or less. Without developers, smartCHECK supports bulk queries with a CSV file.

➕

Can I check SOAT without knowing the owner?

Yes. The plate-only RUNT lookup (/v2/co/runt/vehicle-by-plate-only) returns the vehicle record, including its SOAT policies and technical inspection, using only the plate.

➕

What happens if a fleet vehicle drives without SOAT or RTM?

It can be ticketed and impounded. According to RUNT Comunicado 060 of 2026, the online change-of-offender process doesn't apply to electronic tickets related to SOAT or RTM.