TUSFACTURAS.APP / API V2
Facturación asincrónica e individual (encolada)
Utilizá la API de facturación electrónica AFIP de TusFacturas.app, para emitir comprobantes de venta desde tu sistema actual y enviarlo a nuestra cola de procesamiento.
Una vez configurada tu cuenta y creado tu CUIT+PDV, podrás comenzar a emitir facturas electrónicas.
Te sugerimos revisar el apartado de ¿Cómo empiezo? si es la primera vez que utilizas nuestros servicios.

Facturación asincrónica e individual (encolada)

Al utilizar éste servicio, los comprobantes que emitas, quedarán en una cola de procesamiento. A medida que se van procesando, se te enviará un webhook para que puedas obtener la información generada.
Te sugerimos leer primero:
  1. 1.
    La documentación de "Facturación", para conocer cómo debe componerse el request que envíes
  2. 2.
    La documentación "Webhooks (notificaciones)" para conocer cómo funciona el servicio de notificaciones.

¿Cómo funciona el modo asincrónico, de facturación individual?

Datos a tener en cuenta:

  • La fecha que envíes en el comprobante, determina cuándo será enviado a procesar, por lo que puedes enviar comprobantes a la cola de procesamiento con fecha posterior a hoy. Te sugerimos leer el apartado de "FAQs sobre la cola de procesamiento".
  • El request, deben venir con el campo número en cero (0).
  • Debes enviar un "external_reference" de manera obligatoria y debería ser único. TusFacturasAPP no realiza ésta validación, por lo que si envias +1 request con el mismo external_reference, tendrás problemas de tu lado para procesar las respuestas.
  • Tu CUIT + PDV, debe tener una dirección de webhook definida, de manera obligatoria, ya que sin ella, no se podrán enviar a procesar los lotes y serán rechazados de manera instantánea.
  • No podrás enviar comprobantes de tipo E en ésta modalidad.
  • Al momento del envío del request, la suscripción de tu espacio de trabajo se encuentre vigente, activa y posea cupo disponible, para emitir el comprobante.
  • Si se detecta al menos un (1) error de validación de datos, no se mandará a procesar y obtendrás la respuesta al instante, no por un webhook.

A donde enviar el request?

post
https://www.tusfacturas.app/app/api/
v2/facturacion/nuevo_encola
Nuevo comprobante de Venta asincrónico e individual (encolado)

¿Que te retornaremos ?

🔴
Error de validación, de los datos enviados :

Si el request enviado, posee errores en la validación o formato de los campos enviados, pero cumple con los siguientes requisitos básicos:
  • Tu CUIT/PDV tiene una dirección de webhook valida
  • Tu request cuenta con el campo "external_reference"
Recibirás la respuesta al instante y también se te notificará vía webhook.
Ejemplo de un request, cuya external_reference no es válida:
JSON
{
"error": "S",
"errores": [
"La external reference enviada, posee caracteres no validos.",
"Error al crear al cliente . No se podra generar el comprobante. Revise los datos enviados."
],
"error_cod": [],
"error_details": [
{
"code": "TFC-8002",
"text": "La external reference enviada, posee caracteres no validos."
},
{
"code": "TFC-6001",
"text": "Error al crear al cliente . No se podra generar el comprobante. Revise los datos enviados."
}
],
"external_reference": "1%'703"
}
Ejemplo del hook que recibirás:
{
"creado": "24\/05\/2022 16:58:51",
"evento": "error",
"recurso": "facturacion",
"external_reference": "1%'703",
"intento": 1,
"msg": ["La external reference enviada, posee caracteres no validos.", "Error al crear al cliente . No se podra generar el comprobante. Revise los datos enviados."],
"hook_id": "xxxx"
}
En cambio, si tu request no cumple con los requisitos básicos previamente mencionados, solo recibirás al instante la respuesta y no se te notificará por webhook.
{
"error": "S",
"errores": [
"Cuando se envia un comprobante a la cola, debes enviar una referencia externa en el campo external_reference.",
"La external reference enviada, posee caracteres no validos.",
"Error al crear al cliente . No se podra generar el comprobante. Revise los datos enviados."
],
"error_cod": [],
"error_details": [
{
"code": "TFC-8002",
"text": "Cuando se envia un comprobante a la cola, debes enviar una referencia externa en el campo external_reference."
},
{
"code": "TFC-8002",
"text": "La external reference enviada, posee caracteres no validos."
},
{
"code": "TFC-6001",
"text": "Error al crear al cliente . No se podra generar el comprobante. Revise los datos enviados."
}
],
"external_reference": ""
}

