📁 API de Facturación Electrónica SRI - Complete Documentación

Postman Collection ReadyDeveloper FriendlyEcuador 2025 Compliant

🚀 Quick Start

1. Get Your API Token

# Register user
curl -X POST "{{ url('/api/register') }}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Your Name",
    "email": "[email protected]",
    "password": "YourSecurePassword123!",
    "password_confirmation": "YourSecurePassword123!"
  }'

# Get API token
curl -X POST "{{ url('/api/login') }}" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "YourSecurePassword123!"
  }'

2. Use API Token in Headers

Authorization: Bearer YOUR_API_TOKEN_HERE
Content-Type: application/json

3. Idempotency Header for Create Endpoints

For document creation endpoints you must also send:

Idempotency-Key: 2f5d7fc4-0ce8-4b44-9730-a29cd5b7f3f8

Rules:

  • New operation -> new key
  • Retry same operation -> same key
  • Same key with different payload -> 409 Conflict
  • Same key still processing -> 409 Conflict
  • 📊 API Overview

    📁 Endpoint Categories

    🔐 Autenticación

  • 🔑 Inicio de Sesión
  • 🚪 Cerrar Sesión
  • 🏢 Company Management

  • 🏢 Register Company
  • 📝 Update Company
  • 📜 Upload Certificate
  • 🖼️ Upload Logo
  • 📁 Document Management

  • 📄 Create Document - Factura, Nota de Crédito, Retención
  • 📦 Create Documents in Batch
  • 📊 Consultar Estado del Documento
  • 📥 Descargar PDF RIDE
  • 🔄 Document Annulment

  • 🚫 Request Annulment
  • 📋 Check Annulment Estado
  • 📋 List Annulments

  • 🔐 Autenticación

    🔑 Inicio de Sesión

    Endpoint: POST /api/login

    Autentica al usuario y obtiene un token de API para solicitudes posteriores.

    #### Parámetros de Solicitud

    Base URLAuthenticationRate LimitEstado
    ---------------------------------------------
    {{ url('/api') }}Bearer Token1000 requests/hour✅ Operational
    ParámetroTipoRequeridoDescripciónValidación
    ----------------------------------------------------
    emailstringCorreo electrónico del usuario`requiredemail`
    passwordstringContraseña del usuario`requiredstring`

    #### Cuerpo de la solicitud (JSON)

    {
      "email": "[email protected]",
      "password": "SecurePass123!"
    }
    

    #### Comando cURL

    curl -X POST "{{ url('/api/login') }}" \
      -H "Content-Type: application/json" \
      -d '{
        "email": "[email protected]",
        "password": "SecurePass123!"
      }'
    

    #### Respuesta exitosa (200 OK)

    {
      "status": "ok",
      "code": 200,
      "message": "Inicio de sesión exitoso",
      "data": {
        "user": {
          "id": 1,
          "name": "Juan Pérez",
          "email": "[email protected]"
        },
        "token": "1|abc123def456789012345678901234567890xyz",
        "token_type": "Bearer",
        "expires_in": 1440
      }
    }
    

    #### Respuestas de error

    Credenciales inválidas (401)

    {
      "status": "info",
      "code": 404,
      "message": "Credenciales inválidas",
      "error_code": "AUTH_001"
    }
    

    Cuenta inactiva (403)

    {
      "status": "info",
      "code": 403,
      "message": "La cuenta está inactiva. Por favor contacta al administrador.",
      "error_code": "AUTH_002"
    }
    

    🚪 Cerrar Sesión

    Endpoint: POST /api/logout

    Invalida el token de API actual.

    #### Encabezados de Solicitud

    HeaderValueDescripción
    ----------------------------
    AuthorizationBearer {token}Token de API válido
    Content-Typeapplication/jsonTipo de contenido

    #### Comando cURL

    curl -X POST "{{ url('/api/logout') }}" \
      -H "Authorization: Bearer YOUR_TOKEN" \
      -H "Content-Type: application/json"
    

    #### Respuesta exitosa (200 OK)

    {
      "status": "ok",
      "code": 200,
      "message": "Sesión cerrada correctamente",
      "data": []
    }
    

    #### Respuestas de error

    Token inválido (401)

    {
      "status": "error",
      "code": 401,
      "message": "Token inválido o expirado",
      "error_code": "AUTH_003"
    }
    


    📊 Estado Códigos Reference

    HTTP Estado Códigos

    Business Error Códigos

    Estado CódigoMeaningWhen It Occurs
    ---------------------------------------
    200 OKSuccessRequest processed éxitofully
    201 CreatedCreatedResource created éxitofully
    400 Bad RequestInvalid RequestMalformed JSON or invalid parameters
    401 UnauthorizedAuthentication FailedInvalid or missing API token
    403 ForbiddenAccess DeniedUser doesn't have permission
    404 Not FoundResource Not FoundRequested resource doesn't exist
    422 Unprocessable EntityValidation ErrorRequest validation failed
    429 Too Many RequestsRate LimitedToo many requests in time period
    500 Internal Server ErrorServer ErrorUnexpected server error
    Error CódigoDescripciónResolution
    --------------------------------------
    AUTH_001Invalid credentialsCheck email/password
    AUTH_002Account inactiveContact administrator
    AUTH_003Token expiredLogin again
    COMP_001Company not foundVerify company RUC
    COMP_002Company inactiveActivate company account
    DOC_001Document sequence existsUse next sequential number
    DOC_002Total amount mismatchVerify calculations
    DOC_003Invalid customer typeCheck identification datos
    SRI_001Certificate invalidUpload valid certificate
    SRI_002Document not authorizedWait for authorization
    ANN_001Annulment deadline passedCheck SRI rules


    🚀 Best Practices

    Autenticación

    • Almacena los tokens de API de forma segura (nunca en código cliente)
    • Usa HTTPS en todas las solicitudes
    • Implementa un mecanismo de renovación de token
    • Maneja los tokens expirados correctamente
    • Rate Limiting

    • Implementa una estrategia de reintentos progresivos para fallos
    • Cachea respuestas no sensibles
    • Usa códigos HTTP apropiados
    • Manejo de Errores

    • Verifica primero el campo status
    • Maneja el objeto errores para fallas de validación
    • Implementa reintentos para errores recuperables
    • Registra errores para depuración
    • Seguridad

    • Valida todos los parámetros de entrada
    • Nunca expongas datos sensibles en las respuestas
    • Usa encabezados de autenticación correctos
    • Implementa CORS si es necesario

    • 🔧 Postman Collection

      Import Collection

    • Download this collection: Descargar colección Postman
    • Open Postman
    • Click Import → Select File
    • Upload the downloaded JSON file from docs/FactusEasy.postman_collection.json
    • Set environment variables for base_url, email, password

    Environment Variables

    {
      "base_url": "{{ url('/api') }}",
      "token": "",
      "company_ruc": "1712345678001",
      "external_id": "TEST-001"
    }
    


    📚 Additional Resources


    Last updated: January 2025 API Version: 1.0.0