DavyCorp APIs Cédulas y RUCS

Validación SRI Ecuador

Consulta cédulas y RUC en tiempo real contra los registros del Servicio de Rentas Internas.

BASE URL https://apis.davycorp.ec/v2/api/
POST /validar-cedula-ruc COMERCIAL
Modo comercial (req.isComercial = true). Requiere solo Bearer token (API Key). Los consumos se descuentan del límite de la cuenta.

Headers requeridos

Authorization Bearer TU_API_KEY REQUERIDO
Content-Type application/json REQUERIDO
Body
"identification": "1700002563"  // cédula (10 dígitos) o RUC (13 dígitos)
Ejemplos de consumo
cURL
JS Fetch
Node axios
Python
Java
C#
PHP
Go
Kotlin
Dart
Ruby
Rust
curl -X POST 'https://apis.davycorp.ec/v2/api//validar-cedula-ruc' \
  -H 'Authorization: Bearer TU_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"identification": "1700002563"}'
const res = await fetch('https://apis.davycorp.ec/v2/api//validar-cedula-ruc', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer TU_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ identification: '1700002563' })
});
const data = await res.json();
console.log(data);
import axios from 'axios';

async function validar(identification) {
  const { data } = await axios.post(
    'https://apis.davycorp.ec/v2/api//validar-cedula-ruc',
    { identification },
    { headers: {
        'Authorization': 'Bearer TU_API_KEY',
        'Content-Type': 'application/json'
    }}
  );
  return data;
}

validar('1700002563').then(console.log);
import requests

response = requests.post(
    'https://apis.davycorp.ec/v2/api//validar-cedula-ruc',
    json={'identification': '1700002563'},
    headers={
        'Authorization': 'Bearer TU_API_KEY',
        'Content-Type': 'application/json'
    }
)
data = response.json()

if data['status']:
    contribuyente = data['data']['contribuyente']
    print(f"Nombre: {contribuyente['nombreComercial']}")
    # Si es RUC también viene data['data']['infoRuc']
    if 'infoRuc' in data['data']:
        print(f"Estado RUC: {data['data']['infoRuc']['Estado_del_Contribuyente_en_el_RUC']}")
import java.net.http.*;
import java.net.URI;

public class SriValidar {
    public static void main(String[] args) throws Exception {
        String body = "{\"identification\": \"1700002563\"}";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://apis.davycorp.ec/v2/api//validar-cedula-ruc"))
            .header("Authorization", "Bearer TU_API_KEY")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(body))
            .build();

        HttpResponse<String> response = client.send(
            request, HttpResponse.BodyHandlers.ofString()
        );
        System.out.println(response.body());
    }
}
using System.Net.Http;
using System.Text;
using System.Text.Json;

var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer TU_API_KEY");

var json = JsonSerializer.Serialize(new { identification = "1700002563" });
var content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await client.PostAsync(
    "https://apis.davycorp.ec/v2/api//validar-cedula-ruc", content
);
Console.WriteLine(await response.Content.ReadAsStringAsync());
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://apis.davycorp.ec/v2/api//validar-cedula-ruc',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode(['identification' => '1700002563']),
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer TU_API_KEY',
        'Content-Type: application/json'
    ]
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);

// Cédula
echo $data['data']['contribuyente']['nombreComercial'];
// RUC (si aplica)
if (isset($data['data']['infoRuc']))
    echo $data['data']['infoRuc']['Estado_del_Contribuyente_en_el_RUC'];
package main

import (
    "bytes"; "encoding/json"; "fmt"; "io"; "net/http"
)

