Introducción
Bienvenido a la documentación de FacturaSend.
La API paraguaya de Facturación Electrónica con el cual podrás implementar rapidamente la integración
de tu software con la SET (Subsecretaría de Estado de Tributación) para generar, validar, firmar y enviar archivos XML de documentos electrónicos y generar el PDF KUDE para tu Empresa o tus Clientes.
Componentes de FacturaSend
FacturaSend es una plataforma compuesta de una Aplicación Web que actua como una consola o panel de control para configurar los datos del contribuyente, visualizar los documentos generados, invocar los eventos de la SET y obtener diferentes tipos de reportes y gráficos.
FacturaSend tambien esta compuesto de una capa de nivel de servicios que permite al integrador poder invocar las funciones mediante llamadas a la API REST, lo cual facilita la integración de cualquier Sistema o Aplicativo ya desarrollado sea este Escritorio, Web o móvil con el fin de emitir documentos electrónicos (Facturas, Autofacturas, Notas de Débitos y Créditos y Notas de retención electrónicas) validados por la SET y el poder realizar todas las operaciones vinculadas con la Facturacion Electronica (Sifen) como por ejemplo la invocación de eventos de cancelación o inutilización de documentos.
Con FacturaSend podrás administrar varias empresas cada una de ellas para cada uno de los clientes especifícos que posees, manteniendo un control sencillo e independiente de los datos e invitando a otros usuarios con diferentes roles para acceder de forma controlada a los recursos, por ejemplo, puedes brindar el acceso al Contador, para visualizar los datos de su propio entorno, visualizando solamente los datos de la o las empresas asignadas.
FacturaSend contempla todos los procesos requeridos para la generación de documentos electrónicos, como ser:
- Generación del documento XML segín el manual técnico de la SET.
- Firma del documento XML, utilizando el certificado digital de la Empresa contribuyente.
- Generación de la URL del Código QR dentro del documento XML.
- Comunicación con la SET (Envío de documentos XML, generación de lotes de envio, consulta de documentos, etc.)
- Generacion del Documento KUDE (Archivo PDF de la Factura o Documento electronico, personalizado de acuerdo al Logo del Emisor).
- Envío de email del documento electrónico al contribuyente receptor.
- Invocación de eventos de la SET (Cancelación, inutilización, etc.)
- Consulta de RUC.
Para encontrar más información en el Manual Técnico PDF de la SET y en el Portal de eKuatia.
Para quien fue pensado FacturaSend
FacturaSend fue pensado para los integradores o implementadores de Sistemas, desarrolladores o empresas de software que deseen evitar la complejidad de la Arquitectura de Software del Sifen no dejando de lado la implementación en sus aplicaciones y ofreciendo de igual forma ese servicio a sus clientes desde sus propios sistemas.
También para aquellos que desean evitarse la carga de trabajo pesada de analizar, diseñar, proyectar, desarrollar e implantar en producción un nuevo proyecto de software para contados clientes, por la escasa compensación en que resulta, pero que desean que los documentos electrónicos se generen desde sus sistemas de forma transparente para el Cliente final.
FacturaSend tambien fue pensado para los equipos internos de desarrollo de las empresas, o departamentos de informática de las organizaciones que ya posen un sistema y que requiera emitir documentos electrónicos.
Finalmente FacturaSend tambien puede ser utilizado por proveedores de software renombrados del exterior que tienen clientes en el País y desean incorporar funciones de facturación electrónicas en sus aplicaciones, para lo cual brindamos todo el soporte técnico y el acceso a la plataforma para poder crear documentos electrónicos.
Nota
FacturaSend realmente no fue pensado para los dueños de empresa, empresarios, emprendedores o los negocios directamente ya que FacturaSend no se trata de un sistema de ventas o control de inventario, pero si desea implementar facturación electrónica en su negocio y aun no posee un software le podemos recomendar uno de nuestros parters que ya tienen integrado su sistema con FacturaSend.
Seguridad
FacturaSend utiliza protocolos
con altos niveles de seguridad para la autenticación
y autorización
de los usuarios, permitiendo el acceso específico a los recursos de la API y utilizando Single Sign On (SSO) y oAuth para el acceso a la Aplicacion Web no almacenando contraseñas y utilizando tokens de actualizacion de corto tiempo
para evitar acceso no autorizado por ataques de fuerza bruta y virtualizando de forma independiente los datos para cada empresa o cliente.
Ofrecemos *trazabilidad sobre todas las operaciones realizadas, cambios en la eliminación de datos que puedan ser realizados, donde el administrador puede visualizar todos los eventos mediante un log.
Brindamos confidencialidad de los datos almacenados, mediante un contrato no obligatorio que puede ser firmado para generar una mayor confianza una vez que los documentos electrónicos emitidos sean reales y válidos, es decir al pasar al ambiente de producción de la SET.
Como empiezo a generar Documentos Electrónicos
El proceso normal para generar documentos electrónicos y realizar todos los eventos involucrados con la SET es obtener un timbrado de prueba y una habilitacion de acceso para el uso del SIFEN del ambiente de test, ademas de un certificado digital para firmar
los documentos, si, incluso en ambiente de Test. Luego de esa primera condicion se debe realizar la integracion de tu sistema y validar una bateria de test de todas las funcionalidades solicitadas por la SET, se libera el ambiente a produccion y ya se pueden emitir documentos tributarios electronicos reales y validos.
Si bien este es el camino establecido por ahora, el proceso de incluirte como empresa habilitada o a tus clientes en ambiente de test puede demorar un tiempo.
Para evitar esa espera, con FacturaSend puedes empezar a integrar tu sistema hoy mismo y emitir tus documentos electronicos de test rapidamente validando de forma temprana tu sistema o aplicacion, no necesitas ser un contribuyente habilitado por la SET para ser facturador electrónico ni poseer un Certificado Digital para empezar emitir comprobantes electrónicos desde nuestra API, no te preocupes por eso, trabajarás en un ambiente desconectado de la SET pero simularás todos los mismos procesos como si ya estuvieras habilitado utilizando un certificado digital de prueba para firmar los documentos.
Los documentos electrónicos emitidos en ambiente desconectado desde FacturaSend no tienen validez tributaria, y el PDF del KUDE impreso llevara la leyenda Generado desde un Ambiente no conectado a la SET
, por eso recomendamos que apenas inicies la integracion de tu sistema con FacturaSend inicies el proceso de solicitar la inclusion de tu empresa o la de tus clientes para emitir documentos electronicos en la SET.
Versiones de FacturaSend
FacturaSend cuenta con 2 versiones siendo la primera la versión on-line, que permite la integración temprana de tu aplicación pudiendo empezar a generar documentos de prueba sin ningun costo.
Si desea mayor privacidad, la versión de FacturaSend Empresarial, permite a las empresas contar con toda la infraestructura desarrollada dentro de los propios servidores privados de la empresa sean estos en una red interna o en la nube, para lo cual brindamos todo el apoyo logístico para el proceso de puesta en marcha del servicio.
Cuanto cuesta el Servicio
En su versión on-line, facturaSend tiene un costo que depende de la cantidad de documentos electrónicos generados por epresea, podrá encontrar ésta información en la sección Precios del Sitio Web.
En su versión empresarial, tiene un costo que depende del tiempo y periodo de implementación, así como la cantidad de recursos necesarios, puede ponerse en contacto con nostros para una cotización acorde a su empresa.
Cuando empiezo a pagar por el Servicio
Parar la versión on-line FacturaSend no tiene costo de adhesión, puedes empezar a utilizarlo inmediatamente sin pagar nada, ya que en un primer momento tendrás acceso a un ambiente "No conectado a la SET" donde podrás realizar todos los pasos para integrar tu sistema conforme la API REST descrita mas abajo, enviando y recibiendo objetos JSON.
Al empezar tendrás acceso a todas las funcionalidades de la aplicacion, podras ver e imprimir el PDF del Documento Electrónico (KUDE) y tus Documentos Electrónicos firmados con el certificado digital de prueba (XML) se guardaran en un lugar seguro en la nube por 5 años, no pagarás nada en absoluto hasta este punto.
Luego que hayas realizado toda tu integración y hayas obtenido tu empresa o la empresa de tu cliente la habilitación como facturador electrónico por parte de la SET, pasarás a un ambiente conectado de test, a través de una opción que podrás cambiarlo desde la Consola.
En el ambiente conectado a la SET de test, tus documentos ya se envían a la SET, y se obtienen las respuestas de esos envíos corespondientes, allí podrás seguir generando más documentos electrónicos ya con tu sistema integrado mientras que FacturaSend irá recolectando dicha información para remitirla en formato resumido posteriormente, pues la SET te pedirá dicha información. Aún ya estando en ambiente conectado no tendrás que abonar nada a FacturaSend, pues los documentos electrónicos creados en esta instancia aun no son documentos electrónicos reales validos.
Empezarás a abonar por el uso del servicio y de la API cuando hayas creado tu primer documento electrónico en ambiente de producción de la SET.
Pasos para utilizar FacturaSend
Empeza a utilizar FacturaSend es muy fácil.
- Puedes iniciar registrandote tu mismo en https://www.facturaSend.com.py
- Luego de loguearte a al aplicación, crea tu primera empresa.
- Completa los datos fiscales de la empresa que va emitir documentos electrónicos
- Carga un logotipo para la cabecera de la Factura (KUDE).
- Genera y guarda la API KEY que utilizarás para conectarte vía REST API
- Invoca a los diferentes métodos de la API REST que están descritas más abajo.
- Visualiza los documentos electrónicos generados XML y KUDE.
Test de FacturaSend
Un buen inicio para empezar la integración de tu sistema puede ser verificar la comunicación con FacturaSend.
Para simplemente probar la comunicación y ver si todo funciona de forma general, ejecuta la invocación de la capa de nivel de servicio como se muestra a la derecha.
Para simplemente probar la comunicacion:
# Verificando si FacturaSend responde a la petición
curl "https://api.facturasend.com.py/test"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
axios.get(`https://api.facturasend.com.py/test`)
.then( respuesta => {
console.log(respuesta);
});
Si todo sale bien, verá en pantalla:
FacturaSend funciona.
Autorización
Para autorizar el uso de la API cuando se hacen invocaciones al servicio, se requiere que se envíe la API KEY en el encabezado (header) de la petición
Ejemplo para obtener autorización de los servicios:
# Basta con pasar el encabezado correcto en cada petición
curl "https://api.facturasend.com.py/<tenantId>/test" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.get(`https://api.facturasend.com.py/<tenantId>/test`,
{headers}
).then( respuesta => {
console.log(respuesta);
});
Asegurese de reemplazar
<hdiweuw-92jwwle...>
con la API key y el<tenantId>
de la URL según lo que se proporciona en la Consola de Administración.
FacturaSend utiliza una API KEY para tener autorización a los servicios de la API. Para ello debes primeramente registrarte en la Consola con tus datos y añadir los datos de tu empresa en Consola de Administración.
FacturaSend espera que se incluya la API key con la clave Authorization
, en el siguiente formato:
Authorization: Bearer api_key_<hdiweuw-92jwwle...>
Servicios del DE
A continuación se detallan los servicios que pueden ser realizados desde FacturaSend sobre los DEs (Documentos Electrónicos) así como también servicios adicionales que provee el SIFEN, como lo es la consulta de RUC
Creación de un DE
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/de/create" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"tipoDocumento" : 1,
"establecimiento" : 1,
"punto" : "001",
"numero" : 5,
"descripcion" : "Aparece en el documento",
"observacion" : "Cualquier informacion de marketing, publicidad, promociones, sorteos, etc. para el receptor",
"fecha" : "2021-10-19T10:11:00",
"tipoEmision" : 1,
"tipoTransaccion" : 1,
"tipoImpuesto" : 1,
"moneda" : "PYG",
"cliente" : {
"contribuyente" : true,
"ruc" : "2005001-1",
"razonSocial" : "Marcos Adrian Jara Rodriguez",
"nombreFantasia" : "Marcos Adrian Jara Rodriguez",
"tipoOperacion" : 1,
"direccion" : "Avda Calle Segunda y Proyectada",
"numeroCasa" : "1515",
"departamento" : 11,
"departamentoDescripcion" : "ALTO PARANA",
"distrito" : 143,
"distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
"ciudad" : 3344,
"ciudadDescripcion" : "PASO ITA (INDIGENA)",
"pais" : "PRY",
"paisDescripcion" : "Paraguay",
"tipoContribuyente" : 1,
"documentoTipo" : 1,
"documentoNumero" : "2324234",
"telefono" : "061229382",
"celular" : "0983123765",
"email" : "cliente@empresa.com, cliente@personal.com",
"codigo" : "1548"
},
"usuario" : {
"documentoTipo" : 1,
"documentoNumero" : "157264",
"nombre" : "Marcos Jara",
"cargo" : "Vendedor"
},
"factura" : {
"presencia" : 1
},
"condicion" : {
"tipo" : 1,
"entregas" : [{
"tipo" : 1,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0
}, {
"tipo" : 3,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0,
"infoTarjeta" : {
"numero" : 1234,
"tipo" : 1,
"tipoDescripcion" : "Dinelco",
"titular" : "Marcos Jara",
"ruc" : "69695654-1",
"razonSocial" : "Bancard",
"medioPago" : 1,
"codigoAutorizacion" : 232524234
}
}, {
"tipo" : 2,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0,
"infoCheque" : {
"numeroCheque": "32323232",
"banco" : "Sudameris"
}
}],
"credito" : {
"tipo" : 1,
"plazo" : "30 días",
"cuotas" : 2,
"montoEntrega" : 1500000.00,
"infoCuotas" : [{
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-10-30"
}, {
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-11-30"
}]
}
},
"items" : [{
"codigo" : "A-001",
"descripcion": "Producto o Servicio",
"observacion": "Información adicional o complementaria sobre el producto",
"ncm": "123456",
"unidadMedida": 77,
"cantidad": 10.5,
"precioUnitario": 10800,
"cambio": 0.0,
"ivaTipo" : 1,
"ivaBase" : 100,
"iva" : 5,
"lote" : "A-001",
"vencimiento" : "2022-10-30",
"numeroSerie" : "",
"numeroPedido" : "",
"numeroSeguimiento" : ""
}]
}'
import axios from 'axios';
const data = {
"tipoDocumento" : 1,
"establecimiento" : 1,
"punto" : "001",
"numero" : 5,
"descripcion" : "Aparece en el documento",
"observacion" : "Cualquier informacion de marketing, publicidad, promociones, sorteos, etc. para el receptor",
"fecha" : "2021-10-19T10:11:00",
"tipoEmision" : 1,
"tipoTransaccion" : 1,
"tipoImpuesto" : 1,
"moneda" : "PYG",
"cliente" : {
"contribuyente" : true,
"ruc" : "2005001-1",
"razonSocial" : "Marcos Adrian Jara Rodriguez",
"nombreFantasia" : "Marcos Adrian Jara Rodriguez",
"tipoOperacion" : 1,
"direccion" : "Avda Calle Segunda y Proyectada",
"numeroCasa" : "1515",
"departamento" : 11,
"departamentoDescripcion" : "ALTO PARANA",
"distrito" : 143,
"distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
"ciudad" : 3344,
"ciudadDescripcion" : "PASO ITA (INDIGENA)",
"pais" : "PRY",
"paisDescripcion" : "Paraguay",
"tipoContribuyente" : 1,
"documentoTipo" : 1,
"documentoNumero" : "2324234",
"telefono" : "061229382",
"celular" : "0983123765",
"email" : "cliente@empresa.com, cliente@personal.com",
"codigo" : "1548"
},
"usuario" : {
"documentoTipo" : 1,
"documentoNumero" : "157264",
"nombre" : "Marcos Jara",
"cargo" : "Vendedor"
},
"factura" : {
"presencia" : 1
},
"condicion" : {
"tipo" : 1,
"entregas" : [{
"tipo" : 1,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0
}, {
"tipo" : 3,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0,
"infoTarjeta" : {
"numero" : 1234,
"tipo" : 1,
"tipoDescripcion" : "Dinelco",
"titular" : "Marcos Jara",
"ruc" : "69695654-1",
"razonSocial" : "Bancard",
"medioPago" : 1,
"codigoAutorizacion" : 232524234
}
}, {
"tipo" : 2,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0,
"infoCheque" : {
"numeroCheque": "32323232",
"banco" : "Sudameris"
}
}],
"credito" : {
"tipo" : 1,
"plazo" : "30 días",
"cuotas" : 2,
"montoEntrega" : 1500000.00,
"infoCuotas" : [{
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-10-30"
}, {
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-11-30"
}]
}
},
"items" : [{
"codigo" : "A-001",
"descripcion": "Producto o Servicio",
"observacion": "Información adicional o complementaria sobre el producto",
"ncm": "123456",
"unidadMedida": 77,
"cantidad": 10.5,
"precioUnitario": 10800,
"cambio": 0.0,
"ivaTipo" : 1,
"ivaBase" : 100,
"iva" : 5,
"lote" : "A-001",
"vencimiento" : "2022-10-30",
"numeroSerie" : "",
"numeroPedido" : "",
"numeroSeguimiento" : ""
}]
};
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post(`https://api.facturasend.com.py/<tenantId>/de/create`,
data,
{headers})
.then( respuesta => {
console.log(respuesta);
});
El comando de arriba, retornará lo siguiente:
{
"success" : true,
"deList" : [{
"cdc": "01800695631001002100694612021112410311184194",
"numero": "001-001-0000001",
"estado": "Aprobado",
"respuesta_codigo": "",
"respuesta_mensaje": ""
}]
}
Esta invocación, crea un documento electrónico y lo envía de forma síncrona a la SET, sólo es posible enviar el dato de 1 (un) Documento Electrónico por vez.
Se denomina proceso síncrono, cuando la SET valida e informa de forma inmediata la aprobación del documento electrónico, o el rechazo.
Mediante el proceso síncrono es posible conocer en línea si el Documento Electrónico fue aprobado o rechazado por algún error y saber qué error es para poder corregirlo, gracias a la respuesta del servicio.
El documento electrónico enviado con ésta peticion puede ser visualizado en la consola de FacturaSend.
Petición HTTP
POST https://api.facturasend.com.py/<tenantId>/de/create
Parámetros
Los parámetros se envían en formato JSON.
Para detalles de la estructura completa de atributos JSON que puede ser enviado como parámetro consulte la sección Parámetros del Objeto Principal
Debe tener en cuenta que para éste servicio en particular debe enviar el JSON en formato de un solo objeto, sin los corchetes [].
Respuesta
La respuesta obtenida luego de llamar a éste servicio se describe en la sección Respuesta de Creación de un DE
Recomendaciones
Se recomienda almacenar el identificador único del Documento electrónico o CDC (Código de Control) en su sistema, junto con la operación o movimiento que generó el Comprobante, ya sea que éste haya sido una Compra, Venta, Cobro, Pago, etc.
El valor de éste CDC será muy útil más adelante, cuando desee obtener una copia del XML del Documento o incluso si desea obtener el PDF KUDE para imprimirlo desde su aplicación. Otras operaciones importantes que podrá realizar son la de Cancelar el Documento Electrónico o informara a la SET sobre otros eventos.
Validaciones
FacturaSend realizará las validaciones de los valores de los atributos, conforme las especificaciones del manual técnico, antes de enviar a la SET, retornando el mensaje de error en la respuesta de invocación de éste servicio.
Creación de varios DEs
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/lote/create" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '[{
"tipoDocumento" : 1,
"establecimiento" : 1,
"punto" : "001",
"numero" : 5,
"descripcion" : "Aparece en el documento",
"observacion" : "Cualquier informacion de marketing, publicidad, promociones, sorteos, etc. para el receptor",
"fecha" : "2021-10-19T10:11:00",
"tipoEmision" : 1,
"tipoTransaccion" : 1,
"tipoImpuesto" : 1,
"moneda" : "PYG",
"obligaciones" : [{"codigo": "700"}, {"codigo": "113"}],
"cliente" : {
"contribuyente" : true,
"ruc" : "2005001-1",
"razonSocial" : "Marcos Adrian Jara Rodriguez",
"nombreFantasia" : "Marcos Adrian Jara Rodriguez",
"tipoOperacion" : 1,
"direccion" : "Avda Calle Segunda y Proyectada",
"numeroCasa" : "1515",
"departamento" : 11,
"departamentoDescripcion" : "ALTO PARANA",
"distrito" : 143,
"distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
"ciudad" : 3344,
"ciudadDescripcion" : "PASO ITA (INDIGENA)",
"pais" : "PRY",
"paisDescripcion" : "Paraguay",
"tipoContribuyente" : 1,
"documentoTipo" : 1,
"documentoNumero" : "2324234",
"telefono" : "061229382",
"celular" : "0983123765",
"email" : "cliente@empresa.com, cliente@personal.com",
"codigo" : "1548"
},
"usuario" : {
"documentoTipo" : 1,
"documentoNumero" : "157264",
"nombre" : "Marcos Jara",
"cargo" : "Vendedor"
},
"factura" : {
"presencia" : 1
},
"condicion" : {
"tipo" : 1,
"entregas" : [{
"tipo" : 1,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0
}, {
"tipo" : 3,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0,
"infoTarjeta" : {
"numero" : 1234,
"tipo" : 1,
"tipoDescripcion" : "Dinelco",
"titular" : "Marcos Jara",
"ruc" : "69695654-1",
"razonSocial" : "Bancard",
"medioPago" : 1,
"codigoAutorizacion" : 232524234
}
}, {
"tipo" : 2,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0,
"infoCheque" : {
"numeroCheque": "32323232",
"banco" : "Sudameris"
}
}],
"credito" : {
"tipo" : 1,
"plazo" : "30 días",
"cuotas" : 2,
"montoEntrega" : 1500000.00,
"infoCuotas" : [{
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-10-30"
}, {
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-11-30"
}]
}
},
"items" : [{
"codigo" : "A-001",
"descripcion": "Producto o Servicio",
"observacion": "Información adicional o complementaria sobre el producto",
"ncm": "123456",
"unidadMedida": 77,
"cantidad": 10.5,
"precioUnitario": 10800,
"cambio": 0.0,
"ivaTipo" : 1,
"ivaBase" : 100,
"iva" : 5,
"lote" : "A-001",
"vencimiento" : "2022-10-30",
"numeroSerie" : "",
"numeroPedido" : "",
"numeroSeguimiento" : ""
}]
}]'
import axios from 'axios';
const data = [{
"tipoDocumento" : 1,
"establecimiento" : 1,
"punto" : "001",
"numero" : 5,
"descripcion" : "Aparece en el documento",
"observacion" : "Cualquier informacion de marketing, publicidad, promociones, sorteos, etc. para el receptor",
"fecha" : "2021-10-19T10:11:00",
"tipoEmision" : 1,
"tipoTransaccion" : 1,
"tipoImpuesto" : 1,
"moneda" : "PYG",
"cliente" : {
"contribuyente" : true,
"ruc" : "2005001-1",
"razonSocial" : "Marcos Adrian Jara Rodriguez",
"nombreFantasia" : "Marcos Adrian Jara Rodriguez",
"tipoOperacion" : 1,
"direccion" : "Avda Calle Segunda y Proyectada",
"numeroCasa" : "1515",
"departamento" : 11,
"departamentoDescripcion" : "ALTO PARANA",
"distrito" : 143,
"distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
"ciudad" : 3344,
"ciudadDescripcion" : "PASO ITA (INDIGENA)",
"pais" : "PRY",
"paisDescripcion" : "Paraguay",
"tipoContribuyente" : 1,
"documentoTipo" : 1,
"documentoNumero" : "2324234",
"telefono" : "061229382",
"celular" : "0983123765",
"email" : "cliente@empresa.com, cliente@personal.com",
"codigo" : "1548"
},
"usuario" : {
"documentoTipo" : 1,
"documentoNumero" : "157264",
"nombre" : "Marcos Jara",
"cargo" : "Vendedor"
},
"factura" : {
"presencia" : 1
},
"condicion" : {
"tipo" : 1,
"entregas" : [{
"tipo" : 1,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0
}, {
"tipo" : 3,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0,
"infoTarjeta" : {
"numero" : 1234,
"tipo" : 1,
"tipoDescripcion" : "Dinelco",
"titular" : "Marcos Jara",
"ruc" : "69695654-1",
"razonSocial" : "Bancard",
"medioPago" : 1,
"codigoAutorizacion" : 232524234
}
}, {
"tipo" : 2,
"monto" : "150000",
"moneda" : "PYG",
"monedaDescripcion" : "Guarani",
"cambio" : 0.0,
"infoCheque" : {
"numeroCheque": "32323232",
"banco" : "Sudameris"
}
}],
"credito" : {
"tipo" : 1,
"plazo" : "30 días",
"cuotas" : 2,
"montoEntrega" : 1500000.00,
"infoCuotas" : [{
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-10-30"
}, {
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-11-30"
}]
}
},
"items" : [{
"codigo" : "A-001",
"descripcion": "Producto o Servicio",
"observacion": "Información adicional o complementaria sobre el producto",
"ncm": "123456",
"unidadMedida": 77,
"cantidad": 10.5,
"precioUnitario": 10800,
"cambio": 0.0,
"ivaTipo" : 1,
"ivaBase" : 100,
"iva" : 5,
"lote" : "A-001",
"vencimiento" : "2022-10-30",
"numeroSerie" : "",
"numeroPedido" : "",
"numeroSeguimiento" : ""
}]
}];
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post(`https://api.facturasend.com.py/<tenantId>/lote/create`,
data,
{headers}
)
.then( respuesta => {
console.log(respuesta);
});
Esta invocación, crea varios documentos electrónicos (hasta un máximo de 50 del mismo tipo) y los envía a la SET utilizando el proceso por lotes o asíncrono.
Se denomina proceso asíncrono, cuando no hay una respuesta inmediata de aprobación o rechazo desde la SET sobre los documentos enviados. Esto debe consultarse mediante otro proceso.
En éste caso NO es posible obtener en la respuesta, la información de si el Documento Electrónico fue Aprobado o Rechazado aún, pero FacturaSend se encargará de consultar esa información más tarde, invocando otro Servicio a la SET.
Todos los documentos electrónicos enviados con ésta peticion pueden ser visualizados en la consola de FacturaSend.
Petición HTTP
POST https://api.facturasend.com.py/<tenantId>/lote/create
El comando de arriba, retornará lo siguiente:
{
"success" : true,
"deList" : [{
"cdc": "01800695631001002100694612021112410311184194",
"numero": "001-001-0000001",
"xml": "",
"qr": "",
"dIVA5": "",
"dIVA10": ""
}]
}
Parámetros
Los parámetros del Documento Electrónico se envían en formato JSON y tienen la misma estructura que el de creación de 1 (un) sólo DE.
Para detalles de la estructura completa de atributos JSON que puede ser enviado como parámetro consulte la sección Parámetros del Objeto Principal
También se pueden especificar algunos parametros de consulta junto con la URL:
Parámetros de Consulta (QueryParam)
Parámetro | Requerido | Descripción |
---|---|---|
draft | No | Especifique true para generar el documento electrónico en borrador. Un DE en borrador no se envia a la SET hasta que se cofnirma. Su valor por defecto es false. |
xml | No | Especifique true para obtener en el resultado el/los XML/s generado/s en la operación. Su valor por defecto es false. |
qr | No | Especifique true para obtener en el resultado el/los QR/s generado/s en la operación. Su valor por defecto es false. |
tax | No | Especifique true para obtener en el resultado el valor total de los impuestos Iva 5 e Iva 10 del XML. Su valor por defecto es false. |
Por ejemplo, la petición puede ser realizado de ésta manera: POST https://api.facturasend.com.py/<tenantId>/lote/create?draft=true&xml=true&qr=true&tax=true.
Vea las secciones correspondientes para Confirmar o Rechazar un borrador.
Tenga en cuenta que a diferencia del método anterior, aqui se recibe un array de objetos, por lo cual se debe empezar el JSON con corchetes [] aunque vaya a enviar 1 (un) sólo documento. El límite de objetos es hasta 50 documentos electrónicos por cada invocación.
Respuesta
El formato de la respuesta es igual al método anterior y se describe en la sección Respuesta de Creación de un DE
Recomendaciones
El implementador es libre de utilizar el método más conveniente del servicio a implementar en su sistema, sea el sincrono o el asíncrono, de todas formas dada la similitud entre ambos, se recomienda implementar los dos tipos en su sistema y parametrizar uno u otro de forma opcional, ya que a veces la SET establece que sólo pueda utilizarse el asincrono (ésto podrá cambiar más adelante.)
Una situación que se dá con el proceso asíncrono es que como se realiza en dos tiempos, se puede entregar al Cliente, por ejemplo, una Factura Electrónica que sin nuestro conocimiento sufrió un rechazo por algún motivo y tenga que ser corregido en un paso siguiente. En éste caso existen técnicas que se deben manejar para no alterar el CDC (Código de Control) evitando que el Cliente tenga que devolver el Comprobante para un cambio. Además la SET brinda un plazo de 72 horas para realizar cualquier cambio o modificación sobre el comprobante.
Validaciones
- Todos los documentos que se envían utilizando éste método, deben ser del mismo tipo, por ejemplo todos ellos factura electrónica.
- Puede enviar como mínimo 1 documento y como máximo 50 por llamada, si tienen más debe realizarlo en una siguiente llamada.
Creación de recibo
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/recibo/create" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"fecha": "2023-10-26T15:59:43",
"establecimiento": 1,
"punto": 1017,
"numero": 3,
"concepto" : "Pago de Cuota XYZ - Manzana MANDUVIRA(100.000GS), Lote 10. - Pago de Interes XYZ - Manzana MANDUVIRA, Lote 10.(50.000GS)",
"total": 150000,
"cliente": {
"codigo": "00001",
"contribuyente": false,
"documentoNumero": "0",
"documentoTipo": 5,
"email": "",
"pais": "PRY",
"razonSocial": "CONSUMIDOR FINAL",
"tipoOperacion": 2,
"celular": "595973527155"
},
"condicion": {
"entregas": [
{
"cambio": 0,
"moneda": "PYG",
"monto": 45000,
"tipo": 1
}
],
"tipo": 1
},
"usuario": {
"cargo": "Vendedor",
"documentoNumero": "0",
"documentoTipo": 9,
"nombre": "admin"
},
"documentoAsociado": [{
"formato": 1,
"cdc": "55800695631001001000000112023102610001111110",
"monto": 185000,
"montoRetencionIva" : 10000,
"montoRetencionRenta" : 5000
}, {
"formato": 2,
"tipoDocumentoImpreso": 1,
"timbrado": "12345678",
"establecimiento": "002",
"punto": "002",
"numero": "0000003",
"serie": null,
"fecha": "2024-09-01",
"monto": 186000
}]
}'
import axios from 'axios';
const data = {
"fecha": "2023-10-26T15:59:43",
"establecimiento": 1,
"punto": 1017,
"numero": 3,
"concepto" : "Pago de Cuota XYZ - Manzana MANDUVIRA(100.000GS), Lote 10. - Pago de Interes XYZ - Manzana MANDUVIRA, Lote 10.(50.000GS)",
"total": 150000,
"cliente": {
"codigo": "00001",
"contribuyente": false,
"documentoNumero": "0",
"documentoTipo": 5,
"email": "",
"pais": "PRY",
"razonSocial": "CONSUMIDOR FINAL",
"tipoOperacion": 2,
"celular": "595973527155"
},
"condicion": {
"entregas": [
{
"cambio": 0,
"moneda": "PYG",
"monto": 45000,
"tipo": 1
}
],
"tipo": 1
},
"usuario": {
"cargo": "Vendedor",
"documentoNumero": "0",
"documentoTipo": 9,
"nombre": "admin"
},
"documentoAsociado": [{
"formato": 1,
"cdc": "55800695631001001000000112023102610001111110",
"monto": 185000,
"montoRetencionIva" : 10000,
"montoRetencionRenta" : 5000
}, {
"formato": 2,
"tipoDocumentoImpreso": 1,
"timbrado": "12345678",
"establecimiento": "002",
"punto": "002",
"numero": "0000003",
"serie": null,
"fecha": "2024-09-01",
"monto": 186000
}]
};
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post(`https://api.facturasend.com.py/<tenantId>/recibo/create`,
data,
{headers}
)
.then( respuesta => {
console.log(respuesta);
});
El recibo electrónico oficial de SIFEN aun está pendiente por parte de SIFEN. No obstante FacturaSend proporciona su propia versión del recibo electrónico, el cual soluciona la mayoría de las necesidades internas de una Empresa. El recibo de FacturaSend, también ya implementa muchas de las validaciones que implementa SIFEN con otros tipos de documentos electrónicos y cumple con la estructura de XML y Firma Digital, lo cual implica que si SIFEN lo implementa más adelante, probablemente habrá muy pocas modificaciones a ser realizadas para adaptar la versión actual de FacturaSend a la versión del SIFEN
El recibo queda completamente aprobado una vez enviado a FacturaSend, ya que éste no pasa a SIFEN.
El CDC de un recibo electrónico inicia con 55.
Cuando va a crear un recibo, puede especificar uno a varios documentos asociados, o puede no especificar ninguno.
Si el Recibo posee documentos asociados, debe especificar el monto de cada documento asociado, y no es necesario informar el data.total, pues este será recalculado con la sumatoria de los montos de cada documento asociado involucrado.
Si el Recibo no tiene documentos asociados, es obligatorio informar el data.total.
Petición HTTP
POST https://api.facturasend.com.py/<tenantId>/recibo/create
El comando de arriba, retornará lo siguiente:
{
"success" : true,
"reciboList" : [{
"cdc": "55800695631001001000001612021112410311184194",
"numero": "001-001-0000001",
"xml": "",
"estado": "Aprobado",
"respuesta_codigo": "0260",
"respuesta_mensaje": "Aprobado"
}]
}
Parámetros
Los parámetros del Recibo Electrónico se envían en formato JSON y tienen casi la misma estructura que un Documento electrónico. Solo se debe enviar 1 (un) recibo por vez.
Solicite al equipo de FacturaSend, los modelos de JSON para el recibo.
Respuesta
La respuesta de creación de un documento electrónico, representa la estructura de datos JSON que retorna la API de FacturaSend luego de haber solicitado la creación de un DE.
Abajo se describe el detalles de los atributos.
Respuesta
La respuesta de éste Servicio:
Atributos | Tipo | Description |
---|---|---|
success | boolean | true si no hubo errores en la transacción |
error | string | El mensaje de Error, en el caso de que el success = false, entonces aquí se especificará el mensaje de error. |
reciboList | array | El array con la respuesta del recibo procesado. Este array siempre devolverá 1 (un), pero es del tipo array por compatibilidad con otros servicios Los atributos de éste array se describen en Respuesta reciboList |
Atributos de la Respuesta reciboList
Atributos | Tipo | Description |
---|---|---|
cdc | string | Id único de 44 dígitos, que inicia con 55 generado para el Recibo Electrónico |
numero | string | Número de Recibo Electrónico generado en formato 001-001-0000001 |
estado | string | Estado del Recibo Electrónico generado, con el valor Aprobado |
respuesta_codigo | string | Mensaje de Respuesta de la SET (Se incluye con el valor 260 por compatibilidad) |
respuesta_mensaje | string | Se incluye con el valor Aprobado por compatibilidad |
xml (opcional) |
string | El archivo XML generado del recibo electronico. Este elemento solamente se retorna cuando se le pasa el valor true en el atributo xml como queryParam al crear el Recibo, ej: https://api.facturasend.com.py/<tenantId>/lote/create?xml=true |
Consulta DE por ID
Para consultar el DE:
# Consulta de un DE por el Id de Registro de FacturaSend
curl \
-X \
GET "https://api.facturasend.com.py/<tenantId>/de/id/24"
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.get(`https://api.facturasend.com.py/<tenantId>/de/id/24`,
{headers}
)
.then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success": true,
"result": {
"id": 24,
"fecha": "2022-08-11T18:49:26.840Z",
"rde": {
//Contenido del XML en formato JSON
},
"situacion": 4,
"is_conectado": 1,
"is_borrado": 0,
"lote_id": 404,
"lote_estado": 3,
"info_codigo": "1001",
"info_descripcion": "CDC duplicado"
}
}
Este servicio consulta los datos del DE por el Id de registro de FacturaSend, recuperando informaciones importantes sobre el DE.
Este servicio es similar al servicio "Consulta DE por CDC", con la diferencia del parámetro de entrada
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
id | Si | Id de Registro de FacturaSend |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si la consulta se ejecutó con éxito, false si dio algún error |
error | string | El mensaje de error en caso de que haya retornado success=false. |
result | objeto | Datos del Registro caso exista el DE, como id del registro, fecha, situacion, is_conectado, is_borrado, lote_estado, info_codigo e info_descripcion |
Consulta DE por CDC
Para consultar el DE por el CDC:
# Consulta de un DE por el Código de Control (CDC)
curl \
-X \
GET "https://api.facturasend.com.py/<tenantId>/de/cdc/01800695631001001000000612021112917595714694"
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.get(`https://api.facturasend.com.py/<tenantId>/de/cdc/01800695631001001000000612021112917595714694`,
{headers}
)
.then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success": true,
"result": {
"id": 764,
"fecha": "2022-08-11T18:49:26.840Z",
"rde": {
//Contenido del XML en formato JSON
},
"situacion": 4,
"is_conectado": 1,
"is_borrado": 0,
"lote_id": 404,
"lote_estado": 3,
"info_codigo": "1001",
"info_descripcion": "CDC duplicado"
}
}
Este servicio consulta los datos del DE del registro de FacturaSend, recuperando informaciones importantes para el control de flujo.
Este servicio es similar al servicio "Consulta DE por ID", con la diferencia del parámetro de entrada
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | Código CDC de 44 dígitos del Documento Electrónico |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si la consulta se ejecutó con éxito, false si dio algún error |
error | string | El mensaje de error en caso de que haya retornado success=false. |
result | objeto | Datos del Registro caso exista el DE, como id del registro, fecha, situacion, is_conectado, is_borrado, lote_estado, info_codigo e info_descripcion |
Consulta de estados de DE(s) por CDC(s)
Para consultar el estado del DTE:
# Consulta el estado de un DTE en base a un array de códigos de control (CDC)
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/de/estado"
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"cdcList" : [{
"cdc": "01800695631001001038720612021112917595714694"
}, {
"cdc": "01800695631001001000000612021312917595714694"
}, {
"cdc": "otro.."
}]
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"cdcList" : [{
"cdc": "01800695631001001038720612021112917595714694"
}, {
"cdc": "01800695631001001000000612021312917595714694"
}, {
"cdc": "otro.."
}]
};
axios.post(`https://api.facturasend.com.py/<tenantId>/de/estado`,
data,
{headers}
)
.then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success": true,
"deList" : [{
"cdc": "01800695631001001038720612021112917595714694",
"numero": "001-001-0000001",
"estado": "Aprobado",
"situacion": 2,
"fecha": "2022-04-02T08:56:58-04:00",
"respuesta_codigo": "0260",
"respuesta_mensaje": "Autorización del DE satisfactoria"
}, {
"cdc": "01800695631001001000000612021312917595714694",
"numero": "001-001-0000002",
"estado": "Aprobado",
"situacion": 2,
"fecha": "2022-04-02T08:56:58-04:00",
"respuesta_codigo": "0260",
"respuesta_mensaje": "Autorización del DE satisfactoria"
}, {
"cdc": "otro..",
"numero": "001-001-0000003",
"estado": "Aprobado",
"situacion": 2,
"fecha": "2022-04-02T08:56:58-04:00",
"respuesta_codigo": "0260",
"respuesta_mensaje": "Autorización del DE satisfactoria"
}]
}
Este servicio consulta el estado de los documentos electrónicos en FacturaSend, retornando también el código de respuesta que se obtuvo desde el SIFEN, asi como también su mensaje.
Puede utilizar éste método para consultar los estados de aquellos documentos que han sido enviados de forma asincrona y del cual no pudo conocer su situación al momento de su creación.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdcList | Si | Array de códigos CDC de los cuales se desea obtener el estado del Documento Electrónico Los atributos de éste array se pueden encontrar en la lista de abajo |
Parámetros de cdcList
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | Código CDC de 44 dígitos del Documento Electrónico |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si la consulta se ejecutó con éxito, false si dio algún error |
error | string | El mensaje de error en caso de que haya retornado success=false. |
deList | array | El array con las respuestas de los estados de cada DE consultado cuyos campos se describen en esta lista |
Respuesta deList de Consulta de Estado
Atributos | Tipo | Description |
---|---|---|
cdc | string | Id único de 44 dígitos del Documento Electrónico consultado |
fecha | date-time | Fecha de Proceso en el SIFEN en formato yyyy-MM-ddThh:mm:ss |
numero | string | Número de Documento Electrónico en formato 001-001-0000001 |
situacion | number | Situacion numerica en FacturaSend, con los posibles valores: -1 = Borrador 0 = Generado DE 1 = Enviado en un Lote 2 = Aprobado (Caso sea sincrono es inmediato) 3 = Aprobado con observacion 4 = Rechazado 98 = Inexistente 99 = Cancelado. Puede utilizar estos mismos estados en su Sistema |
respuesta_codigo | string | Código de la Respuesta de la SET |
respuesta_mensaje | string | Mensaje de Respuesta de la SET |
Obtener XML del DE
Para consultar el XML de un DTE:
# Consulta del XML de un DTE por el Código de Control (CDC)
curl \
GET "https://api.facturasend.com.py/<tenantId>/de/xml/01800695631001001000000612021112917595714694?json=false"
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios({
url: `https://api.facturasend.com.py/<tenantId>/de/xml/01800695631001001000000612021112917595714694?json=false`,
method: 'GET',
responseType: 'blob',
{headers}
})
.then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
Retorna el Contenido del XML
Este servicio consulta el documento electrónico en formato de contenido XML que fue emitido desde FacturaSend con el CDC pasado como parámetro.
No se realizan validaciones de estado, por lo cual se pueden obtener el XML de un DE aprobado como rechazado.
Recordando que el XML de un DE aprobado representa al archivo con valor fiscal y comercial almacenado en el eKuatia.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | Código CDC de 44 dígitos del Documento Electrónico |
json | No | Si se envia como 'true' en la queryParam (?json=true) entonces se recuperará el contenido del Archivo XML pero en formato de objeto JSON |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
main | text | Contenido del XML |
Obtener PDF del DE
Para obtener el PDF de uno o más documentos electrónicos:
# Obtiene el documento PDF de los Códigos de Control (CDC) que se pasan como parámetro
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/de/pdf" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"cdcList" : [{
"cdc": "01800695631001001038720612021112917595714694"
}, {
"cdc": "01800695631001001000000612021312917595714695"
}, {
"cdc": "otro.."
}],
"type": "base64",
"format": "ticket"
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"cdcList" : [{
"cdc": "01800695631001001038720612021112917595714694"
}, {
"cdc": "01800695631001001000000612021312917595714695"
}, {
"cdc": "otro.."
}],
"type": "base64",
"format": "ticket"
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/de/pdf`,
method: 'POST',
responseType: 'blob',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
Binario o base64 del Documento PDF
Este servicio consulta el/los documento/s PDF KUDE de uno o más documentos electrónicos (como máximo 50) desde FacturaSend.
En el caso de incluir más de un CDC, el sistema recuperara 1 sólo documento, pero con varias hojas, cada una de ellas conteneniendo el KUDE de los diferentes documentos electrónicos.
Este servicio no realiza validaciones de estado sobre el Documento Electronico para obtener el PDF, por lo cual debe saber que puede obtener el PDF tanto de un Documento Electrónico Aprobado como de uno Rechazado
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdcList | Si | Array de códigos CDC de los cuales se desea obtener el Documento PDF KUDE Los atributos de éste array, son iguales a la Consulta de Estados, que se pueden encontrar en la lista de arriba |
type | No | Tipo de información que se desea obtener Por defecto el Documento se recupera en formato Binario. La opción alternativa es 'base64' |
format | No | Especifique el formato de impresión para el Documento Electrónico específico, "ticket" o "custom". Si desea obtener el PDF en el formato por defecto del Sistema (especificado en el establecimiento) ignore ésta opción. Si en el establecimiento se especificó como "ticket" puede establecer format=a4 para generar dicho documento específico en formato A4. |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
main | binary | Documento PDF en formato binary o base64 |
Reenviar correo de un DE
Para enviar un correo electrónico al receptor del DE, utilize la siguiente API:
# Re-envia el correo al receptor
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/de/email" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"email" : "destino@email.com",
"cdcList" : [{
"cdc": "01800695631001001038720612021112917595714694"
}, {
"cdc": "01800695631001001000000612021312917595714695"
}, {
"cdc": "otro.."
}]
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"email" : "destino@email.com",
"cdcList" : [{
"cdc": "01800695631001001038720612021112917595714694"
}, {
"cdc": "01800695631001001000000612021312917595714695"
}, {
"cdc": "otro.."
}]
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/de/email`,
method: 'POST',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
El envio de email se ejecutará de forma asincrona
Reenvia un correo electrónico al receptor. Utilice en aquellos casos donde el correo no llego al destinatario.
Se permite cambiar la dirección de correo de destino, en ese caso el correo no se enviará al que recibió originalmente el Documento Electrónico, sólo al que se especifica por medio de éste endpoint. La condición para cambiar el correo de destino es que se envíe 1 (un) único CDC por vez.
Tenga en cuenta que al Crear el DE, y si el parámetro de envio de email está activo, ya se envía el correo a los destinatarios del DE, cuyas direcciones se especificand en data.cliente.
Por lo general, el re-envio de email no es necesario, si su receptor no recibe su correo inmediatamente puede ser por el sistema de envio o servidor de correos o por que le pudo haber llegado en la carpeta SPAM.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
No | Dirección(es) de destino a donde enviar el correo, separados por comas si hay más de uno. Si no se especifica se envía al correo original del Cliente del Documento Electrónico |
|
cdcList | Si | Array de códigos CDC de los cuales se desea enviar el email |
Respuesta
Recibirá una respuesta true, inmediatamente luego de ejecutado esta API
Parámetros de creación de un DE
Ejemplo de Datos JSON para creación de un Documento Electrónico:
{
"tipoDocumento" : 1,
"establecimiento" : 1,
"punto" : "001",
"numero" : 4,
"descripcion" : "Aparece en el documento",
"observacion" : "Cualquier informacion de marketing, publicidad, promociones, sorteos, etc. para el receptor",
"fecha" : "2023-11-19T10:11:00",
"tipoEmision" : 1,
"tipoTransaccion" : 1,
"tipoImpuesto" : 1,
"moneda" : "PYG",
"condicionAnticipo" : null,
"condicionTipoCambio": null,
"cambio": 6700.0,
"cliente" : {
"contribuyente" : true,
"ruc" : "2005001-1",
"razonSocial" : "Marcos Adrian Jara Rodriguez",
"nombreFantasia" : "Marcos Adrian Jara Rodriguez",
"tipoOperacion" : 1,
"direccion" : "Avda Calle Segunda y Proyectada",
"numeroCasa" : "1515",
"departamento" : 11,
"distrito" : 143,
"ciudad" : 3344,
"pais" : "PRY",
"tipoContribuyente" : 1,
"documentoTipo" : 1,
"documentoNumero" : "2324234",
"telefono" : "061229382",
"celular" : "0983123765",
"email" : "cliente@empresa.com, cliente@personal.com",
"codigo" : "1548"
},
"usuario" : {
"documentoTipo" : 1,
"documentoNumero" : "157264",
"nombre" : "Marcos Jara",
"cargo" : "Vendedor"
},
"dncp" : {
"modalidad" : "AB",
"entidad" : 1,
"año" : 24,
"secuencia" : 3377826,
"fecha" : "2023-10-14"
},
"factura" : {
"presencia" : 1,
"fechaEnvio" : null
},
"condicion" : {
"tipo" : 1,
"entregas" : [{
"tipo" : 1,
"monto" : "150000",
"moneda" : "PYG",
"cambio" : 0.0
}, {
"tipo" : 3,
"monto" : "150000",
"moneda" : "PYG",
"cambio" : 0.0,
"infoTarjeta" : {
"numero" : 1234,
"tipo" : 1,
"titular" : "Marcos Jara",
"ruc" : "69695654-1",
"razonSocial" : "Bancard",
"medioPago" : 1,
"codigoAutorizacion" : 232524234
}
}, {
"tipo" : 2,
"monto" : "150000",
"moneda" : "PYG",
"cambio" : 0.0,
"infoCheque" : {
"numeroCheque": "32323232",
"banco" : "Sudameris"
}
}],
"credito" : {
"tipo" : 1,
"plazo" : "30 días",
"cuotas" : 2,
"infoCuotas" : [{
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-10-30"
}, {
"moneda" : "PYG",
"monto" : 800000.00,
"vencimiento" : "2021-11-30"
}]
}
},
"items" : [{
"codigo" : "A-001",
"descripcion": "Producto o Servicio",
"observacion": "Información adicional o complementaria sobre el producto",
"partidaArancelaria" : 4444,
"ncm": "123456",
"unidadMedida": 77,
"cantidad": 10.5,
"precioUnitario": 10800,
"cambio": 0.0,
"descuento": 0,
"anticipo": 0,
"pais" : "PRY",
"tolerancia" : 1,
"toleranciaCantidad" : 1,
"toleranciaPorcentaje" : 1,
"cdcAnticipo" : "44digitos",
"dncp" : {
"codigoNivelGeneral" : "12345678",
"codigoNivelEspecifico" : "1234",
"codigoGtinProducto" : "12345678",
"codigoNivelPaquete" : "12345678"
},
"ivaTipo" : 1,
"ivaBase" : 100,
"iva" : 5,
"lote" : "A-001",
"vencimiento" : "2022-10-30",
"numeroSerie" : "",
"numeroPedido" : "",
"numeroSeguimiento" : "",
"registroSenave" : "RS-0821221",
"registroEntidadComercial" : "REC-8923/2022",
"sectorAutomotor" : {
"tipo" : 1,
"chasis" : "4525234523542353245",
"color" : "Rojo",
"potencia" : 1500,
"capacidadMotor" : 5,
"capacidadPasajeros" : 5,
"pesoBruto" : 10000,
"pesoNeto" : 8000,
"tipoCombustible" : 9,
"numeroMotor" : "323234234234234234",
"capacidadTraccion" : 151.01,
"año" : 2009,
"tipoVehiculo" : "Camioneta",
"cilindradas" : "3500"
}
}],
"sectorEnergiaElectrica" : {
"numeroMedidor" : "132423424235425",
"codigoActividad" : 12,
"codigoCategoria" : "001",
"lecturaAnterior" : 4,
"lecturaActual" : 5
},
"sectorSeguros" : {
"codigoAseguradora" : "112",
"codigoPoliza" : "AAAA",
"numeroPoliza" : "BBBB",
"vigencia" : 1,
"vigenciaUnidad" : "año",
"inicioVigencia" : "2021-10-01T00:00:00",
"finVigencia" : "2022-10-01T00:00:00",
"codigoInternoItem" : "A-001"
},
"sectorSupermercados" : {
"nombreCajero" : "Juan Antonio Caceres",
"efectivo" : 150000,
"vuelto" : 30000,
"donacion" : 1000,
"donacionDescripcion" : "Donado para la caridad"
},
"sectorAdicional" : {
"ciclo" : "Mensualidad Pago",
"inicioCiclo" : "2021-09-01",
"finCiclo" : "2021-10-01",
"vencimientoPago" : "2021-11-01",
"numeroContrato" : "AF-2541",
"saldoAnterior" : 1550000
},
"transporte" : {
"tipo" : 1,
"modalidad" : 1,
"tipoResponsable" : 1,
"condicionNegociacion" : "FOB",
"numeroManifiesto" : "AF-2541",
"numeroDespachoImportacion" : "153223232332",
"inicioEstimadoTranslado" : "2021-11-01",
"finEstimadoTranslado" : "2021-11-01",
"paisDestino" : "PRY",
"paisDestinoNombre" : "Paraguay",
"salida" : {
"direccion" : "Paraguay",
"numeroCasa" : "3232",
"complementoDireccion1" : "Entre calle 2",
"complementoDireccion2" : "y Calle 7",
"departamento" : 11,
"distrito" : 143,
"ciudad" : 3344,
"pais" : "PRY",
"telefonoContacto" : "0973987654"
},
"entrega" : {
"direccion" : "Paraguay",
"numeroCasa" : "3232",
"complementoDireccion1" : "Entre calle 2",
"complementoDireccion2" : "y Calle 7",
"departamento" : 11,
"distrito" : 143,
"ciudad" : 3344,
"pais" : "PRY",
"telefonoContacto" : "0973987654"
},
"vehiculo" : {
"tipo" : "Camioneta",
"marca" : "Nissan",
"documentoTipo" : 1,
"documentoNumero" : "232323-1",
"obs" : "",
"numeroMatricula" : "ALTO PARANA",
"numeroVuelo" : null
},
"transportista" : null
},
"complementarios" : {
"ordenCompra" : 1001,
"ordenVenta" : 1002,
"numeroAsiento" : 1212,
"carga" : {
"unidadMedidaVolumenTotal" : null,
"volumenTotal" : 10,
"unidadMedidaPesoTotal" : null,
"pesoTotal" : 11,
"caracteristicaCarga" : null,
"caracteristicaCargaDescripcion" : null
}
},
"documentoAsociado" : null ,
}
A continuación se describe la estructura de atributos del parámetro requerido para crear un nuevo documento electrónico.
A la derecha puede observarse un ejemplo con los valores obligatorios especificados, así como la relación que guardan éstos atributos con los del manual técnico. Por ejemplo el tipo de documento en el manual técnico es el C002.
Algunos campos son obligatorios para el eKuatia, para lo cual desde FacturaSend se asumen algunos valores por defecto caso no sean proveidos en el parámetro principal.
Parametros del objeto principal o data
Para los atributos del objeto JSON también puede utilizar _ (underscore), es decir, se interpreta de la misma manera si envia tipoDocumento o tipo_documento.
Parámetro | Requerido | Descripción |
---|---|---|
tipoDocumento | Si | Uno de los 5 tipos de documentos admitidos por eKuatia (1, 4, 5, 6, 7). Ej.: 1= Factura electrónica, 4= Autofactura electrónica 5= Nota de crédito electrónica, 6= Nota de débito electrónica, 7= Nota de remisión electrónica. Campo XML: C002. |
establecimiento | Si | Representa al código de establecimiento del emisor, se puede enviar 1 o '001' Campo XML: C005. |
punto | Si | Es el punto de emisión del documento electrónico, se puede enviar 1 o '001' Campo XML: C006. |
numero | Si | Es el número del documento electrónico, se puede enviar directamente el número o completar con 0 a la izquierda hasta alcanzar 7 digitos. Ej.: 1 o '0000001'. Campo XML:C007 |
serie | No | Serie de 2 digitos de la numeración del documento electrónico. Solo debe enviarse cuando se utiliza la totalidad de la numeración de 7 dígitos, empezando por la serie AA, AB, AC, BA, BB, BC...ZZ. Campo XML:C010 |
descripcion | No | Información de interés del Fisco respecto al DE. Campo XML: B006. |
observacion | No | Información de interés del emisor respecto al DE. Campo XML: B005. |
fecha | Si | Fecha y hora de emisión del DE. Campo XML: D002. |
tipoEmision | No | Tipo de emisión del DE (1 o 2) Valores: 1=Normal (Por defecto). 2=Contingencia. Campo XML: B002. |
tipoTransaccion | No | Tipo de Transacción. Valores: 1=Venta de mercadería (Por defecto). 2=Prestación de servicios. 3=Mixto (Venta de mercadería y servicios). 4=Venta de activo fijo. 5=Venta de divisas. 6=Compra de divisas. 7=Promoción o entrega de muestras. 8=Donación. 9=Anticipo. 10=Compra de Productos. 11=Venta de Crédito fiscal. 12=Compra de Crédito fiscal. 13=Muestras médicas (Art. 3 RG 24/2014). Campo XML: D011. |
tipoImpuesto | Si | Tipo de impuesto afectado. Valores: 1=IVA. 2=ISC. 3=Renta. 4=Ninguno. 5=IVA - Renta. Campo XML: D013. |
moneda | No | Código de la moneda de la operación de acuerdo con la norma ISO 4217. Si no se pasa asume el valor por defecto "PYG" Campo XML: D015. |
condicionAnticipo | No | Condición del Anticipo. Valores: 1=Anticipo Global. 2=Anticipo por ítem. No es obligatorio informar. Campo XML: D019. |
condicionTipoCambio | No | Condición del tipo de cambio. Valores: 1=Global (un solo tipo de cambio para todo el DE). 2=Por ítem (tipo de cambio distinto por ítem). Obligatorio si moneda ≠ PYG, Si la moneda es PYG no enviar éste atributo o enviar con el valor null. Campo XML: D017. |
obligaciones | No | Obligaciones afectadas. Debe ser enviado como un array de objetos. Ver detalle en tabla data.obligaciones Campo XML: D030 - NT18. |
cambio | No | Valor del cambio de la moneda de la operación en la cotización del día. Ej.: 6500.00 si la moneda es USD. Si la moneda es PYG no enviar éste campo o enviar null Campo XML: D018 |
cdc | No | Código CDC de 44 dígitos que desea utilizarse para el DE. En ocasiones puede ser necesario re-utilizar el mismo CDC de un DE que ha sido rechazado anteriormente, por ejemplo si el Documento KUDE ya ha sido entregado al Cliente, corrigiendo el error y volviendo a intentar la aprobación con el mismo CDC. |
cliente | Si | Datos del Receptor del Documento Electrónico. Ver detalle en tabla data.cliente. |
usuario | No | Campos que identifican al responsable de la generación del DE. Ver detalle en tabla data.usuario. |
factura | No | Conjunto de información relacionada a la Factura Electrónica. Solo es necesario cuando el tipoDocumento=1 (Factura Electrónica) Ver detalle en tabla data.factura. |
autoFactura | No | Conjunto de información relacionada a la Autofactura Electrónica Solo es necesario cuando el tipoDocumento=4 (Autofactura Electrónica Ver detalle en tabla data.autoFactura. |
notaCreditoDebito | No | Conjunto de información relacionada a la Nota de Credito o Debito. Solo es necesario cuando el tipoDocumento=5 o tipoDocumento=6 (Nota de Credito/Nota de Debito) Ver detalle en tabla data.notaCreditoDebito. |
remision | No | Conjunto de información relacionada a la Remisión. Solo es necesario cuando el tipoDocumento=7 (Nota de Remisión) Ver detalle en tabla data.remision. |
items | Si | Conjunto de información relacionada a los items del Documento electrónico. Ver detalle en tabla data.items. |
condicion | No | Conjunto de información relacionada a la condición de Pago por el Documento electrónico. Ver detalle en tabla data.condicion. |
complementarios | No | Conjunto de información relacionada a los datos complementarios del Documento electrónico. Ver detalle en tabla data.complementarios. |
transporte | No | Conjunto de información relacionada a los datos datos de transporte del Documento electrónico. Ver detalle en tabla data.transporte. |
documentoAsociado | No | Conjunto de información relacionada a los datos documentos asociados del Documento electrónico. Ver detalle en tabla data.documentoAsociado. |
descuentoGlobal | No | Descuento global de la Operación Campo XML: Relacionado a EA004 |
anticipoGlobal | No | Anticipo global de la Operación Campo XML: Relacionado a EA007 |
dncp | No | Campos de informaciones de Compras Públicas. Obligatorio si tipoOperacion=3 Ver detalle en tabla data.dncp |
extras | No | Objeto de datos extras del Documento Electronico en formato key=value que puede ser enviado de forma adicional para cualquier necesidad del emisor. El mismo puede ser utilizado para mostrar en el KUDE o para fines de integracion ya que envia en el Webhook. Ej.: "extras" : { "pedidoCliente" : "2123-1", "numeroPresupuesto": "P/001", "posTicketId" : 39271 } Solo se acepta un nivel de JSON y en formato clave valor (no enviar el valor como otro sub JSON) Keys reservadas para uso del FS: "currentCopy" y "exportacion". |
format | No | Indica la configuración del formato de impresión (Factura, Ticket o Personalizado) con el cual se guardará el Documento Electrónico, y el cual será su valor por defecto. Si no se pasa éste atributo, se asumirá el configurado en el establecimiento a travez de la consola. Al enviar un DE por correo o imprimir un ticket se utilizará ésta opción guardada. También podrá, posteriormente, indicar explicitamente el formato que desea al momento de obtener el PDF del KUDE Posibles Valores: ticket=Especifica que el KUDE del DE quedará guardado en modo Ticket custom=Especifica que el KUDE del DE quedará guardado con el formato personalizado. (Sólo vàlido para tipoDocumento=1) Para emitir en formato normal ignore ésta opción |
Parametro del objeto data.cliente
Parámetro | Requerido | Descripción |
---|---|---|
contribuyente | Si | Si el receptor(Cliente) del DE es contribuyente Valores: true o false Campo XML: D201 |
ruc | No | R.U.C. del Cliente, Obligarorio si es contribuyente. Campo XML: D206 |
razonSocial | Si | Nombre o Razon social del cliente,En caso de DE innominado,completar con “Sin Nombre” Campo XML: D211 |
nombreFantasia | No | Nombre de fantasia del cliente Campo XML: D212 |
tipoOperacion | Si | Tipo de operación(1= B2B, 2= B2C, 3= B2G, 4= B2F) Se debe enviar 3=B2G solo si tiene datos de licitacion de la DNCP, caso contrario enviar como 1=B2B* Campo XML:* D202 |
direccion | No | Direccion del Cliente, Campo obligatorio cuando tipoDocumento =7 o tipoOperacion=4 Campo XML: D213 |
numeroCasa | No | Numero de Casa del Cliente, Campo obligatorio si se informa la direccion,Cuando es contribuyente debe corresponder a lo declarado en el RUC Campo XML: D218 |
departamento | No | Código del departamento,Campo obligatorio si se informa la dirección y tipoOperacion ≠ 4, no se debe informar cuando tipoOperacion = 4. Campo XML: D219 |
distrito | No | Código del distrito del Cliente, El código debe seguir la Tabla 2.1 – Distritos del Manual Tecnico. Campo XML: D221 |
ciudad | No | Código de la ciudad del Cliente. Campo obligatorio si se informa la dirección y tipoOperacion≠4, no se debe informar cuando tipoOperacion = 4. Campo XML:D223 |
pais | Si | Código del Pais del Cliente, Segun XSD de Codificación de Países Campo XML:D203 |
tipoContribuyente | No | Tipo de contribuyente Ej.: 1= Persona Física, 2= Persona Jurídica Obligatorio si contribuyente = true, No informar si contribuyente = false Campo XML:D205 |
documentoTipo | No | Tipo de documento del cliente, de acuerdo a 1=Cédula paraguaya 2=Pasaporte 3=Cédula extranjera 4=Carnet de residencia 5=Innominado 6=Tarjeta Diplomática de exoneración fiscal 9=Informar data.cliente.documentoTipoDescripcion Campo XML:D208 |
documentoNumero | No | Número de documento de identidad.Obligatorio si contribuyente = false y tipoOperacion ≠ 4. En caso de DE innominado, completar con 0 (cero) Campo XML:D210 |
telefono | No | Número de teléfono. Debe incluir el prefijo de la ciudad si pais = PRY Campo XML:D214 |
celular | No | Numero de celular del cliente Campo XML:D215 |
No | Correo electronico del cliente Si se le pasa más de un correo (separado por comas) en eKuatia se incluirá sólo el primero Campo XML:D216 |
|
codigo | Si | Código del Cliente. Obligatorio para FacturaSend Campo XML:D217 |
Parametro del objeto data.usuario
Parámetro | Requerido | Descripción |
---|---|---|
documentoTipo | Si | Tipo de documento de identidad del responsable de la generación del DE Valores: 1=Cédula paraguaya 2=Pasaporte 3=Cédula extranjera 4=Carnet de residencia 9=Otro Campo XML:D141 |
documentoTipoDescripcion | No | Descripción del Tipo de documento de identidad del responsable de la generación del DE Solo es necesario cuando documentoTipo=9 Campo XML:D141 |
documentoNumero | Si | Número de documento de identidad del responsable de la generación del DE Campo XML:D143 |
nombre | Si | Nombre o razón social del responsable de la generación del DE Campo XML:D144 |
cargo | Si | Cargo del responsable de la generación del DE Campo XML:D145 |
No | Email del responsable de la generación del DE (Esta información no se envía a la SET) Si se pasa un email válido, también se notifican a éste correo los mensajes de FacturaSend. |
Parametro del objeto data.obligaciones
Parámetro | Requerido | Descripción |
---|---|---|
codigo | Si | Código de la Obligación afectada. Valores: 113-IMPUESTO A LA RENTA IRACIS - REGÍMENES ESPECIALES 143-TRIBUTO UNICO MAQUILA 211-IMPUESTO AL VALOR AGREGADO - GRAVADAS Y EXONERADAS – EXPORTADORES 311-IMPUESTO SELECTIVO AL CONSUMO – GENERAL 321-IMPUESTO SELECTIVO AL CONSUMO COMBUSTIBLES 700-IMPUESTO A LA RENTA EMPRESARIAL - RÉGIMEN GENERAL 701-IMPUESTO A LA RENTA EMPRESARIAL – SIMPLE 703-IMPUESTO DE ZONA FRANCA 702-IMPUESTO A LA RENTA EMPRESARIAL – RESIMPLE 715-IMPUESTO A LA RENTA PERSONAL - SERVICIOS PERSONALES 716-IMPUESTO A LA RENTA PERSONAL - RENTAS Y GANANCIAS DE CAPITAL Campo XML: D031 |
descripcion | No | Descripción de la Obligación. No es necesario pasar Campo XML: D032 |
Parametro del objeto data.dncp
Parámetro | Requerido | Descripción |
---|---|---|
modalidad | Si | Modalidad - Código emitido por la DNCP Campo XML: E021 |
entidad | Si | Entidad - Código emitido por la DNCP Campo XML: E022 |
año | Si | Año - Código emitido por la DNCP Campo XML: E023 |
secuencia | Si | Secuencia - emitido por la DNCP Campo XML: E024 |
fecha | Si | Fecha de emisión del código de contratación por la DNCP Campo XML: E025 |
Parametro del objeto data.factura
Parámetro | Requerido | Descripción |
---|---|---|
presencia | Si | Indicador de presencia 1= Operación presencial 2= Operación electrónica 3= Operación telemarketing 4= Venta a domicilio 5= Operación bancaria 6= Operación cíclica 9= Otro Campo XML: E011 |
fechaEnvio | No | Fecha futura del traslado de mercadería Campo XML: E013 |
Parametro del objeto data.autoFactura
Parámetro | Requerido | Descripción |
---|---|---|
tipoVendedor | Si | Naturaleza del vendedor 1= No contribuyente 2= Extranjero Campo XML: E301 |
documentoTipo | Si | Tipo de documento de identidad del vendedor Campo XML: E304 |
documentoNumero | Si | Número de documento de identidad del vendedor Campo XML: E306 |
nombre | Si | Nombre y apellido del vendedor Campo XML: E307 |
direccion | Si | Dirección del vendedor.En caso de extranjeros, colocar la dirección en donde se realizó la transacción. Campo XML: E308 |
numeroCasa | Si | Número de casa del vendedor.Si no tiene numeración colocar 0 (cero) Campo XML: E309 |
departamento | Si | Código del departamento del vendedor Campo XML: E310 |
departamentoDescripcion | No | Descripción del departamento del vendedor Campo XML: E311 |
distrito | Si | Código del distrito del vendedor Campo XML: E312 |
distritoDescripcion | No | Descripción del distrito del vendedor Campo XML: E313 |
ciudad | Si | Código de la ciudad del vendedor Campo XML: E314 |
ciudadDescripcion | No | Descripción del ciudad del vendedor Campo XML: E315 |
ubicacion | Si | Ver detalle en tabla data.autoFactura.ubicacion |
Parametro del objeto data.autoFactura.ubicacion
Parámetro | Requerido | Descripción |
---|---|---|
lugar | Si | Lugar de la transacción Campo XML: E316 |
departamento | Si | Código del departamento donde se realiza la transacción Campo XML: E317 |
departamentoDescripcion | No | Descripcion del departamento donde se realiza la transacción Campo XML: E318 |
distrito | Si | Código del distrito donde se realiza la transacción Campo XML: E319 |
distritoDescripcion | No | Descripcion del distrito donde se realiza la transacción Campo XML: E320 |
ciudad | Si | Código de la ciudad donde se realiza la transacción Campo XML: E321 |
ciudadDescripcion | No | Descripcion de la ciudad donde se realiza la transacción Campo XML: E322 |
Parametro del objeto data.notaCreditoDebito
Parámetro | Requerido | Descripción |
---|---|---|
motivo | Si | Motivo de la emisión 1= Devolución y Ajuste de precios 2= Devolución 3= Descuento 4= Bonificación 5= Crédito incobrable 6= Recupero de costo 7= Recupero de gasto 8= Ajuste de precio Campo XML: E401 |
Parametro del objeto data.remision
Parámetro | Requerido | Descripción |
---|---|---|
motivo | Si | Valor numério del Motivo de la emisión: 1= Traslado por venta 2= Traslado por consignación 3= Exportación 4= Traslado por compra 5= Importación 6= Traslado por devolución 7= Traslado entre locales de la empresa 8= Traslado de bienes por transformación 9= Traslado de bienes por reparación 10= Traslado por emisor móvil 11= Exhibición o demostración 12= Participación en ferias 13= Traslado de encomienda 14= Decomiso 99=Otro (deberá consignarse expresamente el o los motivos diferentes a los mencionados anteriormente) Obs.: Cuando el motivo sea por operaciones internas de la empresa, el RUC del receptor debe ser igual al RUC del emisor. Campo XML: E501 |
motivoDescripcion | No | Descripción del Motivo de la emisión, caso el motivo sea igual a 99 Campo XML: E502 |
tipoResponsable | Si | Responsable de la emisión de la Nota Remisión Electrónica: 1= Emisor de la factura 2= Poseedor de la factura y bienes 3= Empresa transportista 4= Despachante de Aduanas 5= Agente de transporte o intermediario Campo XML: E503, E504 |
kms | Si | Kilómetros estimados de recorrido Campo XML: E505 |
fechaFactura | No | Fecha futura de emisión de la factura (AAAA-MM-DD) Campo XML: E506 |
costoFlete | No | Costo del Flete N(15,8) Campo XML: E507 |
Parametro del objeto data.items
Parámetro | Requerido | Descripción |
---|---|---|
codigo | Si | Código interno de identificación de la mercadería o servicio de responsabilidad del emisor Campo XML: E701 |
descripcion | Si | Descripción del producto y/o servicio. Equivalente a nombre del producto establecido en la RG 24/2019 Campo XML: E708 |
observacion | No | Informacion de intetes acerca del item Campo XML: E714 |
partidaArancelaria | No | Partida arancelaria Campo XML: E702 |
ncm | No | Nomenclatura común del Mercosur (NCM) Campo XML: E703 |
unidadMedida | Si | Es la unidad de medida del producto Campo XML: E709 |
cantidad | Si | Cantidad del producto y/o servicio Campo XML: E711 |
precioUnitario | Si | Precio unitario del producto y/o servicio (incluidos impuestos) Campo XML: E721 |
cambio | No | Tipo de cambio por ítem Campo XML: E725 |
descuento | No | Descuento particular sobre el precio unitario por ítem (incluidos impuestos) Campo XML: EA002 |
anticipo | No | Anticipo particular sobre el precio unitario por ítem (incluidos impuestos) Campo XML: EA006 |
pais | No | Código del país de origen del producto*Campo XML:* E712 |
paisDescripcion | No | Nombre del país de origen del producto Campo XML: E713 |
tolerancia | No | Código de tolerancia de merma de los productos Opcional si C002 = 7 1=Tolerancia de quiebra 2= Tolerancia de merma Según RG 41/14. Campo XML: E715 |
toleranciaCantidad | No | Cantidad de quiebra o merma Obligatorio si se envia la tolerancia Campo XML: E717 |
toleranciaPorcentaje | No | Porcentaje de quiebra o merma Obligatorio si se envia la tolerancia Campo XML: E718 |
cdcAnticipo | No | CDC del anticipo Campo XML: E719 |
ivaTipo | Si | Forma de afectación tributaria del IVA 1= Gravado IVA 2= Exonerado (Art. 83- Ley 125/91) 3= Exento 4= Gravado parcial Grav-Exento) Campo XML: E731 |
ivaBase | Si | Base gravada del IVA por ítem Campo XML: E735 |
iva | Si | Tasa del IVA Posibles valores = 0, 5 o 10 Campo XML: E734 |
lote | No | Numero de Lote del producto Valor alfanumérico Longitud: [1-80] Campo XML: E751 |
vencimiento | No | Fecha de vencimiento del producto Formato AAAA-MM-DD Campo XML: E752 |
numeroSerie | No | Número de serie Valor alfanumérico Longitud: [1-10] Campo XML: E753 |
numeroPedido | No | Número de pedido Campo XML: E754 |
numeroSeguimiento | No | Número de seguimiento del envío Campo XML: E755 |
registroSenave | No | Número de registro del producto otorgado por el SENAVE Obligados por la RG N° 16/2019 y la RG N° 24/2019 – Agroquímicos Campo XML: E759 |
registroEntidadComercial | No | Número de registro de entidad comercial otorgado por el SENAVE **Campo XML: **E760 |
nombreProducto | No | Obligados por el Art. 1 de la RG N° 106/2021 – Agroquímicos **Campo XML: **E761 |
dncp | No | Identificación de los datos de la DNCP Ver detalle en tabla data.items.dncp |
extras | No | Objeto de datos extras del item en formato key=value que puede ser enviado de forma adicional por cada item para cualquier necesidad del emisor. El mismo puede ser utilizado para mostrar en el KUDE o para fines de integracion ya que envia en el Webhook. Ej.: "extras" : { "taxRate" : "15%", "barCode": "7937638273256", "storeId" : 3 } Solo se acepta un nivel de JSON y en formato clave valor (no enviar el valor como otro sub JSON) |
Parametro del objeto data.items.dncp
Parámetro | Requerido | Descripción |
---|---|---|
codigoNivelGeneral | No | Código DNCP – Nivel General. Obligatorio si tipoOperacion = 3 Campo XML: E704 |
codigoNivelEspecifico | No | Código DNCP – Nivel Especifico. Obligatorio si existe el campo codigoNivelGeneral Campo XML: E705 |
codigoGtinProducto | No | Código GTIN por producto. Informar si la mercadería tiene GTIN Campo XML: E706 |
codigoNivelPaquete | No | Código GTIN por paquete. Informar si el paquete tiene GTIN Campo XML: E707 |
Parametro del objeto data.items.sectorAutomotor
Parámetro | Requerido | Descripción |
---|---|---|
tipo | No | Tipo de operación de venta de vehículos 1= Venta a representante 2= Venta al consumidor final 3= Venta a gobierno 4= Venta a flota de vehículos Campo XML: E771 |
chasis | No | Chasis del vehículo Campo XML: E773 |
color | No | Color del vehículo Campo XML: E774 |
potencia | No | Potencia del motor (CV) Campo XML: E775 |
capacidadMotor | No | Capacidad del motor. Expresa en centímetros cúbicos (cc) Campo XML: E776 |
capacidadPasajeros | No | Capacidad máxima de pasajeros sentados Campo XML: E785 |
pesoBruto | No | Peso bruto del vehiculo. En toneladas Campo XML: E778 |
pesoNeto | No | Peso neto del vehiculo. En toneladas Campo XML: E777 |
tipoCombustible | No | Tipo de combustible 1= Gasolina 2= Diésel 3= Etanol 4= GNV 5= Flex 9= Otro Campo XML: E779 |
tipoCombustibleDescripcion | No | Descripción del tipo de combustible. Campo XML: E780 |
numeroMotor | No | Número del motor*Campo XML:* E781 |
capacidadTraccion | No | Capacidad máxima de tracción Campo XML: E782 |
año | No | Año de fabricación Campo XML: E783 |
tipoVehiculo | No | Tipo de vehículo Campo XML: E784 |
cilindradas | No | Cilindradas del motor Campo XML: E786 |
Parametro del objeto data.condicion
Parámetro | Requerido | Descripción |
---|---|---|
tipo | Si | Condición de la operación. 1= Contado 2= Crédito Campo XML: E601 |
entregas | No | Datos que describen la forma de pago al contado o del monto de la entrega inicial. Ver detalle en tabla data.condicion.entregas. |
credito | No | Campos que describen la operación a crédito. Ver detalle en tabla data.condicion.credito. |
Parametros del objeto data.condicion.entregas
Parámetro | Requerido | Descripción |
---|---|---|
tipo | Si | Tipo de pago Ej.:1= Efectivo, 2= Cheque,3= Tarjeta de crédito, 4= Tarjeta de débito. Existe mas tipos de pagos ver en: Campo XML: E606 |
tipoDescripcion | No | Descripción del Tipo de pago. Cuando el tipo = 99 es obligatorio especificar el tipo de pago personalizado : Campo XML: E607 |
monto | Si | Monto por tipo de pago Campo XML: E608 |
moneda | Si | Moneda por tipo de pago Según tabla de códigos para monedas de acuerdo con la norma ISO 4217 Se requiere la misma moneda para todos los ítems del DE Campo XML: E609 |
cambio | No | Tipo de cambio por tipo de pago. Obligatorio si moneda ≠ PYG Campo XML: E611 |
infoTarjeta | No | Campos que describen el pago o entrega inicial de la operación con tarjeta de crédito/débito. Ver detalle en tabla data.condicion.entregas.infoTarjeta |
infoCheque | No | Campos que describen el pago o entrega inicial de la operación con cheque. Ver detalle en tabla data.condicion.entregas.infoCheque |
extras | No | Objeto de datos extras de la entrega en formato key=value que puede ser enviado de forma adicional por cada condicion de entrega para cualquier necesidad del emisor. El mismo puede ser utilizado para mostrar en el KUDE o para fines de integracion ya que envia en el Webhook. Ej.: "extras" : { "vuelto" : 8500, "vueltoMoneda": "PYG" "numeroDoc": "T-3232323" } Solo se acepta un nivel de JSON y en formato clave valor (no enviar el valor como otro sub JSON) |
Parametros del objeto data.condicion.entregas.infoTarjeta
Parámetro | Requerido | Descripción |
---|---|---|
tipo | Si | Denominación de la tarjeta. 1= Visa 2= Mastercard 3= American Express 4= Maestro 5= Panal 6= Cabal 99= Otro Campo XML: E621 |
tipoDescripcion | Si | Descripción de denominación de la tarjeta. Si tipo =99 informar la descripción de la denominación de la tarjeta*Campo XML:* E622 |
numero | No | Número de la tarjeta. Cuatro últimos dígitos de la tarjeta Campo XML: E629 |
titular | No | Nombre del titular de la tarjeta Campo XML: E628 |
ruc | No | RUC de la procesadora de tarjeta Campo XML: E624 |
razonSocial | No | Razón social de la procesadora de tarjeta Campo XML: E623 |
medioPago | Si | Forma de procesamiento de pago. 1= POS. 2= Pago Electrónico (Ejemplo:compras por Internet) 9= Otro Campo XML: E626 |
codigoAutorizacion | No | Código de autorización de la operación Campo XML: E627 |
Parametros del objeto data.condicion.entregas.infoCheque
Parámetro | Requerido | Descripción |
---|---|---|
numeroCheque | Si | Número de cheque. Completar con 0 (cero) a la izquierda hasta alcanzar 8 (ocho) cifras Campo XML: E631 |
banco | Si | Banco emisor Campo XML: E632 |
Parametros del objeto data.condicion.credito
Parámetro | Requerido | Descripción |
---|---|---|
tipo | Si | Condición de la operación a crédito 1= Plazo 2= Cuota Campo XML: E641 |
plazo | No | Plazo del crédito. Obligatorio si tipo = 1 Ejemplo: 30 días, 12 meses Campo XML: E643 |
cuotas | No | Cantidad de cuotas. Plazo del crédito. Obligatorio si tipo = 2 Ejemplo: 12, 24, 36 Campo XML: E644 |
infoCuotas | No | Campos que describen las cuotas.Ver detalle en tabla data.condicion.credito.infoCuotas |
Parametros del objeto data.condicion.credito.infoCuotas
Parámetro | Requerido | Descripción |
---|---|---|
moneda | Si | Moneda de las cuotas.Según tabla de códigos para monedas de acuerdo con la norma ISO 4217 Campo XML: E653 |
monto | Si | Monto de cada cuota Campo XML: E651 |
vencimiento | No | Fecha de vencimiento de cada cuota Campo XML: E652 |
Parametro del objeto data.sectorEnergiaElectrica
Parámetro | Requerido | Descripción |
---|---|---|
numeroMedidor | No | Número de medidor Campo XML: E792 |
codigoActividad | No | Código de actividad Campo XML: E793 |
codigoCategoria | No | Código de categoría E Campo XML: E794 |
lecturaAnterior | No | Lectura anterior Campo XML: E795 |
lecturaActual | No | Lectura actual Campo XML: E796 |
Parametro del objeto data.sectorSeguros
Parámetro | Requerido | Descripción |
---|---|---|
codigoAseguradora | No | Código de la empresa de seguros en la Superintendencia de Seguros Campo XML: E801 |
codigoPoliza | Si | Código de la póliza Campo XML: EA791 |
numeroPoliza | Si | Número de la póliza Campo XML: EA794 |
vigencia | Si | Descripción de la unidad de tiempo de vigencia Campo XML: EA792 |
vigenciaUnidad | Si | Vigencia de la póliza Campo XML: EA793 |
inicioVigencia | No | Fecha de inicio de vigencia Campo XML: EA795 |
finVigencia | No | Fecha de fin de vigencia Campo XML: EA796 |
codigoInternoItem | No | Código interno del ítem Campo XML: EA797 |
Parametro del objeto data.sectorSupermercados
Parámetro | Requerido | Descripción |
---|---|---|
nombreCajero | No | Nombre del cajero Campo XML: E811 |
efectivo | No | Efectivo Campo XML: E812 |
vuelto | No | Vuelto Campo XML: E813 |
donacion | No | Monto de la donación Campo XML: E814 |
donacionDescripcion | No | Descripción de la donación Campo XML: E815 |
Parametro del objeto data.sectorAdicional
Parámetro | Requerido | Descripción |
---|---|---|
ciclo | No | Ciclo Campo XML: E821 |
inicioCiclo | No | Fecha de inicio de ciclo Campo XML: E822 |
finCiclo | No | Fecha de fin de ciclo Campo XML: E823 |
vencimientoPago | No | Fecha de vencimiento para el pago Campo XML: E824 |
numeroContrato | No | Número de contrato E Campo XML: E825 |
saldoAnterior | No | Saldo anterior Campo XML: E826 |
Parametro del objeto data.transporte
Parámetro | Requerido | Descripción |
---|---|---|
tipo | No | Tipo de transporte. Obligatorio si tipoDocumento = 7. 1= Propio 2= Tercero Campo XML: E901 |
modalidad | Si | Modalidad del transporte 1=Terrestre 2= Fluvial 3= Aéreo 4= Multimodal Campo XML: E903 |
tipoResponsable | Si | Responsable del costo del flete 1= Emisor de la Factura Electrónica 2= Receptor de la Factura Electrónica 3= Tercero 4= Agente intermediario del transporte (cuando intervenga) 5= Transporte propio Campo XML: E905 |
condicionNegociacion | No | Condición de la negociación segun las opciones: CFR Costo y flete CIF Costo, seguro y flete CIP Transporte y seguro pagados hasta CPT Transporte pagado hasta DAP Entregada en lugar convenido DAT Entregada en terminal DDP Entregada derechos pagados EXW En fabrica FAS Franco al costado del buque FCA Franco transportista FOB Franco a bordo **Campo XML: **E906 |
numeroManifiesto | No | Número de manifiesto o conocimiento de carga/declaración de tránsito aduanero/ Carta de porte internacional Campo XML: E907 |
numeroDespachoImportacion | No | Número de despacho de importación Campo XML: E908 |
inicioEstimadoTranslado | No | Fecha estimada de inicio de traslado Campo XML: E909 |
finEstimadoTranslado | No | Fecha estimada de fin de traslado Campo XML: E910 |
paisDestino | No | Código del país de destino Campo XML: E911 |
paisDestinoNombre | No | Descripción del país de destino. Campo XML: E912 |
salida | No | Campos que identifican el local de salida de las mercaderías. Obligatorio si tipoDocumento = 7. Ver detalle en tabla data.transporte.salida |
entrega | No | Campos que identifican el local de entrega de las mercaderías. Obligatorio si tipoDocumento = 7. Ver detalle en tabla data.transporte.entrega |
vehiculo | No | Campos que identifican el vehículo de traslado de mercaderías. Obligatorio si tipoDocumento = 7. Ver detalle en tabla data.transporte.vehiculo |
transportista | No | Campos que identifican al transportista. Obligatorio si tipoDocumento = 7. Ver detalle en tabla data.transporte.transportista |
Parametro del objeto data.transporte.salida
Parámetro | Requerido | Descripción |
---|---|---|
direccion | Si | Dirección del local de salida. Nombre de la calle principal Campo XML: E921 |
numeroCasa | Si | Número de casa de salida Campo XML: E922 |
complementoDireccion1 | No | Complemento de dirección 1 salida. Nombre de la calle secundaria Campo XML: E923 |
complementoDireccion2 | No | Complemento de dirección 2 salida. Número de departamento/piso/ local/ edificio/ deposito del local de salida de la mercadería Campo XML: E924 |
departamento | Si | Código del departamento del local de salida. Según XSD de Departamentos Campo XML: E925 |
departamentoDescripcion | Si | Descripción del departamento del local de salida Campo XML: E926 |
distrito | No | Código del distrito del local de salida Campo XML: E927 |
distritoDescripcion | No | Descripción de distrito del local de salida Campo XML: E927 |
ciudad | Si | Código de la ciudad del local de salida Campo XML: E929 |
ciudadDescripcion | Si | Descripción de ciudad del local de salida Campo XML: E930 |
pais | No | Código del país del local de salida |
paisDescripcion | No | Descripción del país del local de salida |
telefonoContacto | No | Teléfono de contacto del local de salida Campo XML: E931 |
Parametro del objeto data.transporte.entrega
Parámetro | Requerido | Descripción |
---|---|---|
direccion | Si | Dirección del local de entrega. Nombre de la calle principal Campo XML: E941 |
numeroCasa | Si | Número de casa de entrega Campo XML: E942 |
complementoDireccion1 | No | Complemento de dirección 1 entrega. Nombre de la calle secundaria Campo XML: E943 |
complementoDireccion2 | No | Complemento de dirección 2 salida. Número de departamento/piso/ local/ edificio/ deposito del local de salida de la mercadería Campo XML: E944 |
departamento | Si | Código del departamento del local de entrega. Según XSD de Departamentos Campo XML: E945 |
departamentoDescripcion | Si | Descripción del departamento del local de salida Campo XML: E946 |
distrito | No | Código del distrito del local de entrega Campo XML: E947 |
distritoDescripcion | No | Descripción de distrito del local de entrega Campo XML: E948 |
ciudad | Si | Código de la ciudad del local de salida Campo XML: E949 |
ciudadDescripcion | Si | Descripción de ciudad del local de salida Campo XML: E950 |
pais | No | Código de pais de salida |
paisDescripcion | No | Descripcion del pais de salida |
telefonoContacto | No | Teléfono de contacto del local de la entrega Campo XML: E951 |
Parametro del objeto data.transporte.vehiculo
Parámetro | Requerido | Descripción |
---|---|---|
tipo | Si | Tipo de vehículo. Ejemplo: Camioneta, Barcaza, Elicoptero. Debe ser acorde al atributo modalidad(E903) Campo XML: E961 |
marca | Si | Marca Campo XML: E962 |
documentoTipo | Si | Tipo de identificación del vehículo 1=Número de identificación del vehículo 2=Número de matrícula del vehículo Campo XML: E967 |
documentoNumero | No | Número de identificación del vehículo. Debe informarse cuando el documentoTipo=1 Campo XML: E963 |
obs | No | Datos adicionales del vehículo Campo XML: E964 |
numeroMatricula | No | Número de matrícula del vehículo. Debe informarse cuando el documentoTipo=2 Campo XML: E965 |
numeroVuelo | No | Número de vuelo Campo XML: E966 |
Parametro del objeto data.transporte.transportista
Parámetro | Requerido | Descripción |
---|---|---|
contribuyente | Si | Naturaleza del transportista(true o false) Campo XML: E980 |
nombre | Si | Nombre o razón social del transportista Campo XML: E982 |
ruc | Si | RUC del transportista Campo XML: E983 |
documentoTipo | No | Tipo de documento de identidad del transportista Obligatorio si contribuyente=false Valores: 1=Cédula paraguaya 2=Pasaporte 3=Cédula extranjera 4=Carnet de residencia Campo XML: E985 |
documentoNumero | No | Número de documento de identidad del transportista. Obligatorio si existe el campo documentoTipo Campo XML: E987 |
direccion | Si | Domicilio fiscal del transportista Campo XML: E992 |
obs | No | Observacion del transportista |
pais | No | Código del pais de Origen del transportista |
paisDescripcion | No | Descripcion del pais Origen |
chofer | Si | Campos que identifican al chofer. Ver detalle en tabla data.transporte.transportista.chofer |
agente | No | Campos que identifican al agente. Ver detalle en tabla data.transporte.transportista.agente |
Parametro del objeto data.transporte.transportista.chofer
Parámetro | Requerido | Descripción |
---|---|---|
documentoNumero | Si | Número de documento de identidad del chofer Campo XML: E990 |
nombre | Si | Nombre y apellido del chofer Campo XML: E991 |
direccion | Si | Dirección del chofer Campo XML: E993 |
Parametro del objeto data.transporte.transportista.agente
Parámetro | Requerido | Descripción |
---|---|---|
nombre | No | Nombre o razón social del agente. Casos particulares según RG N°41/14 Campo XML: E994 |
ruc | No | RUC del agente Campo XML: E995 |
direccion | No | Dirección del agente Campo XML: E997 |
Parametro del objeto data.complementarios
Parámetro | Requerido | Descripción |
---|---|---|
ordenCompra | No | Número de orden de compra Campo XML: G002 |
ordenVenta | No | Número de orden de venta Campo XML: G003 |
numeroAsiento | No | Número de asiento contable Campo XML: G004 |
carga | No | Campos generales de la carga |
Parametro del objeto data.complementarios.carga
Parámetro | Requerido | Descripción |
---|---|---|
unidadMedidaVolumenTotal | No | Unidad de medida del total de volumen de la mercadería Campo XML: G051 |
volumenTotal | No | Volumen total de la mercadería Campo XML: G053 |
unidadMedidaPesoTotal | No | Unidad de medida del peso total de la mercadería Campo XML: G054 |
pesoTotal | No | Peso total de la mercadería Campo XML: G056 |
caracteristicaCarga | No | 1 – Mercaderías con cadena de frío 2 – Carga peligrosa 3 – Otro de características similares (especificar) Obligatorio cuando lo exige la RG 41/14 Campo XML: G057 |
caracteristicaCargaDescripcion | No | Descripcion de la caracteristica de carga Solo especificar cuando caracteristicaCarga = 3 Campo XML: G058 |
Parametro del objeto data.documentoAsociado
Objeto ({}) o Array de objetos [{}] que relacionan los documentos asociados al DE.
Parámetro | Requerido | Descripción |
---|---|---|
formato | Si | Tipo de documento asociado 1= Electrónico 2= Impreso 3= Constancia Electrónica Campo XML: H002 |
cdc | No | CDC del DTE referenciado Campo XML: H004 |
tipoDocumentoImpreso | Si | Tipo de documento impreso: 1= Factura 2= Nota de crédito 3= Nota de débito 4= Nota de remisión 5= Comprobante de retención Campo XML: H009 |
timbrado | Si | Nro. timbrado documento impreso de referencia Campo XML: H005 |
establecimiento | Si | Establecimiento Campo XML: H005 |
punto | Si | Punto de expedición Campo XML: H007 |
numero | Si | Número del documento Campo XML: H008 |
fecha | Si | Fecha de emisión del documento impreso de referencia. Obligatorio si existe el campo establecimiento. Formato AAAA-MM-DD No Informar si campo establecimiento no existe Campo XML: H011 |
numeroRetencion | No | Número de comprobante de retención Campo XML: H012 |
resolucionCreditoFiscal | No | Número de resolución de crédito fiscal Campo XML: H013 |
constanciaTipo | No | Tipo de constancia Campo XML: H014 |
constanciaNumero | No | Numero de constancia Campo XML: H016 |
constanciaControl | No | Código de Control de la constancia Campo XML: H017 |
rucFusionado | No | Cuando el formato es 1-Electrónico y el CDC del Documento Referenciado es de un Receptor fusionado, entonces especificar el RUC de la Empresa fusionada, sin el DV Campo XML: H018 (NT. 23) |
Respuesta de creación de un DE
Ejemplo de respuesta de creación de un DE:
{
"success" : true,
"deList" : [{
"cdc": "01800695631001002100694612021112410311184194",
"numero": "001-001-0000001",
"estado": "Aprobado",
"respuesta_codigo": "",
"respuesta_mensaje": ""
}],
"loteId" : 12
}
La respuesta de creación de un documento electrónico, representa la estructura de datos JSON que retorna la API de FacturaSend luego de haber solicitado la creación de un DE.
Abajo se describe el detalles de los atributos.
Respuesta
La respuesta de éste Servicio:
Atributos | Tipo | Description |
---|---|---|
success | boolean | true si no hubo errores en la transacción |
error | string | El mensaje de Error, en el caso de que el success = false, Si la invocación se realizó para crear 1 sólo DE por el método sincrono, entonces aquí se especificará el mensaje de error. |
errores | array | En el caso de haya invocado la API para crear varios DEs por el método asíncrono, aqui se mostrarán una lista de errores, indicando el error, y el número de índice del archivo XML con Error. |
deList | array | El array con la respuesta de cada DE procesado. Este array siempre devolverá 1 (un) sólo elemento para el elemento síncrono, pero es del tipo array por compatibilidad con el envío por asincrono o por lotes Los atributos de éste array se describen en Respuesta deList |
loteId | number | El número de lote generado para la solicitud. |
Atributos de la Respuesta deList
Atributos | Tipo | Description |
---|---|---|
cdc | string | Id único de 44 dígitos generado para el Documento Electrónico |
numero | string | Número de Documento Electrónico generado en formato 001-001-0000001 |
estado | string | Estado del Documento Electrónico generado, pudiendo ser: Aprobado Aprobado con observación Rechazado (Solo en el caso que se envía como síncrono). Si el documento se envia por lote el Estado siempre será 0=Generado |
respuesta_codigo | string | Código de la Respuesta de la SET (Solo en el caso que se envía como síncrono) |
respuesta_mensaje | string | Mensaje de Respuesta de la SET (Solo en el caso que se envía como síncrono) |
xml (opcional) |
string | El archivo XML generado del documento electronico. Este elemento solamente se retorna cuando se le pasa el valor true en el atributo xml como queryParam al crear el DE o el LOTE, ej: https://api.facturasend.com.py/<tenantId>/de/create?xml=true |
qr (opcional) |
string | El valor del código QR generado del documento electronico. Este elemento solamente se retorna cuando se le pasa el valor true en el atributo qr como queryParam al crear el DE o el LOTE, ej: https://api.facturasend.com.py/<tenantId>/de/create?qr=true |
dIVA5 dIVA10 (opcional) |
number | El valor del impuesto IVA 5 e IVA 10 del documento electronico. Este elemento solamente se retorna cuando se le pasa el valor true en el atributo tax como queryParam al crear el DE o el LOTE, ej: https://api.facturasend.com.py/<tenantId>/de/create?tax=true |
En caso de errores, los atributos respuesta_codigo y respuesta_mensaje pueden ser utilizados para obtener más detalles sobre el error ocurrido. En caso de aprobación la respuesta_codigo retornará 0260. Los códigos de error se encuentran en el manual técnico.
Consultas de la SET
Consulta DE RUC
Para consultar el DTE:
# Consulta los datos de una Empresa Física o Juridica por el RUC
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/ruc/80069563"
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post(`https://api.facturasend.com.py/<tenantId>/ruc/80069563`,
null,
{headers}
)
.then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success": true,
"respuesta_codigo": "0502",
"respuesta_mensaje": "CDC encontrado",
"razon_social": "TIPS S.A",
"estado_codigo": "ACT",
"estado_mensaje": "ACTIVO",
"facturador_electronico": true
}
Este servicio consulta por el RUC la existencia de una Empresa directamente en el SIFEN, a travéz de la API del eKuatia.
El RUC informado como parámetro no debe contener el díto verificador.
Esta consulta por RUC también puede realizarse desde el panel de FacturaSend, todas las consultas anteriores realizadas quedan almacenadas y se despliegan en un listado.
Para invocar éste servicio se requiere que la empresa relacionada al tenant esté conectada a la SET, y también se requiere de un Certificado Digital válido.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
ruc | Si | RUC de la Empresa, sin el dígito verificador |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si la consulta se ejecutó con éxito, false si dio algún error |
error | string | El mensaje de error en caso de que haya retornado success=false. |
respuesta_codigo | string | Código de respuesta de la consulta. Valores: 0500=RUC no existe. 0501=RUC sin permiso consulta WS. 0502=RUC encontrado. |
respuesta_mensaje | string | Mensaje de respuesta de la consulta. Valores: 0500=RUC no existe. 0501=RUC sin permiso consulta WS. 0502=RUC encontrado. |
razon_social | string | Razón Social de la Empresa como se encuentra en el Marangatú. Este atributo solo retorna si respuesta_codigo=0502 |
estado_codigo | string | Código del Estado o situación fiscal de la Empresa, con los posibles valores: ACT=Activo SUS=Suspensión Temporal SAD=Suspensión Administrativa BLQ=Bloqueado CAN=Cancelado CDE=Cancelado Definitivo Este atributo solo retorna si respuesta_codigo=0502 |
estado_mensaje | string | Descripción del Estado o situación fiscal de la Empresa, con los posibles valores: ACT=Activo SUS=Suspensión Temporal SAD=Suspensión Administrativa BLQ=Bloqueado CAN=Cancelado CDE=Cancelado Definitivo Este atributo solo retorna si respuesta_codigo=0502 |
facturador_electronico | boolean | true si la empresa ya se encuentra facturando electrónicamente. Este atributo solo retorna si respuesta_codigo=0502 |
Consulta DTE por CDC
Para consultar el DTE:
# Consulta de un DTE por el Código de Control (CDC)
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/dte/cdc/01800695631001001000000612021112917595714694"
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post(`https://api.facturasend.com.py/<tenantId>/dte/cdc/01800695631001001000000612021112917595714694`,
{headers}
)
.then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success": true,
"fecha": "2022-01-22T12:07:48-03:00",
"respuesta_codigo": "0422",
"respuesta_mensaje": "CDC encontrado",
"xml": "<xml? >...<rDE>",
"protocolo": "93891821"
}
Este servicio consulta la existencia de un documento electrónico directamente en el SIFEN, a travéz de la API del eKuatia.
Esta consulta también puede realizarse desde el panel de FacturaSend, todas las consultas anteriores realizadas quedan almacenadas y se despliegan en un listado.
Para invocar éste servicio se requiere que la empresa relacionada al tenant esté conectada a la SET, y también se requiere de un Certificado Digital válido.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | Código CDC de 44 dígitos del Documento Electrónico |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si la consulta se ejecutó con éxito, false si dio algún error |
error | string | El mensaje de error en caso de que haya retornado success=false. |
deList | date-time | Fecha y hora de la consulta, ésta información es del servidor de eKuatia |
respuesta_codigo | string | Código de respuesta de la consulta. Valores: 0422=CDC encontrado. 0420=CDC inexistente. 0421=RUC Certificado sin permiso |
respuesta_mensaje | string | Mensaje de respuesta de la consulta. Valores: 0422=CDC encontrado. 0420=CDC inexistente. 0421=RUC Certificado sin permiso |
xml | string | Si la respuesta_codigo = 0422, entonces aqui se mostrará el XML obtenido desde el eKuatia. |
protocolo | string | Si la respuesta_codigo = 0422, entonces aqui se mostrará el Protocolo de Autorización obtenido desde el eKuatia. |
Eventos
Cancelación del DE
Evento disponible para cancelar un Documento Electrónico que ya ha sido aprobado en la SET:
# Cancela un Documento electronico emitido
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/evento/cancelacion" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"cdc": "01800695631001001038720612021112917595714694",
"motivo": "Se digito erroneamente la dirección del cliente"
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"cdc": "01800695631001001038720612021112917595714694",
"motivo": "Se digito erroneamente la dirección del cliente"
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/evento/cancelacion`,
method: 'POST',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{ "success" : true,
"result" : {
"ns2:rRetEnviEventoDe" : {
"ns2:gResProcEVe" : "2022-02-08T14:39:00",
"ns2:gResProcEVe" : {
"ns2:dEstRes" : "Aprobado",
"ns2:dProtAut": "974149",
"ns2:gResProc" : {
"ns2:dCodRes" : "0600",
"ns2:dMsgRes" : "Evento registrado correctamente"
}
}
}
},
"cdc" : "01800695631001001038720612021112917595714694"
}
Este servicio ejecuta la cancelación de un documento específico teniendo como parámetro el valor de su CDC.
Sólo podrá cancelar los documentos que hayan sido emitidos y aprobados dentro del plazo de 48 horas (2 dias).
Si el Documento Electrónico es cancelado de forma satisfactoria se enviará un email al cliente, avisando del evento junto con el documento electrónico cancelado.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | El CDC del Documento Electrónico que desea cancelar |
motivo | Si | El motivo por el cual desea cancelar el documento |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si no hubo error en el servicio, false si ocurrio algun error. Para asegurar que el documento se haya procesado debe verificar que el campo "ns2:dEstRes" sea igual a "Aprobado" |
result | object | Objeto resultante de la operación del evento, directamente en el formato que devuelve el eKuatia |
Cancelación del Recibo
Evento disponible para cancelar un Recibo Electrónico:
# Cancela un Recibo electronico emitido
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/recibo/evento/cancelacion" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"cdc": "55800695631001001038720612021112917595714694",
"motivo": "Se digito erroneamente la dirección del cliente"
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"cdc": "55800695631001001038720612021112917595714694",
"motivo": "Se digito erroneamente la dirección del cliente"
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/recibo/evento/cancelacion`,
method: 'POST',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{ "success" : true,
"result" : {
"ns2:rRetEnviEventoDe" : {
"ns2:gResProcEVe" : "2022-02-08T14:39:00",
"ns2:gResProcEVe" : {
"ns2:dEstRes" : "Aprobado",
"ns2:dProtAut": "974149",
"ns2:gResProc" : {
"ns2:dCodRes" : "0600",
"ns2:dMsgRes" : "Evento registrado correctamente"
}
}
}
},
"cdc" : "55800695631001001038720612021112917595714694"
}
Este servicio ejecuta la cancelación de un recibo específico teniendo como parámetro el valor de su CDC.
Si el Recibo Electrónico es cancelado de forma satisfactoria se enviará un email al cliente, avisando del evento junto con el recibo electrónico cancelado.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | El CDC del Recibo Electrónico que desea cancelar |
motivo | Si | El motivo por el cual desea cancelar el recibo |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si no hubo error en el servicio, false si ocurrio algun error. Para asegurar que el documento se haya procesado debe verificar que el campo "ns2:dEstRes" sea igual a "Aprobado" |
result | object | Objeto resultante de la operación del evento (por compatibilidad en el formato de SIFEN) |
Evento de Inutilizacion
Evento destinado para inutilizar las numeraciones del timbrado que no fueron utilizados, para dejar constancia de su no utilizacion en la SET:
# Cancela un Documento electronico emitido
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/evento/inutilizacion" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
tipoDocumento: 1,
establecimiento: `001`,
punto: `001`,
desde: 10,
hasta: 12,
motivo: `Se inutiliza la numeración por error de generacion en software`
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
tipoDocumento: 1,
establecimiento: `001`,
punto: `001`,
desde: 10,
hasta: 12,
motivo: `Se inutiliza la numeración por error de generacion en software`
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/evento/inutilizacion`,
method: 'POST',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success" : true,
"result" : {
"ns2:rRetEnviEventoDe" : {
"ns2:gResProcEVe" : "2022-02-08T14:39:00",
"ns2:gResProcEVe" : {
"ns2:dEstRes" : "Aprobado",
"ns2:gResProc" : {
"ns2:dCodRes" : "",
"ns2:dMsgRes" : ""
}
}
}
}
}
Este servicio ejecuta la inutilizacion de uno o mas numeraciones teniendo en cuenta el parametro desde y hasta incluyendo los valores limites especificados.
No es necesario específicar el timbrado, pues esta información es extraida de Datos fiscales, de la Consola de Facturasend.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
tipoDocumento | Si | Número entero que representa el Tipo de Documento Electronico del 1 al 7 |
establecimiento | Si | String conteniendo el valor del establecimiento que corresponde a la numeración que desea inutilizar |
punto | Si | String conteniendo el valor del punto que corresponde a la numeración que desea inutilizar |
desde | Si | Número inicial a partir del cual se deben inutilizar la numeración |
hasta | Si | Número final hasta el cual se deben inutilizar la numeración |
serie | No | Valor de la Serie del rango de números que se desean inutilizar |
motivo | Si | El motivo por el cual desea inutilizar el rango de numeraciones |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si todo ocurrio bien y se inutilizaron las numeraciones del Timbrado, false si ocurrio algun error |
result | object | Objeto resultante de la operación del evento, directamente en el formato que devuelve el eKuatia |
Evento de Conformidad
Evento destinado para dar conformidad de recepcion de un Documento Electronico generado por un Emisor a su nombre o a nombre de su Empresa. Este evento no es obligatorio registrar:
# Cancela un Documento electronico emitido
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/evento/conformidad" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"cdc": "01800695631001001000000812021112910953738413",
"tipoConformidad" : 1, //1-Parcial o 2-Total,
"fechaRecepcion" : "2020-01-31T00:01:01"
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"cdc": "01800695631001001000000812021112910953738413",
"tipoConformidad" : 1, //1-Parcial o 2-Total,
"fechaRecepcion" : "2020-01-31T00:01:01"
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/evento/conformidad`,
method: 'POST',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{ "success" : true,
"result" : {
"ns2:rRetEnviEventoDe" : {
"ns2:gResProcEVe" : "2022-02-08T14:39:00",
"ns2:gResProcEVe" : {
"ns2:dEstRes" : "Aprobado",
"ns2:gResProc" : {
"ns2:dCodRes" : "",
"ns2:dMsgRes" : ""
}
}
}
}
}
Con este evento se informa a la SET que el receptor se encuentra conforme total o parcialmente con el documento electronico recibido por parte de su Proveedor asi como tambien que ha recibido la mercaderia o servicio especificado en el documento.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | El CDC del Documento Electrónico que desea informar |
tipoConformidad | Si | Valor numerico que indica si esta 1=Totalmente conforme o 2=Parcialmente conforme |
fechaRecepcion | Si | Indica la fecha que ha recibido el documento electronico |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si no hubo error en el servicio, false si ocurrio algun error. Para asegurar que el documento se haya procesado en la SET debe verificar que el campo "ns2:dEstRes" sea igual a "Aprobado" |
result | object | Objeto resultante de la operación del evento, directamente en el formato que devuelve el eKuatia |
Evento de Disconformidad
Evento destinado para informar a la SET de una Disconformidad sobre un Documento Electronico recibido por parte de un tercero o un proveedor:
# Evento de disconformidad
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/evento/disconformidad" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"cdc": "01800695631001001038720612021112917595714694",
"motivo": "Se genero erroneamente este documento a nuestro nombre"
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"cdc": "01800695631001001038720612021112917595714694",
"motivo": "Se genero erroneamente este documento a nuestro nombre"
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/evento/cancelacion`,
method: 'POST',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{ "success" : true,
"result" : {
"ns2:rRetEnviEventoDe" : {
"ns2:gResProcEVe" : "2022-02-08T14:39:00",
"ns2:gResProcEVe" : {
"ns2:dEstRes" : "Aprobado",
"ns2:gResProc" : {
"ns2:dCodRes" : "",
"ns2:dMsgRes" : ""
}
}
}
}
}
Con este servicio usted deja constancia en la SET que el documento electronico tiene algun inconveniente o que no le corresponde haber recibido como empresa.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | El CDC del Documento Electrónico que desea informar |
motivo | Si | El motivo por el cual esta disconforme con el documento |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si no hubo error en el servicio, false si ocurrio algun error. Para asegurar que el documento se haya procesado en la SET debe verificar que el campo "ns2:dEstRes" sea igual a "Aprobado" |
result | object | Objeto resultante de la operación del evento, directamente en el formato que devuelve el eKuatia |
Evento de Desconocimiento
Evento destinado para informar a la SET que usted no debio haber recibido dicho documento o que desconoce su origen y generacion:
# Informa a la SET de un Desconocimiento de un DTE
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/evento/desconocimiento" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"cdc": "01800695631001003000013712022010619364760029", //DE o DTE
"fechaEmision" : "2020-01-31T00:01:01", //Fecha pasada
"fechaRecepcion" : "2020-01-31T00:01:01", //Fecha despues
"tipoReceptor" : 1,
"nombre" : "BRASIL CRESCENCIO",
"ruc" : "50062360-0",
"documentoTipo" : 11,
"documentoNumero" : "",
"motivo": "teste"
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"cdc": "01800695631001003000013712022010619364760029", //DE o DTE
"fechaEmision" : "2020-01-31T00:01:01", //Fecha pasada
"fechaRecepcion" : "2020-01-31T00:01:01", //Fecha despues
"tipoReceptor" : 1,
"nombre" : "BRASIL CRESCENCIO",
"ruc" : "50062360-0",
"documentoTipo" : 11,
"documentoNumero" : "",
"motivo": "teste"
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/evento/desconocimiento`,
method: 'POST',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{ "success" : true,
"result" : {
"ns2:rRetEnviEventoDe" : {
"ns2:gResProcEVe" : "2022-02-08T14:39:00",
"ns2:gResProcEVe" : {
"ns2:dEstRes" : "Aprobado",
"ns2:gResProc" : {
"ns2:dCodRes" : "",
"ns2:dMsgRes" : ""
}
}
}
}
}
Este servicio informa a la SET que usted desconoce un determinado documento electronico y que ha sido generado erroneamente a su nombre o a su empresa.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | El CDC del Documento Electrónico que desea informar |
fechaEmision | Si | Fecha de emision del Documento Electronico |
fechaRecepcion | Si | Fecha de recepcion del documento electronico |
tipoReceptor | Si | Tipo de Receptor |
nombre | Si | Nombre del Receptor |
ruc | Si | RUC del Receptor con el digito verificador |
documentoTipo | Si | Tipo de Documento |
documentoNumero | Si | Numero de documento |
motivo | Si | El motivo por el cual desea cancelar el documento |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si no hubo error en el servicio, false si ocurrio algun error. Para asegurar que el documento se haya procesado en la SET debe verificar que el campo "ns2:dEstRes" sea igual a "Aprobado" |
result | object | Objeto resultante de la operación del evento, directamente en el formato que devuelve el eKuatia |
Evento de Notificación
Evento destinado para informar a la SET que conoce dicho documento, sin embargo, aún no tiene condiciones para manifestarse de forma conclusiva (con Conformidad, Disconformidad o Desconocimiento).
Es un evento opcional.
# Notifica a la SET de que se ha recepcionado un DTE
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/evento/notificacion" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"cdc": "01800695631001003000013712022010619364760029", //DE o DTE
"fechaEmision" : "2020-01-31T00:01:01", //Fecha pasada
"fechaRecepcion" : "2020-01-31T00:01:01", //Fecha despues
"tipoReceptor" : 1,
"nombre" : "BRASIL CRESCENCIO",
"ruc" : "50062360-0",
"documentoTipo" : 11,
"documentoNumero" : "",
"totalPYG": "150000"
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"cdc": "01800695631001003000013712022010619364760029", //DE o DTE
"fechaEmision" : "2020-01-31T00:01:01", //Fecha pasada
"fechaRecepcion" : "2020-01-31T00:01:01", //Fecha despues
"tipoReceptor" : 1,
"nombre" : "BRASIL CRESCENCIO",
"ruc" : "50062360-0",
"documentoTipo" : 11,
"documentoNumero" : "",
"totalPYG": "150000"
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/evento/notificacion`,
method: 'POST',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{ "success" : true,
"result" : {
"ns2:rRetEnviEventoDe" : {
"ns2:gResProcEVe" : "2022-02-08T14:39:00",
"ns2:gResProcEVe" : {
"ns2:dEstRes" : "Aprobado",
"ns2:gResProc" : {
"ns2:dCodRes" : "",
"ns2:dMsgRes" : ""
}
}
}
}
}
Este servicio informa a la SET que usted desconoce un determinado documento electronico y que ha sido generado erroneamente a su nombre o a su empresa.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | El CDC del Documento Electrónico que desea informar |
fechaEmision | Si | Fecha de emision del Documento Electronico |
fechaRecepcion | Si | Fecha de recepcion del documento electronico |
tipoReceptor | Si | Tipo de Receptor |
nombre | Si | Nombre del Receptor |
ruc | Si | RUC del Receptor con el digito verificador |
documentoTipo | Si | Tipo de Documento |
documentoNumero | Si | Numero de documento |
totalPYG | Si | Monto total del documento en GS |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si no hubo error en el servicio, false si ocurrio algun error. Para asegurar que el documento se haya procesado en la SET debe verificar que el campo "ns2:dEstRes" sea igual a "Aprobado" |
result | object | Objeto resultante de la operación del evento, directamente en el formato que devuelve el eKuatia |
Evento de Nominación
Evento destinado para informar a la SET el receptor de una factura, cuando la factura originalmente fue hecha a un innominado.
Es un evento que depende de la necesidad del emisor, a menudo cuando necesita realizar una nota de crédito sobre una factura que originalmente se generó a un innominado.
# Invoca el evento de nominación
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/evento/nominacion" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
"cdc": `01800695631001002100700812022063013102931279`, // DTE
"motivo": `Se asignar el receptor correcto del DTE`,
"contribuyente" : true,
"tipoReceptor" : 1,
"ruc" : "2005001-1",
"razonSocial" : "Marcos Adrian Jara Rodriguez",
"nombreFantasia" : "Marcos Adrian Jara Rodriguez",
"tipoOperacion" : 1,
"direccion" : "Avda Calle Segunda y Proyectada",
"numeroCasa" : "1515",
"departamento" : 11,
"departamentoDescripcion" : "ALTO PARANA",
"distrito" : 143,
"distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
"ciudad" : 3344,
"ciudadDescripcion" : "PASO ITA (INDIGENA)",
"pais" : "PRY",
"paisDescripcion" : "Paraguay",
"telefono" : "061874874",
"celular" : "595976254125",
"email" : "cliente@cliente.com",
"codigo" : "1548"
}'
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
const data = {
"cdc": `01800695631001002100700812022063013102931279`, // DTE
"motivo": `Se asignar el receptor correcto del DTE`,
"contribuyente" : true,
"tipoReceptor" : 1,
"ruc" : "2005001-1",
"razonSocial" : "Marcos Adrian Jara Rodriguez",
"nombreFantasia" : "Marcos Adrian Jara Rodriguez",
"tipoOperacion" : 1,
"direccion" : "Avda Calle Segunda y Proyectada",
"numeroCasa" : "1515",
"departamento" : 11,
"departamentoDescripcion" : "ALTO PARANA",
"distrito" : 143,
"distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
"ciudad" : 3344,
"ciudadDescripcion" : "PASO ITA (INDIGENA)",
"pais" : "PRY",
"paisDescripcion" : "Paraguay",
"telefono" : "061874874",
"celular" : "595976254125",
"email" : "cliente@cliente.com",
"codigo" : "1548"
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/evento/nominacion`,
method: 'POST',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{ "success" : true,
"result" : {
"ns2:rRetEnviEventoDe" : {
"ns2:gResProcEVe" : "2022-02-08T14:39:00",
"ns2:gResProcEVe" : {
"ns2:dEstRes" : "Aprobado",
"ns2:gResProc" : {
"ns2:dCodRes" : "",
"ns2:dMsgRes" : ""
}
}
}
}
}
Tenga en cuenta los parametros para enviar el evento.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
cdc | Si | El CDC del Documento Electrónico que desea nominar. Debe existir en Facturasend |
motivo | Si | El motivo del evento de nominación |
contribuyente | Si | Campo booleano que indica si el nominado es o no un contribuyente |
tipoReceptor | No | Tipo de contribuyente Ej.: 1= Persona Física, 2= Persona Jurídica Obligatorio si contribuyente = true, No informar si contribuyente = false |
ruc | No | RUC del Receptor con el digito verificador. Obligatorio si el nominado es un contribuyente. |
razonSocial | Si | Nombre o Razón Social del Receptor |
nombreFantasia | No | Nombre de Fantasía del Receptor |
tipoOperacion | Si | Tipo de Operación del Receptor, siendo: 1-B2B, 2-B2C, 4-B2F |
direccion | No | Dirección del Receptor. Obligatorio si tipoOperacion=4 |
numeroCasa | No | Número de Casa del Receptor. Obligatorio si se pasa la dirección. Cuando es contribuyente debe corresponder a lo declarado en el RUC |
departamento | No | Código del departamento,Campo obligatorio si se informa la dirección y tipoOperacion ≠ 4, no se debe informar cuando tipoOperacion = 4. |
distrito | No | Código del distrito del Cliente, El código debe seguir la Tabla 2.1 – Distritos del Manual Tecnico. |
ciudad | No | Código de la ciudad del Cliente. Campo obligatorio si se informa la dirección y tipoOperacion≠4, no se debe informar cuando tipoOperacion = 4. |
pais | Si | Código del Pais del Cliente, Segun XSD de Codificación de Países |
documentoTipo | No | Tipo de documento del cliente, de acuerdo a 1=Cédula paraguaya 2=Pasaporte 3=Cédula extranjera 4=Carnet de residencia 5=Tarjeta Diplomática de exoneración fiscal 9=Otro (informar data.documentoTipoDescripcion). Obligatorio si data.contribuyente = false |
documentoNumero | No | Número de documento de identidad. Obligatorio si data.contribuyente = false |
telefono | No | Número de teléfono. Debe incluir el prefijo de la ciudad si pais = PRY |
celular | No | Numero de celular del cliente |
No | Correo electronico del cliente Si se le pasa más de un correo (separado por comas) en eKuatia se incluirá sólo el primero |
|
codigo | Si | Código del Cliente, obligatorio para FacturaSend |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si todo ocurrio bien y se nominó el Documento Electrónico, false si ocurrio algun error |
result | object | Objeto resultante de la operación del evento, directamente en el formato que devuelve el eKuatia |
Lote en Borrador
Un lote puede ser enviado como borrador a FacturaSend, indicando el parametro de consulta draft=true, al crear el Lote.
Un lote en borrador no se envia a la SET hasta que se envie un comando de Confirmación.
Esta opción es muy util para simular el comportamiento completo de un envio de lote, como asi también el flujo que sigue dentro de su sistema, asi como también para poder visualizar el KUDE y estar seguro de sus datos, antes de enviar a la SET.
Un lote en borrador puede ser CONFIRMADO o DESCARTADO, Si se Confirma, entonces se da la señal para que este lote se envie a la SET y si se Descarta nunca se envia ese Lote a la SET.
Confirmar un Lote en Borrador
Para confirmar un Lote en Borrador:
# Confirma un Lote que ha sido enviado anteriormente como un borrador.
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/lote/draft-confirm/<loteId>"
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post(`https://api.facturasend.com.py/<tenantId>/lote/draft-confirm/<loteId>`,
null,
{headers}
)
.then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success": true
}
Este servicio confirma un lote que habia sido enviado originalmente como borrador a FacturaSend, procesandolo y enviandolo a la SET para su proceso.
Debe tener en cuenta que un lote en borrador no puede ser confirmado despues de las 72hs. de su creación, por motivo de la Firma Digital.
Parámetros (QueryParam)
Parámetro | Requerido | Descripción |
---|---|---|
loteId | Si | El Id del lote que desea confirmar |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si la confirmación se ejecutó con éxito, false si dio algún error |
error | string | El mensaje de error en caso de que haya retornado success=false. |
Rechazar un Lote en Borrador
Para rechazar un Lote en Borrador:
# Rechazar un Lote que ha sido enviado anteriormente como un borrador.
curl \
-X \
POST "https://api.facturasend.com.py/<tenantId>/lote/draft-reject/<loteId>"
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post(`https://api.facturasend.com.py/<tenantId>/lote/draft-reject/<loteId>`,
null,
{headers}
)
.then( respuesta => {
console.log(respuesta);
});
Este servicio rechaza/descarta un lote que habia sido enviado originalmente como borrador a FacturaSend, no enviandolo finalmente a la SET y de esta forma dando por cerrado al envio de lote.
Parámetros
Parámetro | Requerido | Descripción |
---|---|---|
loteId | Si | El Id del lote que desea confirmar |
Respuesta
Atributo | Tipo | Descripción |
---|---|---|
success | boolean | true si la consulta se ejecutó con éxito, false si dio algún error |
error | string | El mensaje de error en caso de que haya retornado success=false. |
Otros servicios
A continuación se presentan otros servicios que pueden ser invocados desde FacturaSend
Consulta de Departamentos
Servicio que obtiene la lista de todos los departamentos del Paraguay admitidos por el SIFEN. En cada elemento se recupera el código y la descripción del Departamento.
# Obtiene los departamentos
curl \
GET "https://api.facturasend.com.py/<tenantId>/departamentos" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/departamentos`,
method: 'GET',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success" : true,
"result" : [{
"codigo": 17,
"descripcion": "ALTO PARAGUAY"
},
{
"codigo": 11,
"descripcion": "ALTO PARANA"
},
{
"codigo": 99,
"descripcion": "OTROS"
}]
}
Puede utilizar este servicio para mantener actualizado los datos de los departamentos en su Sistema.
Consulta de Distritos
Servicio que obtiene la lista de todos los distritos del Paraguay admitidos por el SIFEN. En cada elemento se recupera el código y la descripción, y el Departamento al cual pertenece el Distrito.
Puede especificar un departamento específico del cual desea obtener los distritos, en la ruta /
También es posible realizar busquedas por nombres de distritos parecidos enviando un parámetro ?nombre=, indicando el valor para el filtro.
# Obtiene los distritos del departamento y filtrando por el nombre
curl \
GET "https://api.facturasend.com.py/<tenantId>/distritos/<departamentoId>?nombre=bahia" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/distritos/<departamentoId>?nombre=bahia`,
method: 'GET',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success" : true,
"result" : [{
"codigo": 196,
"descripcion": "BAHIA NEGRA",
"departamento": {
"codigo": 17,
"descripcion": "ALTO PARAGUAY"
}
}]
}
Puede utilizar este servicio para mantener actualizado los datos de los distritos en su Sistema.
Consulta de Ciudades
Servicio que obtiene la lista de todas las ciudades del Paraguay admitidos por el SIFEN. En cada elemento se recupera el código y la descripción, y el objeto Distrito al cual pertenece la Ciudad.
Puede especificar un distrito específico del cual desea obtener las ciudades, en la ruta /
También es posible realizar busquedas por nombres de ciudades parecidos enviando un parámetro ?nombre=, indicando el valor para el filtro.
# Obtiene los distritos del departamento y filtrando por el nombre
curl \
GET "https://api.facturasend.com.py/<tenantId>/ciudades/<distritoId>?nombre=asuncion" \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/ciudades/<distritoId>?nombre=asuncion`,
method: 'GET',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success" : true,
"result" : [{
"codigo": 5666,
"descripcion": "B.AEREA NVA.ASUNCION (PICUIBA)",
"distrito": {
"codigo": 234,
"descripcion": "GRAL. EUGENIO A. GARAY",
"departamento": {
"codigo": 16,
"descripcion": "BOQUERON"
}
}
}, {
"codigo": 5678,
"descripcion": "NUEVA ASUNCION",
"distrito": {
"codigo": 234,
"descripcion": "GRAL. EUGENIO A. GARAY",
"departamento": {
"codigo": 16,
"descripcion": "BOQUERON"
}
}
}, {
"codigo": 999,
"descripcion": "Otros",
"distrito": {
"codigo": 999,
"descripcion": "Otros",
"departamento": {
"codigo": 999,
"descripcion": "Otros"
}
}
}]
}
Puede utilizar este servicio para mantener actualizado los datos de los distritos en su Sistema.
Consultar parametros del Contribuyente
Devuelve los parámetros del Emisor de Facturasend utilizados en la generación de un documento electrónico.
# Obtiene versión de las librerías del proyecto
curl \
GET "https://api.facturasend.com.py/<tenantId>/system/backend/params \
-H "Authorization: Bearer api_key_<hdiweuw-92jwwle...>"
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
`Authorization` : `Bearer api_key_<hdiweuw-92jwwle...>`
};
axios.post({
url: `https://api.facturasend.com.py/<tenantId>/system/backend/params`,
method: 'GET',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá lo siguiente:
{
"success": true,
"result": {
"params": {
"ruc": "80089025-3",
"razonSocial": "RAZON SOCIAL S. A.",
"nombreFantasia": "NOMBRE FANTASIA DEL EMISOR",
"timbradoNumero": "78936783",
"timbradoFecha": "2023-10-26T03:00:00.000Z",
"tipoContribuyente": 2,
"tipoRegimen": 8,
"establecimientos": [
{
"codigo": "001",
"direccion": "Avda. San Blas c/Rogelio Benitez",
"numeroCasa": "0",
"departamento": 11,
"departamentoDescripcion": "ALTO PARANA",
"distrito": 145,
"distritoDescripcion": "CIUDAD DEL ESTE",
"ciudad": 3383,
"ciudadDescripcion": "CIUDAD DEL ESTE",
"telefono": "0976927315",
"email": "ejemplo@empresa.com",
"denominacion": "Sucursal 1"
}
],
"actividadesEconomicas": [
{
"codigo": "96031",
"descripcion": "ACTIVIDAD ECONOMICA DE LA EMPRESA"
}
],
"version": 150
},
"configSetApi": {
"errorLimit": 3,
"decimals": 2,
"taxDecimals": 2,
"pygDecimals": 0,
"pygTaxDecimals": 2,
"redondeoSedeco": false,
"test": false
}
}
}
Obtener versión de las Dependencias.
Servicio que recupera la información de las dependencias y librerías del proyecto backend, útil para saber qué versión específicamente se utilizan para validar, generar, firmar, firmar y enviar a la SET el Documento.
# Obtiene versión de las librerías del proyecto
curl \
GET "https://api.facturasend.com.py/system/backend/info
# El ejemplo se muestra utilizando AXIOS
import axios from 'axios';
const headers = {
};
axios.post({
url: `https://api.facturasend.com.py/system/backend/info`,
method: 'GET',
{headers}
}
).then( respuesta => {
console.log(respuesta);
});
Como respuesta obtendrá algo similar a lo siguiente (las versiones pueden variar):
{
"success": true,
"dependencies": {
"facturacionelectronicapy-qrgen": "^1.0.7",
"facturacionelectronicapy-recibo-xmlgen": "^1.0.9",
"facturacionelectronicapy-setapi": "^1.0.28",
"facturacionelectronicapy-xmlgen": "^1.0.228",
"facturacionelectronicapy-xmlsign": "^1.0.12"
}
}
Puede utilizar este servicio para comparar con otras versiones de facturasend o para comparar con la versión offline
Glosario
Parameter | Description |
---|---|
DE | Documento Electrónico |
DTE | Documento Tributario Electrónico |