- Criado por Usuário desconhecido (noeliac), última alteração por Sabrina Zimmermann em jul 12, 2023
![]()
AR Server - 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: Obtener configuración CAEA de terminal (getPosCodeCaea)
Este servicio es invocado por el software cliente para verificar las configuraciones en relación a la modalidad de operación de contingencia CAEA de la terminal consultada.
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:
http://[dirección-ip]:[puerto]/api/v1/invoice/getPosCodeCaea |
|---|
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 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":"43", "terminalCode": "45" } } |
RESPONSE OK
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | Valor "0" |
afipPosCodeCaea | Number | Punto de venta o centro emisor AFIP asociado a la terminal consultada |
| operationMode | String | Modo de operación de la terminal consultada, siendo las posibles opciones:
|
| modeOfflineAfip | boolean | Informa si se encuentra configurada para operar mediante método de contingencia CAEA, en caso de que AFIP se encuentre offline. |
| modeOfflineStore | boolean | Informa si se encuentra configurada para operar mediante método de contingencia CAEA, en caso de que FF server se encuentre offline. |
Ejemplo:
{
"ack": 0,
"afipPosCodeCaea": 17,
"operationMode": "electronic",
"modeOfflineAfip": true,
"modeOfflineStore": true
}
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | String | Código de error. |
message | Sring | Detalle del error. |
Ejemplo:
{
"ack": 2061,
"message": "Tienda no existe o es inactiva. No puede seguir operando."
}
Servicio: Obtener contadores de tienda (getStoreCounters)
Este servicio es invocado por el software cliente para obtener la contabilización registrada en Fiscal Flow server sobre la cantidad de comprobantes emitidos en la tienda por CAE y CAEA para el periodo actual (mes-año). Así mismo informa el porcentaje limite a computar sobre la cantidad de comprobantes emitidos por CAE para obtener la cantidad limite de comprobantes que el software cliente puede a autorizar por CAEA.
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:
| [post] http://[dirección-ip]:[puerto]/api/v1/invoice/getStoreCounters |
|---|
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 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": "tu compañía",
"storeCode": "5202",
"terminalCode": "20"
}
}
RESPONSE OK
| Elemento | Tipo | Detalla |
|---|---|---|
| ack | Number | Valor "0" |
companyCode | String | Código de compañía |
| storeCode | String | Código de tienda |
| authCaeCounter | Number | Contabilización de los comprobantes emitidos por CAE en la tienda consultada |
| authCaeaCounter | Number | Contabilización de los comprobantes emitidos por CAEA en la tienda consultada |
| period | Number | Periodo correspondiente en función a la fecha de invocación del servicio |
| percentMargin | Number | Porcentaje representativo limite de facturación CAEA configurado en la tienda consultada |
| permitExcess | Boolean | Informa si se encuentra activo el check de permitir excederse del porcentaje limite en la tienda consultada |
Ejemplo:
{
"ack": 0,
"companyCode": "testqa",
"storeCode": "1001",
"authCaeCounter": 134,
"authCaeaCounter": 61,
"period": 202105,
"percentMargin": 5,
"miniumQuantityCalculate": 100,
"permitExcess": true
}
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | |
| message | String | Detalle del tipo del error. |
Ejemplo:
{
"ack": 2061,
"message": "Tienda no existe o es inactiva. No puede seguir operando."
}
Servicio: Obtener CAEAs vigentes (getCaea)
Este servicio es invocado por el software cliente para obtener información sobre el CAEA vigente del periodo y que debe utilizar para autorizar las operaciones que son registradas bajo su responsabilidad.
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:
| [post] http://[dirección-ip]:[puerto]/api/v1/invoice/getCaea |
|---|
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 |
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 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:
{ |
RESPONSE OK
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | Valor "0" |
caeas | ARRAY | Información sobre el CAEA vigente del periodo |
| _id | String | Código interno |
| caea | String | Código de Autorización Electrónico Anticipado |
| period | Number | Periodo del CAEA. (yyyymm) |
| Order | Number | Orden del CAEA dentro del periodo. Quincena 1, Quincena 2 |
| validSince | Date | Fecha de vigencia de CAEA desde |
| validUntil | Date | Fecha de vigencia de CAEA hasta |
| limitDateInformInvoices | Date | Fecha de tope para informar los comprobantes vinculados al CAEA |
| companyCode | String | código de compañía |
Ejemplo:
{
"ack": 0,
"caeas": [
{
"_id": "60602971cda4c8a76d88dd38",
"caea": "31133490971293",
"period": 202104,
"order": 1,
"validSince": "2021-04-01T03:00:00.000Z",
"validUntil": "2021-04-15T03:00:00.000Z",
"limitDateToInformInvoices": "2021-04-20T03:00:00.000Z",
"companyCode": "testqa"
},
{
"_id": "6073eff0265c863a36389afc",
"caea": "31153230702470",
"period": 202104,
"order": 2,
"validSince": "2021-04-16T03:00:00.000Z",
"validUntil": "2021-04-30T03:00:00.000Z",
"limitDateToInformInvoices": "2021-05-05T03:00:00.000Z",
"companyCode": "testqa"
},
{
"_id": "6087b6707a1d33fdccd38798",
"caea": "31173686554620",
"period": 202105,
"order": 1,
"validSince": "2021-05-01T03:00:00.000Z",
"validUntil": "2021-05-15T03:00:00.000Z",
"limitDateToInformInvoices": "2021-05-20T03:00:00.000Z",
"companyCode": "testqa"
},
{
"_id": "609ad2987be5e0726cabfc2a",
"caea": "31193593865056",
"period": 202105,
"order": 2,
"validSince": "2021-05-16T03:00:00.000Z",
"validUntil": "2021-05-31T03:00:00.000Z",
"limitDateToInformInvoices": "2021-06-05T03:00:00.000Z",
"companyCode": "testqa"
}
]
}
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | |
| message | String | Detalle del tipo del error. |
Ejemplo:
{ |
Servicio: Obtener numeración de comprobantes de terminal (getOperationNumbers)
Este servicio es invocado por el software cliente para obtener información sobre el ultimo numero de comprobante para un centro emisor dado que fue autorizado por CAEA (Offline) y que ha sido recepcionado correctamente por el servidor.
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:
[post] http://[dirección-ip]:[puerto]/api/v1/invoice/getOperationNumbers |
|---|
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 |
| requestCredential | |||
|---|---|---|---|
| companyCode | Código de compañía, provisto para la empresa que contrata el servicio | String | Si |
| terminalCode | Código de terminal / punto de venta | String | Si |
| storeCode | Código de tienda | String | Si |
Ejemplo:
{
"requestCredential":{
"companyCode":"testqa",
"storeCode":"1001",
"terminalCode": "2G-NC-01"
}
}
RESPONSE OK
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | Valor "0" |
operationNumbers | ARRAY | Información sobre el ultimo comprobante informado por tipo de comprobante y centro emisor. |
| _id | String | Código interno |
| companyCode | String | código de compañía |
| invoiceType | Number | tipo de comprobante del ultimo documento autorizado/informado |
| pointOfSale | Number | punto de venta o centro emisor AFIP del último comprobante autorizado/informado |
| lastDocumentNumber | Number | numero del último comprobante autorizado/informado |
Ejemplo:
{
"ack": 0,
"operationNumbers": [
{
"_id": "605dd63ecda4c8a76d88a47d",
"companyCode": "testqa",
"invoiceType": 1,
"pointOfSale": 17,
"lastDocumentNumber": 51
},
{
"_id": "605dd63ecda4c8a76d88a481",
"companyCode": "testqa",
"invoiceType": 2,
"pointOfSale": 17,
"lastDocumentNumber": 0
},
{
"_id": "605dd63ecda4c8a76d88a480",
"companyCode": "testqa",
"invoiceType": 8,
"pointOfSale": 17,
"lastDocumentNumber": 0
}
]
}
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | |
| message | String | Detalle del tipo del error. |
Ejemplo:
{ |
Servicio: Autorizar comprobante online (authorize)
Este método se utiliza para autorizar documentos electrónicos.
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:
| [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 | 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 | N/A |
| terminalCode | Código de terminal / punto de venta | String | Si | N/A |
| storeCode | Código de tienda | String | Si | N/A |
| customer | Detalle del cliente | Objeto | Sí | |
| documentType | Tipo de documento de identificación del cliente. Ver: FF - Datos maestros> Tipos de documentos. Para comprobantes no nominados a consumidores finales (solo cuando el monto en pesos resultante del comprobante es menor o igual a lo establecido por la RG 4444/2019) se debe enviar 99 ("otro"). Para comprobantes MiPyME debe ser 80 CUIT. (Ref. AFIP 10015) | Integer (2) | Si. | DocTipo |
| identificationNumber | Número de identificación del cliente. Para comprobantes no nominados a consumidores finales (solo cuando el monto en pesos resultante del comprobante es menor o igual a lo establecido por la RG 4444/2019) se debe enviar 0. Para sujetos no categorizados informar 23000000000. Para comprobantes MiPyME debe estar en el padrón de grandes empresas o haber optado por el régimen. (Ref. AFIP 10180) | Number | Si | DocNro |
| taxCategory | Situación impositiva del cliente frente al IVA. Ver: FF - Datos maestros> Situación impositiva del cliente | Integer (1) | Si | |
| IBCategory | Situación impositiva del cliente frente a Ingresos Brutos | String | No | N/A |
| IBIdentificationNumber | Número de inscripción en Ingresos Brutos | Number | No | N/A |
| sendVoucher | Si desea marcar la factura para su posterior envío por correo electrónico. Por default es FALSE. | String | No | N/A |
| 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 | N/A |
| personalEmail | Dirección de correo electrónico del cliente. Es un dato de contacto, no es al que se enviará la factura. | String | No | N/A |
| code | Código del cliente | String | No | N/A |
| 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 | N/A |
| civilStatus | Estado civil del cliente. No es necesario si es empresa. | String | No | N/A |
| fiscalAddress | Dirección fiscal de la persona / empresa | String | No | N/A |
| city | Nombre de la ciudad | String | No | N/A |
| state | Nombre de la provincia | String | No | N/A |
postalCode | Código postal | String | No | N/A |
| 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 | N/A |
| conceptCode | Conceptos a facturar. Ver: FF - Datos maestros> Conceptos a facturar | Integer (2) | Si | Concepto |
| invoiceType | Tipo de Comprobante. Ver: FF - Datos maestros> Tipos de Comprobantes Para comprobantes MiPYME, de acuerdo al impuesto asociado al cliente en la base de AFIP (Ref. AFIP: 10177)
| Integer (3) | Si | CbteTipo |
| saleCondition | Condición de venta | String | Si | N/A |
| currency | Código de moneda. Ver: FF - Datos maestros> Monedas | String | Si | MonId |
| currencyChange | Cotización de la moneda informada | Number (10,6) | Si | MonCotiz |
| invoiceDate | Fecha de emisión del comprobante. Formato: yyyy-mm-dd hh:mm:ss Para concepto igual a 1 (productos):
Para otros conceptos:
Para comprobantes del tipo MiPyMEs (FCE):
| Date | Si | CbteFch |
| paymentDueDate | Fecha de vencimiento del pago del servicio a facturar. Debe ser igual o posterior a la fecha del comprobante o la fecha de solicitud de autorización (la que sea mayor) (Ref. AFIP 10036/10164). Formato: yyyy-mm-dd Dato obligatorio para:
NO debe informarse para comprobantes MiPyMEs de crédito/débito que no sean de anulación. Este dato se ignora si se recibe concepto 1 y no es un comprobante MiPYME. | Date | Condicional | 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). Este dato se ignora si se recibe concepto 1. | 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). Este dato se ignora si se recibe concepto 1. | 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 | N/A |
| zNumber | Numero de cierre Z Si no viene el valor por defecto es fecha del día formato yyyymmdd | Number | No | N/A |
| 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 | N/A |
| 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 | N/A |
| 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 | N/A |
| nonTaxedAmount | Importe conceptos no gravados | Number (10,2) | Si | ImpTotConc |
| taxedAmount | Importe neto gravado del documento Suma de relatedTaxes.baseAmount. El error absoluto deberá ser <= 0.01 * cantidad de alícuotas de IVA ingresadas | Number (10,2) | Si | ImpNeto |
| exemptAmount | Importe en concepto de valores exentos de impuestos | Number (10,2) | Si | ImpOpEx |
| 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 |
| totalAmount | Importe total del documento. Debe ser igual a Importe neto no gravado + Importe exento + Importe neto gravado + todos los campos de IVA al XX% + Importe de tributos: nonTaxedAmount + exemptAmount + taxedAmount + amountIVA + amountOtherTaxes. Admite un margen de error absoluto de <= 0.01 Para comprobantes MiPYME tiene que ser superior o igual al configurado en el parámetro myPYMEminAmout. CONFIRMAR con Julieta Belén | Number (10,2) | Si | ImpTotal |
| orderNumber | Número de pedido | Number | No | N/A |
| operator | Código del operador o vendedor | String | No | N/A |
| fiscalDocument.relatedTaxes | Detalle de ivas, en caso de no ser exento o no gravado. | ARRAY | No | AlicIva |
| code | Código del Tipo de IVA. Ver: FF - Datos maestros> Tipos de IVA | Integer (2) | Si | Id |
| baseAmount | Base imponible para la determinación de la alícuota | Number (10,2) | Si | BaseImp |
| 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 |
| name | Descripción del impuesto. | String | No | N/A |
| fiscalDocument.relatedOtherTaxes | Detalle de otros impuestos - percepciones de IVA, percepciones de Ingresos Brutos, Impuestos Internos, retenciones nacionales, municipales, etc.- | ARRAY | No | Tributos |
| code | Código del Tipo de Impuesto. Ver: FF - Datos maestros> Códigos de Impuesto Si se informa código 99 (otro) se debe informar el nombre del tributo en name. | Integer (2) | Sí | Id |
| name | Descripción de impuesto. Requerido cuando:
| String | Condicional | Desc |
| baseAmount | Base imponible para la determinación del tributo | Number (10,2) | Sí | BaseImp |
| aliquot | Alícuota | Number (3,2) | No | Alic |
| amount | Importe del impuesto | Number (10,2) | Sí | Importe |
| fiscalDocument.optionals | Requerido:
IMPORTANTE: si se trata de operaciones que no dan lugar al cómputo del crédito fiscal - F. 8001 | ARRAY | Condicional | Opcionales |
| code | Código identificador del Opcional de AFIP. Ver: FF - Datos maestros> Opcionales | String | No | Id |
| name | Valor del Parámetro opcional a informar | String | No | Valor |
| fiscalDocument.relatedInvoices | Comprobantes asociados a comprobantes de tipo crédito/ débito. Obligatorio:
| ARRAY | No | CbtesAsoc |
| invoiceType | Tipo de Comprobante asociado. Ver: FF - Datos maestros> Tipos de Comprobantes Según relaciones posibles con el comprobante emitido (Ref. AFIP 10040/10157). Debe ser de la misma clase que el comprobante a autorizar (Ref. AFIP 10186/10187/10193) Si el tipo de comprobante que está autorizando es MiPyMEs Débito/Crédito sin código de Anulación, es requerido asociar una factura. (Ref. AFIP 10156) | Integer (3) | Sí | 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). Debe ser menor o igual a la fecha del comprobante que se está autorizando. (Ref. AFIP 10212/10159) | 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 | No | N/A |
| 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 | N/A |
| sku | Código del producto | String | Si | N/A |
name | Nombre del producto | String | Si | N/A |
qty | Cantidad del producto | Number | Si | N/A |
| um | Unidad de medida del producto. Valor por defecto: UN | String(20) | No | N/A |
tax | Porcentaje de IVA asociado al ítem. Se deberá enviar en 0 (cero) si es exento o no gravado. | Number (4,2) | Si | N/A |
taxAmount | Importe de IVA asociado al ítem | Number (10,2) | Si | N/A |
| internalTax | Importe de impuestos internos aplicados al ítem (unitario) | Number (10,2) | Si | N/A |
| 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í | N/A |
unitPrice | Precio unitario del producto. (Comprobantes tipo A: precio neto sin IVA. Comprobantes tipos B: precio IVA incluido) | Number (10,2) | Si | N/A |
| 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 | N/A |
| 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 | N/A |
| serialNumber | Número de serie del producto en caso de requerir | String | No | N/A |
| lotNumber | Número de lote o partida del producto en caso de requerir | String | No | N/A |
| barCode | Código de barras del producto | String | No | N/A |
| fiscalDocument.Items.promotions | Detalle de promociones aplicadas a cada item | ARRAY | No | N/A |
| code | Código del descuento o Promoción | String | No | N/A |
| 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 | N/A |
| name | Nombre / descripción del descuento | String | No | N/A |
| amount | Importe aplicado como descuento (Comprobantes tipo A: descuento neto sin IVA. Comprobantes tipos B: descuento con IVA incluido) | Number (10,2) | No | N/A |
| taxAmount | Importe de IVA asociado a la promoción | Number (10,2) | No | N/A |
| internalTax | Importe de impuestos internos asociado a la promoción | Number (10,2) | No | N/A |
| percent | Porcentaje de descuento aplicado. SI no se informa poner 0.0 | Number (4,2) | No | N/A |
| fiscalDocument.Items.itemInfo | Colección clave / valor libre para información específica del producto o del negocio. | ARRAY | No | N/A |
| key | Clave | String | Sí | N/A |
| value | Valor | String | Sí | N/A |
| fiscalDocument.benefits | Detalle de beneficios aplicados | ARRAY | No | N/A |
| code | Código del beneficio | String | No | N/A |
| name | Nombre / descripción del beneficio | String | No | N/A |
| benefitType | Nombre / descripción del tipo de beneficio | String | No | N/A |
| amount | Valor numérico, que representa importe, cantidad de cupones, o puntos | Number (10,2) | No | N/A |
| couponCode | Código del CUPÓN | String | No | N/A |
| cardType | Código del TIPO DE TARJETA | String | No | N/A |
| cardCode | Código de la TARJETA de beneficio | String | No | N/A |
| cardCurrentAmount | Monto del beneficio de la TARJETA | Number (10,2) | No | N/A |
| fiscalDocument.paymentMethods | Métodos de pago | ARRAY | No | N/A |
| code | Código del medio de pago | String | Si | N/A |
| name | Nombre del medio de pago | String | Si | N/A |
| amount | Importe | Number (10,2) | Si | N/A |
| surcharge | Alícuota de recargo | Number (3,2) | No | N/A |
| fiscalDocument.paymentMethods.paymentMethodsInfo | Colección clave / valor de objetos que representan información adicional del pago | ARRAY | No | N/A |
| key | Clave para identificar el método de pago | String | Sí | N/A |
| value | Valor del método de pago | String | Sí | N/A |
| fiscalDocument.documentInfo | Colección clave / valor de objetos que representan información adicional del documento. | ARRAY | No | N/A |
| key | Clave para identificar el dato | String | Sí | N/A |
| value | Valor del dato adicional | String | Sí | N/A |
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 |
| cbu | String | CBU o Alias utilizado para las facturas de crédito electrónicas. |
| 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: Autorizar comprobante offline (offline)
Este servicio se utiliza para enviar los fiscalDocuments que el software cliente registro, autorizo y guardo por el metodo CAEA.
El servidor recibe y registra operaciones realizadas por CAEA.
Si al recibir un pedido de registro de un documento autorizado por CAEA, se rechaza por algún motivo (excepto por errores en las credenciales que no permitan identificar al emisor), se registra un pedido de alerta y se envia un mail periódico con el detalle de todos los documentos fiscales rechazados por el server, de la compañía. Los documentos rechazados pueden ser consultados desde la sección Monitoreo> Auditoría de documentos fiscales.
Este servicio se utiliza para obtener la información de la compañía, canal de venta y tienda necesarios para ser utilizados por los sistemas externos.
Es un método REST basado en el formato JSON. Ejemplo:
| [post] http://[dirección-ip]:[puerto]/api/v1/invoice/offline |
|---|
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
Al request de la autorización online se agregan:
- Sección para enviar el listado de errores causantes de la autorización por CAEA (elemento fiscalDocumentLog)
- Se agregan datos al elemento fiscalDocument, que en el caso de autorizar por CAEA son gestionados por el agente:
- pointOfSale + invoiceNumber: número de comprobante generado
- authorizationCode + authorizationCodeDueDate: identificación de la autorización de AFIP.
- pointOfSale + invoiceNumber: número de comprobante generado
| Elemento | Descripción | Tipo | Requerido | Elemento AFIP |
fiscalDocumentLog | Listado de los errores asociados al comprobante que se quiere autorizar, informados al solicitar la autorización por CAE. | ARRAY | No | |
| code | Corresponde al código obtenido en el atributo "ack" | Number | No | |
| message | Corresponde al mensaje obtenido en el atributo "message" | String | No | |
| date | Fecha del error con formato "YYYY-MM-DDTHH:MI:SS.SSSZ" (con el timezone que corresponde). Por default o si no se recibe un formato de fecha correcto, registra la fecha en que se recibe la petición. | String | No | |
| fiscalDocument | Información completa del comprobante | Objeto | Sí | |
| pointOfSale | Punto de venta AFIP | Number (5) | Si | PtoVta |
| invoiceNumber | Numero de comprobante enviado a la AFIP, se asocia con el centro emisor AFIP utilizado para facturar. | Number (8) | Si | CbteDesde CbteHasta |
| authorizationCode | Número de CAEA que se utilizó para registrar el authorize | String | Si | CAEA |
| authorizationCodeDueDate | Fecha de vencimiento del CAEA | Date | Si | |
Ejemplo:
{
"requestCredential": {
"companyCode": "testqa",
"storeCode": "1001",
"terminalCode": "99999"
},
"fiscalDocumentLog": [
{
"code": 1234,
"message": "Detalle del error",
"date": "2021-06-01T03:00:00.000Z"
}
],
"fiscalDocument": {
"internalId": "NC-1000000125",
"conceptCode": 1,
"invoiceType": 1,
"saleCondition": "CONDICION DE VENTA",
"currency": "PES",
"currencyChange": 1,
"invoiceDate": "2021-05-20T11:00:07.178-0300",
"pointOfSale": 18,
"invoiceNumber": 123456,
"authorizationCode": "111122223333",
"authorizationCodeDueDate": "2021-05-20T11:00:07.178-0300",
"zNumber": 21031801,
"subTotalAmount": 2681.01,
"nonTaxedAmount": 0,
"taxedAmount": 2637.49,
"exemptAmount": 0,
"amountIVA": 553.87,
"amountOtherTaxes": 43.52,
"discountAmount": 0,
"ticketDiscount": 0,
"totalAmount": 3234.88,
"orderNumber": "123456",
"operator": "NOELIA",
"relatedTaxes": [
{
"code": 5,
"amount": 553.87,
"name": "IVA 21%",
"baseAmount": 2637.49
}
],
"relatedOtherTaxes": [
{
"code": 7,
"aliquot": 0.4,
"amount": 10.55,
"name": "05-Per.IIBB Bs.As.",
"baseAmount": 2637.5
},
{
"code": 7,
"aliquot": 0.75,
"amount": 19.78,
"name": "05-Per.IIBB Corrientes",
"baseAmount": 2637.33
},
{
"code": 7,
"aliquot": 0.5,
"amount": 13.19,
"name": "05-Per.IIBB Capital",
"baseAmount": 2638
}
],
"paymentMethods": [
{
"surcharge": "0.0",
"code": "8",
"amount": 3234.88,
"paymentMethodsInfo": [
{
"key": "add2",
"value": " SU VUELTO: 65,12 "
},
{
"key": "add1",
"value": " SU PAGO: 3300,00 "
}
],
"name": "Efectivo"
}
],
"items": [
{
"action": "S",
"discount": 0,
"unitPrice": 121.46,
"qty": 21,
"internalTax": 0,
"um": "Unidad",
"taxAmount": 535.65,
"taxBase": 2550.72,
"code": "013320503111",
"totalPrice": 2550.72,
"tax": 21,
"name": "desodorante masculino AXE",
"sku": "779129302583"
},
{
"action": "S",
"discount": 0,
"unitPrice": 8.26,
"qty": 2,
"internalTax": 0,
"um": "Unidad",
"taxAmount": 3.48,
"taxBase": 16.52,
"code": "014730102013",
"totalPrice": 16.52,
"tax": 21,
"name": "pa�uelos descartables ELITE",
"sku": "779025000035"
},
{
"action": "S",
"discount": 0,
"unitPrice": 8.27,
"qty": 1,
"internalTax": 0,
"um": "Unidad",
"taxAmount": 1.73,
"taxBase": 8.27,
"code": "014730102013",
"totalPrice": 8.27,
"tax": 21,
"name": "pa�uelos descartables ELITE",
"sku": "779025000035"
},
{
"action": "S",
"discount": 0,
"unitPrice": 59.51,
"qty": 1,
"internalTax": 0,
"um": "Unidad",
"taxAmount": 12.49,
"taxBase": 59.51,
"code": "011460302001",
"totalPrice": 59.51,
"tax": 21,
"name": "Fideos DON FELIPE tallarines al huevo",
"sku": "7790532"
},
{
"action": "S",
"discount": 0,
"unitPrice": 2.47,
"qty": 1,
"internalTax": 0,
"um": "Unidad",
"taxAmount": 0.52,
"taxBase": 2.47,
"code": "053240101024",
"totalPrice": 2.47,
"tax": 21,
"name": "gorro bebe UCF2 rayado",
"sku": "1234"
}
],
"documentInfo": [
{
"key": "pm_mensaje1",
"value": "Mando algo en mensaje 1"
},
{
"key": "pm_mensaje2",
"value": ""
}
]
},
"customer": {
"postalCode": 1607,
"identificationNumber": 27301831984,
"taxCategory": 2,
"state": "Buenos Aires",
"businessName": "NOE.JS 4 S.A.",
"documentType": 80,
"fiscalAddress": "ARGERICH 1016",
"city": "SAN ISIDRO",
"billingEmail": "noeliac@napse.global"
}
}
RESPONSE OK
| Elemento | Tipo | Detalle |
|---|---|---|
| url | String | Se envía vacío. |
| qr | String | Se envía vacío. |
| 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", si su valor es diferente de "0" se debe evaluar el numero de error informado para tomar la o las acciones necesarias. |
| 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:
{
"url": "",
"qr": "",
"authorizationDate": "2021-05-20T14:00:07.178Z",
"afipAuthorizationType": "CAEA",
"authorizationCode": "123456789",
"pointOfSale": "00018",
"invoiceNumber": "00123456",
"invoiceType": 1,
"ack": 0,
"message": "2050 : Operacion previamente autorizada para el internalId informado."
}
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | Código de error. Siendo los valores posibles:
|
Ejemplo:
{
"ack": 2900,
"message": "fiscalDocument request is incomplete: Path `invoiceNumber` is required"
}
BLOQUEOS DEL SERVICIO:
El presente servicio implementa internamente un protección por cache a fin de prevenirse que un software cliente envié repetidamente operaciones identicas o con sus claves iguales.
Ud (Software cliente) al enviar una petición debe esperar la respuesta del servicio expuesto por Fiscal Flow. Si omite esta espera y envia nuevamente la operación seguramente recibira una de las siguientes respuestas:
ack: 2907, message: "Operation in progress" (la operación fue enviada previamente y la misma todavía esta en curso de ser tratada).
El servicio validara las operación conformando las siguientes claves:
companyCode.sotoreCode.terminalCode.invoiceType-pointOfSale-invoiceNumber
VALIDACIÓN DE EXISTENCIA PREVIA DE LA OPERACION:
En el caso del presente servicio, existe un parámetro de configuración en la consola que permite ajustar la clave que se utilizara para realizar la validación de existencia de una operación que reciba en el servicio offline. Puede cambiar el valor de este modo de validación en "Administración"-"Configuración"-"Server" opción: código: validateExistingOfflineStrict, Nombre: Validación de ingreso de operaciones autorizadas por CAEA Modo estricto: (true/false)
Si esta opción esta en false: La clave única de persistencia y validación de existencia previa quedara conformada por: companyCode-storeCode-terminalCode-internalId-invoiceType
Si esta opción esta en true: La clave única de persistencia y validación de existencia previa quedara conformada por: companyCode-storeCode-terminalCode-internalId-invoiceType-pointOfSale-invoiceNumber
Cuando ud, envie una operación previamente registrada el servicio dara una respuesta de este estilo:
{
"url": "",
"qr": "",
"authorizationDate": "2021-05-20T14:00:07.178Z",
"afipAuthorizationType": "CAEA",
"authorizationCode": "123456789",
"pointOfSale": "00018",
"invoiceNumber": "00123456",
"invoiceType": 1,
"ack": 0,
"message": "2050 : Operacion previamente autorizada para el internalId informado."
}
Servicio: Consultar documento fiscal (fiscalDocuments)
Este servicio permite consultar un documento fiscal de acuerdo a su identificación por número interno, tienda y terminal.
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 - REQUEST
params
| Elemento | Tipo | Detalle |
|---|---|---|
| invoiceType | Number | Tipo de comprobante. Ver: FF - Datos maestros> Tipos de Comprobantes |
| internalId | String | Número interno, único por tienda y terminal. |
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 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": "testqa",
"storeCode": "1001",
"terminalCode": "99999"
}
}
RESPONSE OK
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | Valor "0" |
| message | Objeto | Detalle del documento fiscal. Consultar estructura completa en servicio authorize. Si no se encuentra el documento fiscal, se devuelve un objeto vacío. |
Ejemplo:
{
"ack": 0,
"message": {
"authorizeInfo": [],
"attempts": 0,
"zNumber": 21031801,
"authResponseTime": 0,
"authAfipResponseTime": 0,
"processed": true,
"offlineReason": "INT",
"internalId": "NC-1000000400",
"conceptCode": 1,
"invoiceType": 1,
"saleCondition": "CONDICION DE VENTA",
"currency": "PES",
"currencyChange": 1,
"invoiceDate": "2021-05-20T14:00:07.178Z",
"pointOfSale": "18",
"invoiceNumber": 123456,
"authorizationCode": "111122223333",
"authorizationCodeDueDate": "2021-05-20T14:00:07.178Z",
"subTotalAmount": 2681.01,
"nonTaxedAmount": 0,
"taxedAmount": 2637.49,
"exemptAmount": 0,
"amountIVA": 553.87,
"amountOtherTaxes": 43.52,
"discountAmount": 0,
"ticketDiscount": 0,
"totalAmount": 3234.88,
"orderNumber": 123456,
"operator": "NOELIA",
"relatedTaxes": [
{
"code": 5,
"amount": 553.87,
"name": "IVA 21%",
"baseAmount": 2637.49
}
],
"relatedOtherTaxes": [
{
"code": 7,
"aliquot": 0.4,
"amount": 10.55,
"name": "05-Per.IIBB Bs.As.",
"baseAmount": 2637.5
},
{
"code": 7,
"aliquot": 0.75,
"amount": 19.78,
"name": "05-Per.IIBB Corrientes",
"baseAmount": 2637.33
},
{
"code": 7,
"aliquot": 0.5,
"amount": 13.19,
"name": "05-Per.IIBB Capital",
"baseAmount": 2638
}
],
"paymentMethods": [
{
"surcharge": 0,
"code": "8",
"amount": 3234.88,
"paymentMethodsInfo": [
{
"key": "add2",
"value": " SU VUELTO: 65,12 "
},
{
"key": "add1",
"value": " SU PAGO: 3300,00 "
}
],
"name": "Efectivo"
}
],
"items": [
{
"um": "Unidad",
"action": "S",
"discount": 0,
"unitPrice": 121.46,
"qty": 21,
"internalTax": 0,
"taxAmount": 535.65,
"code": "013320503111",
"totalPrice": 2550.72,
"tax": 21,
"name": "desodorante masculino AXE",
"sku": "779129302583",
"promotions": [],
"itemInfo": []
},
{
"um": "Unidad",
"action": "S",
"discount": 0,
"unitPrice": 8.26,
"qty": 2,
"internalTax": 0,
"taxAmount": 3.48,
"code": "014730102013",
"totalPrice": 16.52,
"tax": 21,
"name": "pa�uelos descartables ELITE",
"sku": "779025000035",
"promotions": [],
"itemInfo": []
},
{
"um": "Unidad",
"action": "S",
"discount": 0,
"unitPrice": 8.27,
"qty": 1,
"internalTax": 0,
"taxAmount": 1.73,
"code": "014730102013",
"totalPrice": 8.27,
"tax": 21,
"name": "pa�uelos descartables ELITE",
"sku": "779025000035",
"promotions": [],
"itemInfo": []
},
{
"um": "Unidad",
"action": "S",
"discount": 0,
"unitPrice": 59.51,
"qty": 1,
"internalTax": 0,
"taxAmount": 12.49,
"code": "011460302001",
"totalPrice": 59.51,
"tax": 21,
"name": "Fideos DON FELIPE tallarines al huevo",
"sku": "7790532",
"promotions": [],
"itemInfo": []
},
{
"um": "Unidad",
"action": "S",
"discount": 0,
"unitPrice": 2.47,
"qty": 1,
"internalTax": 0,
"taxAmount": 0.52,
"code": "053240101024",
"totalPrice": 2.47,
"tax": 21,
"name": "gorro bebe UCF2 rayado",
"sku": "1234",
"promotions": [],
"itemInfo": []
}
],
"documentInfo": [
{
"key": "pm_mensaje1",
"value": "Mando algo en mensaje 1"
},
{
"key": "pm_mensaje2",
"value": ""
}
],
"companyCode": "testqa",
"storeCode": "1001",
"terminalCode": "99999",
"testMode": true,
"documentType": "80",
"identificationNumber": "27301831984",
"hasCustomer": true,
"relatedInvoices": [],
"optionals": [],
"benefits": [],
"authorizationType": "CAEA",
"status": "pending",
"invoiceHour": 11,
"createdAt": "2021-05-20T15:41:31.738Z",
"updatedAt": "2021-05-20T15:42:00.423Z",
"__v": 0
}
}
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | String | |
message | Sring | Detalle del error. |
Ejemplo:
{
"ack": 2005,
"message": "Access token does not exists"
}
Servicio: Almacenar documento no fiscal (nonFiscalDocument)
FF ofrece este servicio para almacenar los documentos no fiscales emitidos en el punto de venta y permite su consulta desde la consola de administración.
FF identifica a un documento no fiscal por la combinación de códigos de compañía, tienda, terminal y número de transacción (transactionNumber). En caso de recibir un pedido de almacenar un documento ya existente, informa código de error 2903.
Si al recibir un pedido de registro de un documento no fiscal, se rechaza por algún motivo (excepto por errores en las credenciales que no permitan identificar al emisor), se registra un pedido de alerta y se envia un mail periódico con el detalle de todos los documentos no fiscales rechazados, de la compañía. Los documentos rechazados pueden ser consultados desde la sección Monitoreo> Auditoría de documentos fiscales.
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:
[POST] http://[dirección-ip]:[puerto]/api/v1/nonfiscalDocument |
|---|
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 | Tipo de dato | Requerido | Detalle |
|---|---|---|---|
| requestCredential | Objeto | Sí | |
| companyCode | String | Si | Código de compañía, provisto para la empresa que contrata el servicio. |
| storeCode | String | Si | Código de tienda |
| terminalCode | String | Si | Código de terminal / punto de venta |
nonFiscalDocument | Objeto | Sí | Detalle del documento no fiscal |
documentType | String | Sí | Código del tipo de documento. |
documentTypeName | String | Sí | Nombre del tipo de documento. |
issueDate | String | Sí | Fecha emisión del documento. |
internalId | String | Sí | Código único dentro de la compañía, tienda y terminal. |
transactionNumber | Number | Sí | Número de transacción. |
operatorName | String | Sí | Código de operador. |
lines[] | Array<Objeto> | Sí | Líneas dentro del documento no fiscal. |
| line | String(48) | Sí | Datos de la línea a ser impresa. Las líneas en blanco deben ser informadas con al menos un espacio. No se admiten strings vacíos (""). |
Ejemplo:
{ |
RESPONSE OK
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | String | Valor "0" |
message | Sring | Valor "ok" |
Ejemplo:
{
"ack": 0,
"message": "ok"
}
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | String | |
message | Sring | Detalle del error. |
Ejemplo:
{
"ack": 2061,
"message": "Tienda no existe o es inactiva. No puede seguir operando."
}
BLOQUEOS DEL SERVICIO:
El presente servicio implementa internamente un protección por cache a fin de prevenirse que un software cliente envié repetidamente operaciones identicas o con sus claves iguales.
Ud (Software cliente) al enviar una petición debe esperar la respuesta del servicio expuesto por Fiscal Flow. Si omite esta espera y envía nuevamente la operación seguramente recibira una de las siguientes respuestas:
ack: 2907, message: "Operation in progress" (la operación fue enviada previamente y la misma todavía esta en curso de ser tratada).
El servicio validara las operación conformando las siguientes claves:
companyCode.sotoreCode.terminalCode.internalId
FORZAR BLOQUEDO EN HORARIOS PROGRAMADOS:
Ud. dispone de un parámetro de configuración en la consola que le permitira forzar el bloqueo de este servicio por rango horario (mismo día). Si ud activa esta configuración, durante el rango horario indicado el servicio siempre dará la siguiente respuesta: ack: 2907, message: "Operation in progress", la operación sera ignorada, rechazada y no se estara disponible en fiscal flow.
Para activar o desactivar esta configuración debe ingresar a la consola a la opción: "Administración"-"Configuración"-"Server" opción: código: nonFiscalDocumentsTemporalBlock, Nombre: Bloquear recepcion de documentos NO fiscales en el rango de horario fijado (parametro: HORA INICIO-HORA FIN, formato hora: HH:mm-HH:mm). Desactivado si el valor es off (o formato incorrecto).
Servicio: Consultar comprobante (pdf)
Servicio disponible para la obtención del comprobante de un documento fiscal. Brinda la url desde la cual es posible la descarga.
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://{{ip}}/api/v1/invoice/pdf?companyCode={{companyCode}}&invoiceType={{invoiceType}}&pointOfSale={{pointOfSale}}&invoiceNumber={{invoiceNumber}} |
|---|
GET - REQUEST
QUERY paramETERS
| Elemento | Tipo | Requerido | Detalle |
|---|---|---|---|
| companyCode | String | Sí | Código de la compañía. |
| invoiceType | Number | Sí | Código de tipo de comprobante. Ver: FF - Datos maestros> Tipos de Comprobantes |
| pointOfSale | Number | Sí | Número de punto de venta. Sin 0 a izquierda. |
| invoiceNumber | Number | Sí | Número de comprobante. Sin 0 a izquierda. |
Ejemplo:
http://10.4.201.52/api/v1/invoice/pdf?companyCode=testqa&invoiceType=1&pointOfSale=17&invoiceNumber=123456
header
| Elemento | Valor |
|---|---|
x-access-token | Token obtenido a través del servicio "Authenticate" |
Ejemplo:
x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJOYXBzZSIsImRhdGEiOnsiX2lkIjoiNjA1ZGQyNTZjZGE0YzhhNzZkODhhNDFiIn0sImlhdCI6MTYyMTQzMTU5OCwiZXhwIjoxNjIxNTE3OTk4fQ.4gxltyla4zKODtM9w0a4-y2_EMtrkIULB9446RSVpKE |
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). |
| ack | Number | Código de error. Valor = 0 |
Ejemplo:
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | Código del error:
|
| message | String | Detalle del error. |
Ejemplo:
{
"ack": 2005,
"message": "Access token does not exists for the company"
}
Servicio: Obtener Padrón de receptores de FCE (miPYMERegistry)
Este servicio es invocado por el software cliente para obtener el padrón completo de todos los CUITs de los clientes adheridos como receptores al sistema de facturación de crédito electrónica.
En caso de que la empresa emita FCE (se configura en la compañía), y se produzca una venta mayor a un cierto límite, se deberá consultar si el receptor está dentro de este padron, en cuyo caso deberá emitirse una FCE y no una factura común.
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/invoice/miPYMERegistry |
|---|
GET - 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 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:
{ |
RESPONSE OK
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | Valor "0" |
miPYMERegistry | ARRAY | Información sobre las empresas receptoras de FCE |
| cuit | String | Cuit de la empresa |
| startDate | String | Fecha de adhesión, con formato "YYYY-MM-DD" |
Ejemplo:
{
"ack": 0,
"miPYMERegistry": [
{
"cuit": "27301831981",
"startDate": "2020-06-26"
},
{
"cuit": "2026769790",
"startDate": "2021-03-24"
}
]
}
RESPONSE ERROR
| Elemento | Tipo | Detalle |
|---|---|---|
| ack | Number | |
| message | String | Detalle del tipo del error. |
Ejemplo:
{ |
- Sem rótulos