func main() {
    payload, _ := json.Marshal(map[string]string{
        "identification": "1700002563",
    })
    req, _ := http.NewRequest("POST",
        "https://apis.davycorp.ec/v2/api//validar-cedula-ruc",
        bytes.NewBuffer(payload))
    req.Header.Set("Authorization", "Bearer TU_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import okhttp3.*
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody

fun main() {
    val client = OkHttpClient()
    val body = """{"identification":"1700002563"}"""
        .toRequestBody("application/json".toMediaType())

    val request = Request.Builder()
        .url("https://apis.davycorp.ec/v2/api//validar-cedula-ruc")
        .post(body)
        .addHeader("Authorization", "Bearer TU_API_KEY")
        .addHeader("Content-Type", "application/json")
        .build()

    println(client.newCall(request).execute().body?.string())
}
import 'package:http/http.dart' as http;
import 'dart:convert';

Future<void> validar(String identification) async {
  final res = await http.post(
    Uri.parse('https://apis.davycorp.ec/v2/api//validar-cedula-ruc'),
    headers: {
      'Authorization': 'Bearer TU_API_KEY',
      'Content-Type': 'application/json',
    },
    body: jsonEncode({'identification': identification}),
  );
  final data = jsonDecode(res.body);
  print(data['data']['contribuyente']['nombreComercial']);
}
void main() => validar('1700002563');
require 'net/http'
require 'json'
require 'uri'

uri = URI.parse('https://apis.davycorp.ec/v2/api//validar-cedula-ruc')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.request_uri)
request['Authorization'] = 'Bearer TU_API_KEY'
request['Content-Type']  = 'application/json'
request.body = { identification: '1700002563' }.to_json

response = http.request(request)
data = JSON.parse(response.body)
puts data['data']['contribuyente']['nombreComercial']
// Cargo.toml: reqwest = { features = ["json"] }, tokio, serde_json
use reqwest::Client;
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();
    let res = client
        .post("https://apis.davycorp.ec/v2/api//validar-cedula-ruc")
        .header("Authorization", "Bearer TU_API_KEY")
        .json(&json!({ "identification": "1700002563" }))
        .send().await?
        .text().await?;
    println!("{}", res);
    Ok(())
}
Respuestas
200 — RUC (13 dígitos)
200 — Cédula (10 dígitos)
Errores
{
  "status": true,
  "data": {
    "infoRuc": {
      "Razon_Social": "AJILA LAPO ALBERTO DARIO",
      "RUC": "1738994453001",
      "Nombre_Comercial": "",
      "Estado_del_Contribuyente_en_el_RUC": "Activo",
      "Clase_de_Contribuyente": "Otro",
      "Tipo_de_Contribuyente": "Persona Natural",
      "Obligado_a_llevar_Contabilidad": "NO",
      "Actividad_Economica_Principal": "ACTIVIDADES DE PLANIFICACIÓN Y DISEÑO...",
      "Fecha_de_inicio_de_actividades": "05-04-2019",
      "Categoria_Mi_PYMES": "No declarado"
    },
    "contribuyente": {
      "nombreComercial": "AJILA LAPO ALBERTO DARIO",
      "apellido": "AJILA LAPO",
      "nombre": "ALBERTO DARIO",
      "llevaContabilidad": "NO",
      "estado": "Activo"
    }
  }
}
{
  "status": true,
  "data": {
    "contribuyente": {
      "nombreComercial": "AJILA LAPO ALBERTO DARIO",
      "apellido": "AJILA LAPO",
      "nombre": "ALBERTO DARIO"
    }
  }
}
// 401 — Sin API Key
{ "error": "API Key requerida" }

// 403 — API Key inválida o expirada
{ "success": false, "error": "Api user inválido" }

// 429 — Límite de consultas alcanzado
{ "error": "Límite de consultas alcanzado", "status": false }

// 500 — Error interno
{ "error": "Error interno del servidor", "status": false }
POST /validar-cedula-ruc-demo DEMO
Modo demo (req.isDemo = true). Mismo Bearer token, mismas respuestas, pero sin descontar del límite de la cuenta. Ideal para pruebas de integración.

Headers requeridos

Authorization Bearer TU_API_KEY REQUERIDO
Content-Type application/json REQUERIDO
Body
"identification": "1700002563"  // cédula (10 dígitos) o RUC (13 dígitos)
Ejemplos de consumo
cURL
JS Fetch
Node axios
Python
Java
C#
PHP
Go
Kotlin
Dart
Ruby
Rust
curl -X POST 'https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo' \
  -H 'Authorization: Bearer TU_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"identification": "1700002563"}'
const res = await fetch('https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer TU_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ identification: '1700002563' })
});
const data = await res.json();
console.log(data);
import axios from 'axios';

const { data } = await axios.post(
  'https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo',
  { identification: '1700002563' },
  { headers: {
      'Authorization': 'Bearer TU_API_KEY',
      'Content-Type': 'application/json'
  }}
);
console.log(data);
import requests

response = requests.post(
    'https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo',
    json={'identification': '1700002563'},
    headers={
        'Authorization': 'Bearer TU_API_KEY',
        'Content-Type': 'application/json'
    }
)
print(response.json())
import java.net.http.*;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo"))
    .header("Authorization", "Bearer TU_API_KEY")
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(
        "{\"identification\": \"1700002563\"}"))
    .build();

