Introduction
CertiVeh Partner API · Integra CertiVeh en tu aplicacion para que tus usuarios obtengan su certificado UPME sin salir de tu plataforma.
Esta API REST permite crear usuarios, iniciar tramites de certificacion UPME, subir documentos, procesar pagos y consultar el estado de cada tramite de forma programatica.
Authentication
Todas las solicitudes requieren el header X-API-Key con tu clave de partner.
X-API-Key: pk_live_xxxxxxxxxxxxx
Base URL
https://ykolfdgnlaxahtbuurgj.supabase.co/functions/v1/partner-api
Registers a new user associated with your partner account.
Request Body · Persona Natural
| Field | Type | Description |
|---|---|---|
| emailrequired | string | Email del usuario |
| phoneoptional | string | Telefono formato E.164 (ej: +573001234567) |
| person_typerequired | string | "natural" o "juridica" |
| first_namesrequired | string | Nombres |
| last_namesrequired | string | Apellidos |
| cedula_numberrequired | string | Numero de cedula (solo digitos) |
| date_of_birthoptional | string | Fecha nacimiento AAAA-MM-DD |
| expedition_dateoptional | string | Fecha expedicion cedula AAAA-MM-DD |
| ciiu_codeoptional | string | Codigo CIIU 4 digitos |
| departmentrequired | string | Departamento (ej: "ANTIOQUIA") |
| municipalityrequired | string | Municipio (ej: "MEDELLIN") |
| addressrequired | string | Direccion de residencia |
Additional Fields · Persona Juridica
| Field | Type | Description |
|---|---|---|
| company_namerequired | string | Razon social |
| nitrequired | string | NIT sin digito verificacion (9 digitos) |
| nit_dvoptional | string | Digito de verificacion (1 digito) |
| legal_rep_namerequired | string | Nombre representante legal |
| legal_rep_idrequired | string | Cedula representante legal |
| company_addressoptional | string | Direccion empresa |
Response 201
{
"user_id": "uuid-del-usuario",
"status": "created"
} Creates UPME certification tramite with vehicle data. Returns amount to pay.
Request Body
| Field | Type | Description |
|---|---|---|
| user_idrequired | string | UUID del usuario (from /users) |
| platerequired | string | Placa (6 chars, ej: "ABC123") |
| vinrequired | string | VIN (17 chars) |
| brandrequired | string | Marca (ej: "KIA") |
| linerequired | string | Linea/modelo (ej: "NIRO DESIRE") |
| yearrequired | number | Ano del modelo |
| engine_numberoptional | string | Numero motor (N/A para electricos puros) |
| displacement_kwoptional | string | Potencia en kW |
| propulsion_typerequired | string | "Electrico" o "Hibrido" |
| owner_namerequired | string | Nombre propietario registrado |
| owner_idrequired | string | Cedula/NIT propietario |
| purchase_value_coprequired | number | Valor bruto vehiculo COP (sin IVA) |
| purchase_daterequired | string | Fecha compra AAAA-MM-DD |
| dealer_namerequired | string | Nombre concesionario |
| invoice_numberrequired | string | Numero factura |
| buyer_namerequired | string | Nombre comprador en factura |
Response 201
{
"case_id": "uuid-del-tramite",
"amount_cop": 1131566,
"amount_cents": 113156600,
"breakdown": {
"costo_upme": 350906,
"honorarios": 599990,
"iva": 180670,
"discount": 0,
"total": 1131566
}
} Uploads required documents. Each document is processed automatically with AI.
multipart/form-data. Archivos soportados: JPG, PNG o PDF, max 10 MB. Form Fields
| Field | Type | Description |
|---|---|---|
| typerequired | string | Document type (see table below) |
| filerequired | file | File (JPG, PNG or PDF, max 10MB) |
Document Types
| Type value | Description |
|---|---|
| cedula-frente | Cedula ciudadania (frente) |
| cedula-reverso | Cedula ciudadania (reverso) |
| rut | RUT (persona natural) |
| tarjeta-propiedad-frente | Tarjeta propiedad vehiculo (frente) |
| tarjeta-propiedad-reverso | Tarjeta propiedad vehiculo (reverso) |
| factura | Factura compra vehiculo |
Response 200
{
"case_id": "uuid",
"type": "factura",
"ocr_status": "pending"
} Returns the current status and details of a tramite.
Response 200
{
"case_id": "uuid",
"status": "IN_PROGRESS",
"step": 5,
"progress_pct": 44,
"paid_at": "2026-05-20T...",
"created_at": "2026-05-15T...",
"updated_at": "2026-05-20T...",
"vehicle": {
"brand": "KIA",
"line": "NIRO DESIRE",
"year": 2025,
"plate": "QMX060",
"vin": "KNACP81EGT5328961",
"propulsion_type": "Hibrido",
"purchase_value_cop": 116805309
},
"documents": [
{ "type": "factura", "ocr_status": "done" },
{ "type": "tarjeta-propiedad-frente", "ocr_status": "done" }
],
"payment": {
"status": "APPROVED",
"amount_cents": 113156600,
"reference": "CERTIVEH-xxx-xxx"
}
} Tramite Statuses
| Status | Description |
|---|---|
| DRAFT | Tramite creado, pendiente de pago |
| DOCUMENT_REVIEW | Pago recibido, documentos en revision |
| IN_PROGRESS | En tramite ante la UPME |
| FILED | Solicitud de certificado enviada a UPME |
| APPROVED | UPME aprobo la solicitud |
| ACTION_REQUIRED | Se necesita una accion del usuario |
| COMPLETED | Certificado emitido |
| REJECTED | Solicitud rechazada por la UPME |
Initializes a payment session and returns Wompi integration data.
Response 200
{
"reference": "CERTIVEH-xxx-xxx",
"amount_cents": 113156600,
"amount_cop": 1131566,
"currency": "COP",
"public_key": "pub_prod_xxx",
"signature": "sha256-hash",
"redirect_url": "https://portal.certiveh.co/tramite/confirmacion?ref=xxx"
} Wompi Widget Integration
Use the response values to render the Wompi checkout button:
<script src="https://checkout.wompi.co/widget.js" data-render="button" data-public-key="{'{'+'public_key}'}" data-currency="{'{'+'currency}'}" data-amount-in-cents="{'{'+'amount_cents}'}" data-reference="{'{'+'reference}'}" data-redirect-url="{'{'+'redirect_url}'}" data-signature:integrity="{'{'+'signature}'}"> </script>
Webhooks
CertiVeh sends notifications to your webhook URL when a tramite status changes. Provide your webhook URL when requesting your API key.
Payload
{
"event": "tramite.status_changed",
"case_id": "uuid",
"status": "DOCUMENT_REVIEW",
"timestamp": "2026-05-20T15:30:00Z"
} Errors
All error responses follow a consistent format:
{
"error": "Description"
} HTTP Status Codes
- 400 Invalid request · missing field or wrong format
- 401 Invalid or inactive API key
- 403 Unauthorized · resource doesn't belong to your partner account
- 404 Resource not found
- 500 Internal server error
Integration Flow
Typical end-to-end integration in 6 steps:
- Create user
POST /users· Register the end-user with personal data. - Create tramite with vehicle data
POST /tramites· Submit vehicle details, receive pricing breakdown. - Upload documents
POST /tramites/:id/documents· Upload cedula, tarjeta de propiedad, and factura. - Initialize payment
POST /tramites/:id/payment· Get Wompi widget parameters and render checkout. - Poll status
GET /tramites/:id· Check tramite progress periodically. - Receive webhooks Your endpoint receives status updates automatically as the tramite progresses.
Contact
Para solicitar tu API key o soporte tecnico, escribe a:
contacto@certiveh.co