Documento Equivalente Tiquete P.O.S (Estándar)#

El Documento Equivalente es un comprobante que respalda las transacciones de venta de bienes y/o servicios cuyo valor sea inferior a cinco (5) UVT. A través de SOVOS Saphety, en calidad de Proveedor Tecnológico autorizado por la DIAN, se facilita la generación, transmisión para validación, validación y expedición del documento, conforme a los requisitos y definiciones legales establecidos en el anexo técnico vigente regulado por la DIAN.

Note

Qué es P.O.S P.O.S (Point of Sale o Punto de Venta) es una solución de facturación que combina hardware y software para la emisión de documentos en puntos de venta. Este sistema genera un comprobante similar a una factura, pero que no cumple con todos los requisitos para ser considerado una factura legal completa, principalmente porque no incluye la identificación del cliente.

A continuación, se describen los métodos y estructuras para la creación de un Documento Equivalente Electrónico.

Creación de un Documento Equivalente (DE).#

Para consumir la API, es fundamental tener en cuenta el entorno en el que se trabajará, ya que SOVOS Saphety dispone de dos ambientes especificados en el apartado de Entornos.

Consumo del método de creación.#

metodoDE

El Verbo Http (acción) que se utiliza para la creación de este documento es:

POST

El método que se utiliza para la creación de este documento es:

    /v2/{virtualOperator}/outbounddocuments/posEquivalentDocumentAsync

Para esta petición se requiere como parámetro el alias de su operador virtual.

Parametro virtualOperator

Recuerde reemplazar en el método el parámetro {virtualOperator} con el alias de su operador virtual en minúsculas, por defecto el alias es “saphety”.

Body#

Estructura del mensaje JSON de un Documento Equivalente Electrónico.#

A continuación, encontrará la estructura base definida por Saphety para la creación de un Documento Equivalente Electrónico.