System.out.println(
    client.send(request, HttpResponse.BodyHandlers.ofString()).body()
);
using System.Net.Http;
using System.Text;
using System.Text.Json;

var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer TU_API_KEY");

var content = new StringContent(
    JsonSerializer.Serialize(new { identification = "1700002563" }),
    Encoding.UTF8, "application/json"
);
var res = await client.PostAsync(
    "https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo", content
);
Console.WriteLine(await res.Content.ReadAsStringAsync());
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode(['identification' => '1700002563']),
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer TU_API_KEY',
        'Content-Type: application/json'
    ]
]);
print_r(json_decode(curl_exec($ch), true));
curl_close($ch);
package main

import (
    "bytes"; "encoding/json"; "fmt"; "io"; "net/http"
)

func main() {
    payload, _ := json.Marshal(map[string]string{
        "identification": "1700002563",
    })
    req, _ := http.NewRequest("POST",
        "https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo",
        bytes.NewBuffer(payload))
    req.Header.Set("Authorization", "Bearer TU_API_KEY")
    req.Header.Set("Content-Type", "application/json")
    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import okhttp3.*
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody

val client = OkHttpClient()
val body = """{"identification":"1700002563"}"""
    .toRequestBody("application/json".toMediaType())
val request = Request.Builder()
    .url("https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo")
    .post(body)
    .addHeader("Authorization", "Bearer TU_API_KEY")
    .addHeader("Content-Type", "application/json")
    .build()
println(client.newCall(request).execute().body?.string())
import 'package:http/http.dart' as http;
import 'dart:convert';

final res = await http.post(
  Uri.parse('https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo'),
  headers: {
    'Authorization': 'Bearer TU_API_KEY',
    'Content-Type': 'application/json',
  },
  body: jsonEncode({'identification': '1700002563'}),
);
print(jsonDecode(res.body));
require 'net/http'
require 'json'; require 'uri'

uri = URI.parse('https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new(uri.request_uri)
req['Authorization'] = 'Bearer TU_API_KEY'
req['Content-Type']  = 'application/json'
req.body = { identification: '1700002563' }.to_json
puts JSON.parse(http.request(req).body)
use reqwest::Client;
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let res = Client::new()
        .post("https://apis.davycorp.ec/v2/api//validar-cedula-ruc-demo")
        .header("Authorization", "Bearer TU_API_KEY")
        .json(&json!({ "identification": "1700002563" }))
        .send().await?.text().await?;
    println!("{}", res);
    Ok(())
}
Respuestas (idénticas al endpoint comercial)
200 — RUC (13 dígitos)
200 — Cédula (10 dígitos)
Errores
{
  "status": true,
  "data": {
    "infoRuc": {
      "Razon_Social": "AJILA LAPO ALBERTO DARIO",
      "RUC": "1738994453001",
      "Nombre_Comercial": "",
      "Estado_del_Contribuyente_en_el_RUC": "Activo",
      "Clase_de_Contribuyente": "Otro",
      "Tipo_de_Contribuyente": "Persona Natural",
      "Obligado_a_llevar_Contabilidad": "NO",
      "Actividad_Economica_Principal": "ACTIVIDADES DE PLANIFICACIÓN Y DISEÑO...",
      "Fecha_de_inicio_de_actividades": "05-04-2019",
      "Categoria_Mi_PYMES": "No declarado"
    },
    "contribuyente": {
      "nombreComercial": "AJILA LAPO ALBERTO DARIO",
      "apellido": "AJILA LAPO",
      "nombre": "ALBERTO DARIO",
      "llevaContabilidad": "NO",
      "estado": "Activo"
    }
  }
}
{
  "status": true,
  "data": {
    "contribuyente": {
      "nombreComercial": "AJILA LAPO ALBERTO DARIO",
      "apellido": "AJILA LAPO",
      "nombre": "ALBERTO DARIO"
    }
  }
}
// 401 — Sin API Key
{ "error": "API Key requerida" }

// 403 — API Key inválida
{ "success": false, "error": "Api user inválido" }

// 429 — Límite alcanzado
{ "error": "Límite de consultas alcanzado", "status": false }

// 500 — Error interno
{ "error": "Error interno del servidor", "status": false }