- Criado por Usuário desconhecido (noeliac), última alteração por Maria Gala Higgins em dez 11, 2023
![]()
![]()
AR Agente - Servicios Facturación electrónica
Este set de servicios permite la emisión y almacenamiento de comprobantes electrónicos respetando el régimen de factura electrónica según la resolución dispuesta por AFIP.
Fiscal Flow solicitará y obtendrá el CAE de los comprobantes generados con su correspondiente fecha de vencimiento, gracias a un enlace directo de webservices con los servidores de AFIP.
El siguiente diagrama es un flujo - muy sencillo - de operación del punto de venta y el sistema de emisión de comprobantes electrónicos Fiscal Flow:

Servicio: Autorizar documento electrónico (authorize)
Este método se utiliza para autorizar documentos electrónicos.
Revisiones
Fecha | Versión | Descripción | Autor |
|---|---|---|---|
| 20/10/2023 | 1.0 | Se modifican los nombres de los siguientes atributos:
|
El agente intenta autorizar por CAE, en caso de encontrar un inconveniente, autoriza en forma offline (CAEA).
Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "Authenticate".
Es importante tener en consideración que se deberán aplicar mecanismos de redondeos de importes, ya que es una reglamentación de AFIP y en caso de no cumplirse con lo especificado, se rechazaran
los comprobantes al intentar autorizarse en AFIP.
Reglas de redondeo
Error relativo porcentual deberá ser <= 0.01% o el error absoluto <=0.01 * cantidad
Por ejemplo en el caso del redonde el importe de iva:
Supongamos que tienes una factura electrónica con tres alícuotas de IVA involucradas, y el valor correcto del IVA total para esa factura es de $100:
Ejemplo de Error Relativo Porcentual:
- Valor Calculado del IVA Total: $100.50
- Error Relativo Porcentual: [(Valor Calculado - Valor Correcto) / Valor Correcto] * 100 = [($100.50 - $100) / $100] * 100 = 0.50%
En este caso, el error relativo porcentual es del 0.50%, lo cual excede el límite permitido del 0.01%. Esto significa que el cálculo del IVA en la factura tiene un error demasiado alto según el estándar establecido.
Ejemplo de Error Absoluto:
- Valor Calculado del IVA Total: $99.80
- Error Absoluto: |Valor Calculado - Valor Correcto| = |$99.80 - $100| = $0.20
Si tienes tres alícuotas de IVA en la factura y el error absoluto permitido es de 0.01 multiplicado por la cantidad de alícuotas (0.01 * 3 = 0.03), el error absoluto en este caso ($0.20) excede el límite permitido de $0.03. Esto indica que el cálculo del IVA tiene un error mayor al permitido.
Es un método REST basado en el formato JSON. Ejemplo:
| [post] http://[dirección-ip]:[puerto]/api/v1/invoice/authorize |
|---|
POST - REQUEST
header
| Elemento | Valor |
|---|---|
x-access-token | Token obtenido a través del servicio "Authenticate" |
Ejemplo:
| x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE |
BODY
| Elemento | Descripción | Tipo | Requerido | Validación | Elemento AFIP |
| requestCredential | Detalle de la identificación de la terminal que solicita la autorización | Objeto | Sí | ||
|---|---|---|---|---|---|
| companyCode | Código de compañía, provisto para la empresa que contrata el servicio | String | Si | 992 | |
| terminalCode | Código de terminal / punto de venta | String | Si | 992 | |
| storeCode | Código de tienda | String | Si | 992 | |
| customer | Detalle del cliente | Objeto | Sí | ||
| documentType | Tipo de documento de identificación del cliente. Para comprobantes no nominados (consumidores finales con monto menor o igual a lo establecido por la RG 4444/2019), se debe enviar 99 (". | Integer (2) | Si. | Ver: FF - Datos maestros: Tipos de documentos | DocTipo |
| identificationNumber | Número de identificación del cliente. Para comprobantes no nominados (consumidores finales con monto menor o igual a lo establecido por la RG 4444/2019), se debe enviar 0. | Number | Si | DocNro | |
| taxCategory | Situación impositiva del cliente frente al IVA | Integer (1) | Si | Ver: FF - Datos maestros: Situación impositiva del cliente | |
| IBCategory | Situación impositiva del cliente frente a Ingresos Brutos | String | No | ||
| IBIdentificationNumber | Número de inscripción en Ingresos Brutos | Number | No | ||
| sendVoucher | Si desea marcar la factura para su posterior envío por correo electrónico. Por default es FALSE. | String | No | ||
| billingEmail | Dirección de correo electrónico del cliente adonde debe llegar la factura. Corresponde al mail de facturación. Es requerido para enviar factura por correo electrónico. | String | No | ||
| personalEmail | Dirección de correo electrónico del cliente. Es un dato de contacto, no es al que se enviará la factura. | String | No | ||
| code | Código del cliente | String | No | ||
| businessName | Nombre de la persona / Empresa cliente (Receptor del comprobante) No es requerido si se trata de un comprobante distinto de tipo A y se trata de Consumidor Final | String | No | ||
| civilStatus | Estado civil del cliente. No es necesario si es empresa. | String | No | ||
| fiscalAddress | Dirección fiscal de la persona / empresa | String | No | ||
| city | Nombre de la ciudad | String | No | ||
| state | Nombre de la provincia | String | No | ||
postalCode | Código postal | String | No | ||
| fiscalDocument | Información completa del comprobante | Objeto | Sí | ||
| internalId | Número de comprobante interno del punto de venta. Debe ser un identificador único de la transacción para la tienda y terminal. | Alfanumérico(40) | Si | ||
| conceptCode | Conceptos a facturar | Integer (2) | Si | Ver: FF - Datos maestros: Conceptos a facturar | Concepto |
| invoiceType | Tipo de Comprobante | Integer (3) | Si | Ver: FF - Datos maestros: Tipos de Comprobantes | CbteTipo |
| saleCondition | Condición de venta | String | Si | ||
| currency | Código de moneda | String | Si | Ver: FF - Datos maestros: Monedas | MonId |
| currencyChange | Cotización de la moneda informada | Number (10,6) | Si | MonCotiz | |
| invoiceDate | Fecha del documento Formato: yyyy-mm-dd hh:mm:ss | Date | Si | CbteFch | |
| paymentDueDate | Fecha de vencimiento del pago del documento. Formato: yyyy-mm-dd | Date | No | FchVtoPago | |
| periodStartDate | Fecha de inicio del servicio facturado (Formato: yyyy-mm-dd) Requerido si el tipo de concepto a facturar es un Servicio (conceptCode=2,3). | Date | No | FchServDesde | |
| periodEndDate | Fecha de fin del servicio facturado (Formato: yyyy-mm-dd) Requerido si el tipo de concepto a facturar es un Servicio (conceptCode=2,3). | Date | No | FchServHasta | |
businessDate | Fecha contable del documento (Formato: yyyy-mm-dd) Si no viene el valor por defecto es fecha del día formato yyyy-mm-dd | Date | No | ||
| zNumber | Numero de cierre Z Si no viene el valor por defecto es fecha del día formato yyyymmdd | Number | No | ||
| subTotalAmount | Importe total neto de descuentos e impuestos (IVA y otros impuestos: percepción, impuestos municipales, impuestos internos) (Comprobantes tipo A: importe sin IVA. Comprobantes tipos B: importe con IVA incluido) | Number (10,2) | Si | ||
| ticketDiscount | Descuento global sobre la venta (ticket). Importe sumatorio de todos los descuentos con scope: T (transaction) (Comprobantes tipo A: descuento neto sin IVA. Comprobantes tipos B: descuento con IVA incluido) | Number (10,2) | Si | ||
| discountAmount | Importe sumatorio de todos los descuentos de venta (a nivel ítems + a nivel factura o ticket) con scope: I (item) + T (transaction) (Comprobantes tipo A: total de descuentos neto sin IVA. Comprobantes tipos B: descuentos con IVA incluido) | Number (10,2) | Si | ||
| nonTaxedAmount | Importe conceptos no gravados | Number (10,2) | Si | ImpTotConc | |
| taxedAmount | Importe neto gravado del documento Suma de relatedTaxes.baseAmount | Number (10,2) | Si | ImpNeto | |
| amountIVA | Importe en concepto de IVA Suma de relatedTaxes.amount | Number (10,2) | Si | ImpIVA | |
| amountOtherTaxes | Importe en concepto de Otros Tributos Suma de relatedOtherTaxes.amount | Number (10,2) | Si | ImpTrib | |
| exemptAmount | Importe en concepto de valores exentos de impuestos | Number (10,2) | Si | ImpOpEx | |
| totalAmount | Importe total del documento | Number (10,2) | Si | ImpTotal | |
| orderNumber | Número de pedido | Number | No | ||
| operator | Código del operador o vendedor | String | No | ||
| fiscalDocument.relatedTaxes | Detalle de ivas, en caso de no ser exento o no gravado. | ARRAY | No | AlicIva | |
| amount | Importe liquidado según la alícuota de IVA Informar en 0 (cero) en caso de tratarse de IVA 0%. | Number (10,2) | Si | Importe | |
| baseAmount | Base imponible para la determinación de la alícuota | Number (10,2) | Si | BaseImp | |
| code | Código del Tipo de IVA | Integer (2) | Si | Ver: FF - Datos maestros: Tipos de IVA | Id |
| name | Descripción del impuesto | String | Si | ||
| fiscalDocument.relatedOtherTaxes | Detalle de otros impuestos - percepciones de IVA, percepciones de Ingresos Brutos, Impuestos Internos, retenciones nacionales, municipales, etc.- | ARRAY | No | Tributos | |
| amount | Importe del impuesto | Number (10,2) | Sí | Importe | |
| baseAmount | Base imponible para la determinación del tributo | Number (10,2) | Sí | BaseImp | |
| code | Código del Tipo de Impuesto | Integer (2) | Sí | Ver: FF - Datos maestros: Códigos de Impuesto | Id |
| name | Descripción de impuesto | String | No | Desc | |
| aliquot | Alícuota | Number (3,2) | No | Alic | |
| fiscalDocument.optionals | Solo si se encuentra dentro del conjunto de emisores habilitados a informar opcionales. IMPORTANTE: si se trata de operaciones que no dan lugar al cómputo del crédito fiscal - F. 8001 | ARRAY | No | Opcionales | |
| code | Código identificador del Opcional de AFIP | String | No | Ver: FF - Datos maestros: Opcionales | Id |
| name | Valor del Parámetro opcional a informar | String | No | Valor | |
| fiscalDocument.relatedInvoices | Comprobantes asociados a las nota de crédito o nota de débito. Obligatorio si no se informa periodo asociado (relatedInvoicesPeriod) | ARRAY | No | CbtesAsoc | |
| invoiceType | Tipo de Comprobante asociado | Integer (3) | Sí | Ver: FF - Datos maestros: Tipos de Comprobantes | Tipo |
| pointOfSale | Punto de venta AFIP del comprobante asociado | String (5) | Sí | PtoVta | |
| invoiceNumber | Número del punto de venta del comprobante asociado | String (8) | Sí | Nro | |
| invoiceDate | Fecha del comprobante asociado (Formato: yyyy-mm-dd) | Date | Sí | CbteFch | |
| fiscalDocument.relatedInvoicesPeriod | Período de emisión del comprobante original, cuando es una nota de crédito o nota de débito. Obligatorio si no se informan comprobantes asociados (relatedInvoices)) | Objeto | No | PeriodoAsoc | |
| startDate | Fecha correspondiente al inicio del periodo del comprobante que se quiere identificar (Formato: yyyy-mm-dd) | Date | Sí | FchHasta | |
| endDate | Fecha correspondiente al fin del periodo del comprobante que se quiere identificar (Formato: yyyy-mm-dd) | Date | Sí | FchDesde | |
| fiscalDocument.items | Listado de artículos | ARRAY | Si | ||
| action | Concepto del ítem. S: Sale | R: Return S: cuando se trata de un producto que suma a la transacción, por ejemplo, un item que se vende. R: cuando se trata de un producto que resta a la transacción, por ejemplo, un item que se devuelve, o un envase de bebida. | char (1) | Si | ||
| sku | Código del producto | String | Si | ||
name | Nombre del producto | String | Si | ||
qty | Cantidad del producto | Number | Si | ||
| um | Unidad de medida del producto. Valor por defecto: UN | String(20) | No | ||
tax | Porcentaje de IVA asociado al ítem. Se deberá enviar en 0 (cero) si es exento o no gravado. | Number (4,2) | Si | ||
taxAmount | Importe de IVA asociado al ítem | Number (10,2) | Si | ||
| internalTax | Importe de impuestos internos aplicados al ítem (unitario) | Number (10,2) | Si | ||
| discount | Suma de descuentos aplicados. Suma de items.promotions.amount (Comprobantes tipo A: descuento neto sin IVA. Comprobantes tipos B: descuento con IVA incluido) | Number (10,2) | Sí | ||
unitPrice | Precio unitario del producto. (Comprobantes tipo A: precio neto sin IVA. Comprobantes tipos B: precio IVA incluido) | Number (10,2) | Si | ||
| totalPrice | Precio unitario del producto x cantidad (qty) (Comprobantes tipo A: precio neto sin IVA. Comprobantes tipos B: precio IVA incluido) | Number (10,2) | Si | ||
| code | Código secundario del producto. Se utiliza como codigoMtx: Deberán corresponder a la estructura provista por la ASOCIACION ARGENTINA DE CODIFICACION DE PRODUCTOS COMERCIALES —CODIGO—, códigos GTIN 13, GTIN 12 y GTIN 8, correspondientes a la unidad de consumo minorista o presentación al consumidor final | String(40) | No | ||
| serialNumber | Número de serie del producto en caso de requerir | String | No | ||
| lotNumber | Número de lote o partida del producto en caso de requerir | String | No | ||
| barCode | Código de barras del producto | String | No | ||
| fiscalDocument.items.promotions | Detalle de promociones aplicadas a cada item | ARRAY | No | ||
| code | Código del descuento o Promoción | String | No | ||
| scope | Concepto de la promoción. I: Ítem | T: Transacción I: Cuando se trata de un descuento propio del ítem o producto/servicio T: Cuando se trata de un descuento a nivel transacción. Se informa de manera prorrateada | Char (1) | Si | ||
| name | Nombre / descripción del descuento | String | No | ||
| amount | Importe aplicado como descuento (Comprobantes tipo A: descuento neto sin IVA. Comprobantes tipos B: descuento con IVA incluido) | Number (10,2) | No | ||
| taxAmount | Importe de IVA asociado a la promoción | Number (10,2) | No | ||
| internalTax | Importe de impuestos internos asociado a la promoción | Number (10,2) | No | ||
| percent | Porcentaje de descuento aplicado. SI no se informa poner 0.0 | Number (4,2) | No | ||
| fiscalDocument.items.itemInfo | Colección clave / valor libre para información específica del producto o del negocio. | ARRAY | No | ||
| key | Clave | String | Sí | ||
| value | Valor | String | Sí | ||
| fiscalDocument.benefits | Detalle de beneficios aplicados | ARRAY | No | ||
| code | Código del beneficio | String | No | ||
| name | Nombre / descripción del beneficio | String | No | ||
| benefitType | Nombre / descripción del tipo de beneficio | String | No | ||
| amount | Valor numérico, que representa importe, cantidad de cupones, o puntos | Number (10,2) | No | ||
| couponCode | Código del CUPÓN | String | No | ||
| cardType | Código del TIPO DE TARJETA | String | No | ||
| cardCode | Código de la TARJETA de beneficio | String | No | ||
| cardCurrentAmount | Monto del beneficio de la TARJETA | Number (10,2) | No | ||
| fiscalDocument.paymentMethods | Métodos de pago | ARRAY | No | ||
| code | Código del medio de pago | String | Si | ||
| name | Nombre del medio de pago | String | Si | ||
| amount | Importe | Number (10,2) | Si | ||
| surcharge | Alícuota de recargo | Number (3,2) | No | ||
| fiscalDocument.paymentMethods.paymentMethodsInfo | Colección clave / valor de objetos que representan información adicional del pago | ARRAY | No | ||
| key | Clave para identificar el método de pago | String | Sí | ||
| value | Valor del método de pago | String | Sí | ||
| fiscalDocument.documentInfo | Colección clave / valor de objetos que representan información adicional del documento. | ARRAY | No | ||
| key | Clave para identificar el dato | String | Sí | ||
| value | Valor del dato adicional | String | Sí |
Ejemplos:
Acceso a JSON de ejemplo por tipos de comprobante: FF - Ejemplos JSON comprobantes
RESPONSE OK
| Elemento | Tipo | Detalle |
|---|---|---|
| url | String | Contiene la URL para poder ver el comprobante online (para casos en donde el canal de venta imprime un ticket). |
| qr | String | Contiene la url a ser incluída en forma de QR en el comprobante, requerido por la AFIP. |
| authorizationDate | Date | Fecha de vencimiento del CAE | CAEA |
| authorizationType | String | CAE | CAEA |
| authorizationCode | String | Código de Autorización Electrónico (CAE) / Código de Autorización Electrónico Anticipado (CAEA) |
| pointOfSale | String | Punto de venta AFIP (5 dígitos) |
| invoiceNumber | String | Numero de comprobante enviado a la AFIP, se asocia con el centro emisor AFIP utilizado para facturar. |
| invoiceType | String | Tipo de comprobante autorizado |
| ack | Number | Valor "0" |
| message | String | Cuando se envía una operación previamente autorizada por CAE o CAEA con el mismo número de identificador único de la transacción (internalId), el sistema da como respuesta el mismo mensaje de la transacción original e incluye en este elemento la leyenda "Operacion previamente autorizada para el internalId informado." |
Ejemplo:
{ |
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | Código de error. Siendo los valores posibles:
|
| message | String | Detalle del tipo del error. |
Ejemplo:
{ |
Servicio: Consultar documento fiscal (fiscalDocuments)
Este servicio permite consultar un documento fiscal de acuerdo a determinados filtros:
- companyCode (string)
- storeCode (string)
- terminalCode (string)
- invoiceType (number)
- internalId (string)
Para el uso del servicio es necesario informar un token que se obtiene a través del servicio "Authenticate".
Es un método REST basado en el formato JSON. Ejemplo:
| [get] http://[dirección-ip]:[puerto]/api/v1/fiscalDocuments?invoiceType=1&internalId=640 |
|---|
GET - REQUEST
HEADER
x-access-token | Token obtenido a través del servicio "Authenticate" |
internalId | Número de comprobante interno del punto de venta. |
Ejemplo:
"x-access-token": token |
BODY
| Elemento | Descripción | Tipo de dato | Requerido | Validación |
|---|---|---|---|---|
| requestCredential | ||||
| companyCode | Código de compañía, provisto para la empresa que contrata el servicio | String | Si | 992 |
| storeCode | Código de tienda | String | Si | 992 |
| terminalCode | Código de terminal / punto de venta | String | Si | 992 |
Ejemplo:
{
"requestCredential":{
"companyCode":"napse",
"storeCode":"1001",
"terminalCode":"1001"
}
}
RESPONSE
Ejemplo:
{
"authorizeInfo": [
{
"code": 10017,
"message": "Factura individual, DocTipo: 80, DocNro 30470827047 no se encuentra registrado en los padrones de AFIP o se encuentra inactivo.",
"date": "2020-10-26 23:22:40"
}
],
"attempts": 0,
"processed": true,
"_id": "5f975a4074f8103e0f082ab5",
"internalId": "7922124961",
"orderNumber": 1,
"operator": "ALE",
"conceptCode": 1,
"invoiceType": 1,
"saleCondition": "1",
"currency": "PES",
"currencyChange": 1,
"invoiceDate": "2020-10-26T00:00:00.000Z",
"paymentDueDate": "2020-10-26T00:00:00.000Z",
"periodStartDate": "2020-10-26T00:00:00.000Z",
"periodEndDate": "2020-10-26T00:00:00.000Z",
"businessDate": "2020-10-26T00:00:00.000Z",
"zNumber": 16768153,
"items": [
{
"um": "7",
"_id": "5f975a4074f8103e0f082ab6",
"action": "S",
"sku": "53094",
"code": "1",
"imageUrl": "",
"name": "Televisor Sony",
"qty": 1,
"serialNumber": "49938801",
"lotNumber": "12281",
"barCode": "779893164411834",
"tax": 21,
"taxAmount": 100.66,
"internalTax": 0,
"discount": 10.2,
"unitPrice": 587,
"totalPrice": 587,
"promotions": [
{
"_id": "5f975a4074f8103e0f082ab7",
"code": "PRS",
"scope": "I",
"name": "Dto 2x1",
"amount": 10.2,
"taxAmount": 0,
"internalTax": 0,
"percent": 0
}
],
"itemInfo": [
{
"_id": "5f975a4074f8103e0f082ab8",
"key": "Peso",
"value": "15kg"
},
{
"_id": "5f975a4074f8103e0f082ab9",
"key": "ModalidadEnvio",
"value": "Envío a Domicilio"
},
{
"_id": "5f975a4074f8103e0f082aba",
"key": "ContactoEntrega",
"value": "Preguntar por Francisco Perez"
}
]
}
],
"relatedTaxes": [
{
"_id": "5f975a4074f8103e0f082abb",
"amount": 100.66,
"baseAmount": 479.34,
"code": "5",
"name": "IVA 21%"
}
],
"relatedOtherTaxes": [],
"optionals": [],
"paymentMethods": [
{
"_id": "5f975a4074f8103e0f082abc",
"code": "VISACR",
"name": "Tarjeta VISA Credito",
"amount": 11.8,
"surcharge": 2,
"paymentMethodsInfo": [
{
"_id": "5f975a4074f8103e0f082abd",
"key": "DatosTC",
"value": "2345 01 123456 0044"
},
{
"_id": "5f975a4074f8103e0f082abe",
"key": "Tasas",
"value": "TNA: 0.00% TEA: 0.00% TEM: 0.00% CFT: 0.00%"
}
]
}
],
"documentInfo": [
{
"_id": "5f975a4074f8103e0f082abf",
"key": "footer",
"value": "Telefono gratuito CABA, area de defensa y proteccion al consumidor 0810-123-0000"
}
],
"benefits": [],
"subTotalAmount": 10,
"ticketDiscount": 8.6,
"discountAmount": 18.8,
"nonTaxedAmount": 0,
"taxedAmount": 479.34,
"amountIVA": 100.66,
"amountOtherTaxes": 0,
"exemptAmount": 0,
"totalAmount": 580,
"companyCode": "napse",
"storeCode": "1001",
"terminalCode": "1002",
"testMode": true,
"documentType": "80",
"identificationNumber": "30470827047",
"hasCustomer": true,
"relatedInvoices": [],
"authorizationCode": "70437875745658",
"authorizationType": "CAE",
"authorizationCodeDueDate": "2020-11-05T00:00:00.000Z",
"invoiceNumber": 2604,
"pointOfSale": 14,
"status": "ok",
"invoiceHour": 0,
"createdAt": "2020-10-26T23:22:40.643Z",
"updatedAt": "2020-10-26T23:23:00.095Z",
"__v": 0
}
- Sem rótulos