🟢
Cuando el request se ha aceptado para su procesamiento:

En caso que no se detecten errores tempranos, en la etapa de validación de los datos enviados, obtendrás la siguiente respuesta de manera instantánea y recibirás un webhook para informarte que se ha encolado, como se explica a continuación.
Ejemplo :
{
"error": "N",
"errores": [],
"error_cod": [],
"error_details": [],
"external_reference": "ex_rf1",
"requiere_fec": "NO",
"observaciones": "",
"tfc_generacion_tipo": 6,
"rta": "El comprobante se ha guardado correctamente ",
"cae": " ",
"vencimiento_cae": "01\/01\/2000",
"vencimiento_pago": "21\/03\/2022",
"comprobante_nro": "00010-00000000",
"comprobante_tipo": "FACTURA A",
"afip_codigo_barras": "",
"afip_qr": "",
"envio_x_mail": "N",
"envio_x_mail_direcciones": "",
"micrositios": {
"cliente": "",
"descarga":""
},
"comprobante_pdf_url": ""
}

Webhooks de respuesta

Existen 3 tipos de evento posible, para el recurso de facturación que podes recibir en ésta instancia: "encolado", "emitido" y "error".
Te sugerimos conocer más sobre los webhooks, en la documentación de Webhooks (notificaciones).

🟣
Hook de "encolado"

recurso
evento
facturacion
encolado
El hook de "encolado", te informa que el request ha sido aceptado para su procesamiento. Mientras un comprobante se encuentre dentro de la cola de procesamiento, puedes realizar las siguientes operaciones: Cambiar fecha del comprobante o eliminar el comprobante de la cola de procesamiento.
El JSON que recibirás será similar al siguiente ejemplo:
{
"creado": "18/03/2022 15:58:11",
"evento": "encolado",
"recurso": "facturacion",
"external_reference": "17032",
"intento": 1,
"msg": [],
"hook_id": "xxxxx"
}

🟢
Hook de "emitido"

recurso
evento
facturacion
emitido
El hook de "emido", te informa que el request ha sido procesado con éxito y se ha emitido el comprobante correctamente. Una vez recibido éste hook, podrás realizar una consulta avanzada por external_reference, para obtener los datos generados de éste comprobante.
El JSON que recibirás será similar al siguiente ejemplo:
{
"creado": "18/03/2022 15:58:11",
"evento": "emitido",
"recurso": "facturacion",
"external_reference": "17032",
"intento": 1,
"msg": [],
"hook_id": "xxx"
}

🔴
Hook de "error"

recurso
evento
facturacion
error
El hook de "error", te informa que el request ha sido procesado, pero se han detectado errores y no se podrá facturar. Si un comprobante se encuentra procesado con error dentro de la cola de procesamiento, puedes realizar las siguientes operaciones: Cambiar fecha del comprobante, re-enviar el comprobante a la cola de procesamiento o eliminar el comprobante de la cola de procesamiento.
El JSON que recibirás será similar al siguiente ejemplo y a diferencia de los anteriores, obtendrás la lista de errores detectados, dentro del campo "msg".
{
"creado": "18/03/2022 15:58:11",
"evento": "error",
"recurso": "facturacion",
"external_reference": "17032",
"intento": 1,
"msg": [
" AFIP Factura electronica, informa el siguiente error: Cod. Error: #6661145.0 - AFIP rechazo la generacion del comprobante Si necesitas ayuda, contactanos en [email protected]",
" AFIP Factura electronica, informa el siguiente error: Cod. Error: #6661145.10036 - El campo FchVtoPago no puede ser anterior a la fecha del comprobante. Si necesitas ayuda, contactanos en [email protected]",
"AFIP No devolvio el CAE asociado. (Cod. Error #6661141.S1254)",
"AFIP No devolvio el CAE asociado. (Cod. Error #6661141.S1278)"
],
"hook_id": "xxx"
}
Copiar enlace
Esquema
Facturación asincrónica e individual (encolada)
¿Cómo funciona el modo asincrónico, de facturación individual?
A donde enviar el request?
post
Nuevo comprobante de Venta asincrónico e individual (encolado)
¿Que te retornaremos ?
Webhooks de respuesta
Hook de "encolado"
Hook de "emitido"
Hook de "error"