JSON (DTO)
{
    "IssueDate": "2024-07-02T15:43:09.958Z",
    "DueDate": "2024-07-02T15:43:09.958Z", //*
    "DeliveryDate": "2024-07-02T15:43:09.958Z", //*
    "Currency": "COP",
    "SeriePrefix": "EPOS", //**
    "SerieNumber": "211", //**
    "OperationType": "10",
    "SerieExternalKey": "djw/8fUBU2",
    "CorrelationDocumentId": "POSTMAN-{{$timestamp}}",
    "PaymentMeans": [
        {
            "Code": "20",
            "Mean": "1",
            "DueDate": "2023-11-27"
        }
    ],
    "IssuerParty": {
        "Identification": {
            "DocumentNumber": "{{nit}}",
            "DocumentType": "NIT",
            "CountryCode": "CO",
            "CheckDigit": "{{digitoverificacion}}"
        }
    },
    "CustomerParty": {
        "LegalType": "Legal",
        "Email": "correo@sovos.com",
        "TaxScheme": "ZZ",
        "ResponsabilityTypes": [
            "R-99-PN"
        ],
        "Identification": {
            "DocumentNumber": "{{nit}}",
            "DocumentType": "NIT",
            "CountryCode": "CO",
            "CheckDigit": "{{digitoverificacion}}"
        },
        "Name": "Saphety Transacciones Electrónicas S.A.S",
        "Address": {
            "DepartmentCode": "11",
            "CityCode": "11001",
            "AddressLine": "Calle 97a No. 9 - 45",
            "Country": "CO"
        }
    },
    "BuyerBenefits": { // Extensión Información Beneficios del Comprador
        "BuyerIdentificationDocumentNumber": "900606963", // Valor de la característica que se quiere informar (Código del comprador).
        "BuyerIdentificationName": "Saphety Transacciones Electrónicas S.A.S", // Valor de la característica que se quiere informar (Nombres y apellidos del comprador).
        "Points": "200" // Valor de la característica que se quiere informar (Cantidad de Puntos acumulados por el comprador).
    },
    "POSInformation": { // Extensión Información de la Caja de Venta
        "InventoryBoxPlate": " PV123", //Valor de la característica que se quiere informar (Placa de inventario de la Caja).
        "InventoryBoxLocation": "Entrada1", //Valor de la característica que se quiere informar (Ubicación de la caja ALMACEN).
        "VendorName": "John Doe", //Valor de la característica que se quiere informar (nombres y apellidos del cajero o vendedor).
        "InventoryBoxType": "Caja Rapida", //Valor de la característica que se quiere informar (Tipo de Caja).
        "SalesCode": "SC00001", //Valor de la característica que se quiere informar (Código de la Venta).
        "SalesSubTotal": " 136850.00" //Valor de la característica que se quiere informar (Subtotal de la venta).
    },
    "SoftwareMaker": {
        "LegalName": "string",
        "NameAndLastname": "string",
        "SoftwareName": "string"
    },
    "Lines": [
        {
            "Number": "1",
            "Quantity": "1",
            "QuantityUnitOfMeasure": "NAR",
            "TaxSubTotals": [
                {
                    "TaxCategory": "01",
                    "TaxPercentage": "19.00",
                    "TaxableAmount": "115000.00",
                    "TaxAmount": "21850.00"
                }
            ],
            "TaxTotals": [
                {
                    "TaxCategory": "01",
                    "TaxAmount": "21850.00"
                }
            ],
            "UnitPrice": "115000.00",
            "GrossAmount": "115000.00",
            "NetAmount": "115000.00",
            "Item": {
                "Gtin": "987654321",
                "Description": "Descripcion del producto o servicio"
            }
        }
    ],
    "Notes": [
        "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. "
    ],
    "TaxSubTotals": [
        {
            "TaxCategory": "01",
            "TaxPercentage": "19.00",
            "TaxableAmount": "115000.00",
            "TaxAmount": "21850.00"
        }
    ],
    "TaxTotals": [
        {
            "TaxCategory": "01",
            "TaxAmount": "21850.00"
        }
    ],
    "Total": {
        "GrossAmount": "115000.00",
        "TotalBillableAmount": "136850.00",
        "PayableAmount": "136850.00",
        "TaxableAmount": "115000.00",
        "AllowancesTotalAmount": "0.00",
        "ChargesTotalAmount": "0.00",
        "PrePaidTotalAmount": "0.00"
    },
    "PrepaidPayments": [
        {
            "PaidDate": "2023-11-27",
            "PaidAmount": "0.00"
        }
    ],
    "AllowanceCharges": [
        {
            "ChargeIndicator": "false",
            "BaseAmount": "100000.00",
            "ReasonCode": "00 ",
            "Reason": "Discount",
            "Amount": "0.00",
            "Percentage": "0",
            "SequenceIndicator": "1"
        },
        {
            "ChargeIndicator": "true",
            "BaseAmount": "100000.00",
            "ReasonCode": "00",
            "Reason": "charge",
            "Amount": "0.00",
            "Percentage": "0.00",
            "SequenceIndicator": "2"
        }
    ]
}

Términos importantes

A continuación, se describen las secciones clave del mensaje JSON para una Factura Electrónica de Venta:

  • A nivel global de la factura: Contiene información general como número consecutivo, fecha de emisión, forma y medio de pago, valor total, impuestos y descuentos globales, entre otros.

  • A nivel de línea: Describe los productos o servicios facturados, con sus respectivos valores unitarios, cantidades, descuentos, impuestos, retenciones, etc.

  • Emisor: Información completa de la persona natural o jurídica que emite la factura.

  • Adquiriente: Datos de identificación del receptor del documento (cliente o comprador).

Respuesta#

{
    "IsValid": true,
    "Warnings": [],
    "Errors": [],
    "ResultData": "a17bf0a2-8345-4d28-951b-fcfbdb89d50d",
    "ResultCode": 200
}
{
    "IsValid": false,
    "Warnings": [],
    "Errors": [
        {
            "Field": "POSEquivalentDocument.SerieExternalKey",
            "Code": "Invalid",
            "Description": "The value [{{serieexternalkeyDE}}] is not a valid [SerieExternalKey].",
            "ExplanationValues": [
                "^([A-Z]|[a-z]|[0-9]|\\+|\/){10}$"
            ]
        }
    ],
    "ResultData": "00000000-0000-0000-0000-000000000000",
    "ResultCode": 400
}

Referencia: Swagger#

Para obtener más información, puedes consultar la documentación del API de SOVOS Saphety en Swagger. A continuación, se indican los enlaces según el ambiente: