Sie sind auf Seite 1von 15

1Documentación WSFEv1

EL WSFEv1 es un nuevo web service de factura electrónica que AFIP, como los otros web services la
interface WSAFIPFE replica todos sus métodos y propiedades incluyendo una planilla de cálculo de test
para poder experimentar.

Las características generales son:

o El web service permite obtener CAE en forma similar al WSFE y CAE anticipado
(CAEA). Además incluye muchos más datos a informar, entre ellos: alícuotas, comprobantes asociados,
pero no incluye el detalle de una factura (items).
o No usa el argumento "identificador", el reproceso se administra de otra forma.
o Incluye métodos para recuperar todos los datos de un comprobante ya autorizado y también para
las listas de tipo de datos (monedas, tipo de comprobantes, etc).
o Se incluye una planilla de test interactiva WSFEv1Test para experimentar.

o Si ha implementado el WSFE ver en esta página diferencias entre ambos.


2WSFEv1
Si es la primera vez que intenta conectarse a un web service de factura electrónica de AFIP recomendamos que
antes implemente el WSFE y revise toda su documentación asociada, ya que es más simple y le permitirá luego
avanzar con este servicio agregando las particularidades que presenta. Aunque la documentación de este página
es independiente de los otros web service y contiene todo lo necesario para implementar el servicio.

Si ya implementó alguno de los web service de factura electrónica de AFIP (WSFE, WSFEX o WSBFE) antes de
comenzar con este servicio debe tener en cuenta que su funcionamiento general es similar a los anteriores pero no
usa el argumento "identificador" ni implementa el "reproceso" y presenta otras particularidades, por lo que se
recomienda leer toda esta documentación desde cero.

Este web service expone 2 grupos de métodos:

o Para obtener CAE en forma similar a los otros web service de factura electrónica.
o Para solicitar CAE anticipado y luego informar en que comprobantes fue utilizado o bien que el CAE
anticipado no tuvo movimientos (estos métodos aunque implementados en la interface no están
operativos en el servidor de AFIP).

La interface WSAFIPFE replica todos los métodos, propiedades y respuestas del web service original de
AFIP. Todos los métodos y propiedades comienzan con las letras f1. No deben usarse propiedades o
métodos que comienzen con otros letras, ya que corresponden a otros servicios AFIP. La unica excepción a
esta regla son el método "iniciar" y las propiedades "ultimonumeroerror" y "ultimomensajeerror", comunes a todos
los servicios web. Además el control no dispone de ningún método para "resetear" o "reiniciar" los datos. En cada
conexión a AFIP deben cargarse todas las propiedades (si es necesario a cero o "vacio") con los datos
correspondientes.

Fundamentos
Como usar
Mecanismo "indiceitem" y listas variables de datos.
Tipos de datos variables.
Tratamiento de errores.
Fallos de conexión.
Documentación
Métodos.
Numeración.
Ejemplos.
Resultados método FECAESolicitar
Validaciones y reglas de AFIP.
Avanzado
XML enviado y recibido
Planilla de calculo interactiva
Errores, motivos y advertencias
Diferencias WSFE y WSFEv1

3WSFEv1 Como Usar


Aquí una guía resumida sobre como usar el control ActiveX para conectarse al web service WSFEv1. Recordando
que todos los servicios de AFIP tiene 2 modos: uno de prueba u homologación (los resultados obtenidos no tiene
validez legal) y otro real o de producción. Ambos servidores son idénticos y solo es necesario cambiar una
propiedad para conectarse a uno u otro sin alterar el resto del código.

Alternativamente puede usar la planilla de test WSFEv1Test que implemente este web service para experimentar
el comportamiento y las respuestas del servidor de AFIP.

Al comenzar con el WSFEv1 tener presente que este web service expone un método para obtener el CAE de un
comprobante (como se detalla en lo pasos a continuación) pero también expone otros 2 métodos: para obtener
CAE anticipado y para informar en que documentos se usó ese CAE (en forma quincenal). Para obtener CAE (o
informar en que documento se usó un CAE anticipado) los pasos generales son:
Obtener un certificado digital para emitir facturas eléctronicas. Como se explica en la miniguía de certificados. Si
ya tiene un certificado de prueba habilitado para el WSFE puede usarlo tambien para el WSFEv1 sin ningún
trámite adicional.
Asegurarse que la hora del sistema operativo esté sincronizada con algún servidor de hora oficial. Los servidores
de la AFIP usan el huso horario -3. Para las provincias con diferentes hora asegurarse que la pc esté en el huso
horario local correcto.
Bajar la última versión estándar e instalar. (7.7 o superior).
En un formulario insertar el control ActiveX y llamar al método "iniciar" del control indicando los 4 parámetros:

o "modo": si se trabaja en modo entrenamiento o en modo fiscal.


o "C.U.I.T.": c.u.i.t del emisor.
o "archivo": ruta donde se encuentra el certificado digital obtenido en el primer paso.

o "archivo licencia": cadena vacía, no es necesario en el modo prueba. El archivo de licencia solo es
necesario en el modo real o producción.
LLamar al método "f1ObtenerTicketAcceso" o "f1LoginCMS". Si este método se ejecuta y devuelve verdadero
estamos autorizados a obtener CAE o cualquier otro método del Web Service. La autorización generalmente expira
a las 12 horas (una propiedad contiene la hora a la que vence el permiso). En ese caso se debe volver a ejecutar
el método para continuar operando.
Cargar la propiedad "f1CabeceraCantReg" con la cantidad de facturas a registrar (pueden ser varias en un solo
lote). Recomendable establecerla a 1 y autorizar una factura por vez.
Carga la propiedad "indice" a 0 (para cargar los datos de la primera factura).
Cargar las propiedades para indicar los datos de la factura, entre otros:

o "f1CabeceraPtoVta"
o "f1CabeceraCbteTipo"
o "f1DetalleCbteDesde" y "f1DetalleCbteHasta"
o "f1DetaleImpTotal"
o "f1DetalleImpNeto"
o "f1DetalleMonId".
o "f1DetalleCAEA" (solo si no es para obtener CAE sino para informar que el documento que se está
cargando se uso con el CAE anticipado).

o Y todas las demás tal como se detalle en el método f1CAESolicitar.


Cargar las propiedades correspondientes a los datos variables de la factura:

o Alícutas de I.V.A.
o Tributos.
o Comprobantes asociados.
o Datos opcionales.

Estos 4 grupos de datos son variables (puede haber 1 o más Alícuotas de I.V.A. en la misma factura, 0 o más
Tributos: nacionales, provinciales, etc. Y así con los otros 2 grupos: Datos Opcionales y Comprobantes Asociados).
LLamar al metodo "f1CAESolicitar" (FECAESolicitar). para obtener el CAE o
bien f1CAERegInformativo (FECAERegInformativo) para informar en que documento(s) se usó el CAE anticipado
Si el método se ejecuta correctamente leer en las propiedades correspondiente los datos devuelve por AFIP
(cargando la propiedad "f1Indice" a 0 para apuntar a la primera factura procesada). Las propiedades se detallan
más adelante, las principales son:
o f1RespuestaResultado.
o f1RespuestaReproceso.
o f1RespuestaErrorMsg1.
o f1RespuestaCantidadReg (y solo si esta propiedad es mayor a 0, indicando que AFIP procesó por lo menos
1 factura):
o f1RespuestaDetalleResultado
o f1RespuestaDetalleCAE (si se llamó al método f1CAESolicitar).

o y otras propiedades adicionales que contiene los errores o eventos devueltos por AFIP si lo hubiere.

A estos pasos generales se debe agregar los siguiente:

o Existe un método para obtener CAE anticipado (se detalle en la documentación). Luego con los mismos
pasos detallados arriba se informa todos los documentos que se emitieron con ese CAE anticipado.
o Algunos datos a cargar (Moneda, tipo de comprobante, código de impuesto, etc) se obtienen de las listas
de AFIP. Estas listas no están en la documentación sino que el propio web service (y la interface WSAFIPFE)
contiene métodos que devuelve estas listas.
o De la misma manera al autorizar un CAE (o informar el uso de CAE anticipado) AFIP puede devolver una
lista variable (0, 1 o más) de errores (excluyentes por los que no se obtuvo CAE) u observaciones (no
excluyentes, se obtuvo CAE pero con alguna advertencia de AFIP). El control contiene propiedades para
leer estas listas de errores y obervaciones.
o En cada llamado AFIP también puede devolver una lista de "eventos" que también deben ser leidos en las
propiedades correspondientes (aunque estos "eventos" son de caracter informativo, no tienen relación
directa con la obtención de CAE).

o Es posible en una sola llamada a AFIP obtener varios CAE para un lote de documentos (o bien informar en
una sola llamada que un lote de documentos usó el CAE anticipada obtenido con anterioridad) aunque esto
puede ser mucho más rápido complica la lógica de implementación.
4WSFEv1 mecanismo "indiceitem"
El mecanismo "indiceitem" es una propiedad especial que permite manejar desde el control ActiveX una lista de
valores variables (como los items correspondientes a las alícuotas de una factura electrónica del WSFEv1 y otros
datos que no son fijos).

Por ejemplo antes de llamar al método "f1CAESolicitar" deben cargarse una serie de datos (fecha, total, etc) en
las propiedades correspondientes y también deben cargarse los datos de las alícuotas de i.v.a. que se aplican al
comprobante en las propiedades:
Propiedad Significado
f1DetalleIvaId El código de la alícuota o tasa (obtenido de una lista de AFIP: 1 para 21% 2 para
10.50%, etc).
f1DetalleIvaBaseImp La base imponible del impuesto.
f1DetalleIvaImporte El importe del impuesto.

Pero en una factura pueden presentarse más de una alícuota a aplicar (productos gravados con el 21% y otros
con el 10%). El control podría agregar propiedades extras como:
f1DetalleIvaId2, f1DetalleBaseImp2, f1DetalleIvaImporte2
f1DetalleIvaId3, f1DetalleBaseImp3, f1DetalleIvaImporte3.

Un esquema asi sería muy engorroso y limitante. Además hay muchos otros datos variables (tributos,
comprobantes asociados, etc) en una factura y todos deberian tener sus propiedades duplicadas, triplicadas o
más.

Una forma más sencilla y genérica para cargar (o leer) estos datos es usar una propiedad "f1IndiceItem" para
indicar a que linea o fila de la lista nos estamos refiriendo. Si en una factura debemos cargar 2 alicuotas de I.V.A.
(21% y 10.5%) con sus importes correspondientes procederiamos asi:

o En la propiedad "f1DetalleIvaItemCantidad" cargamos el valor 2 (para indicar que la lista


de alícuotas contiene 2 filas).
o Cargamos la propiedad "f1indiceitem" a 0 (para indicar que nos estamos refiriendo a la primera fila).
o Cargamos en la propiedades "f1DetalleIvaId", "f1DetalleIvaBaseImp" y "f1DetalleIvaImporte" los datos de
la primera fila.
o Cargamos la propiedad "f1indiceitem" a 1 (para indicar que nos estamos refiriendo a la segunda fila).
o Cargamos en la propiedades "f1DetalleIvaId", "f1DetalleIvaBaseImp" y "f1DetalleIvaImporte" los datos de
la segunda fila.

Este procedimiento se aplica a cualquier lista que debamos carga (o leer). Primero se indica en una propiedad
"f1XXXXItemCantidad" la cantidad de filas de la lista y luego usando la propiedad "f1IndiceItem" para referenciar a
cada fila (empezando siempre desde 0 hasta f1XXXXItemCantidad-1).

Si necesitamos leer una lista variable devuelta por AFIP (por ejemplo la lista de errores devueltos al intentar
autorizar un CAE) se procede de igual forma:

o En la propiedad "f1DetalleObeseracionItemCantidad" contendrá la cantidad de filas (errores) en la lista que


puede ser 0 o más.
o Cargamos la propiedad "f1Indiceitem" a 0 y leemos en las propiedades correspondientes los datos de la
primera fila (F1RespuestaDetalleObservacionMsg, F1RespuestaDetalleObservacionCode).
o Continuamos cargando la propiedad "f1IndiceItem" a 1, 2, etc hasta "f1DetalleObersvacionItemCantidad-
1".

En la documentación de métodos y propiedades se detalle específicamente que métodos devuelven listas


variables y en que propiedades se leen. Solo la propiedad "f1IndiceItem" es común a todas las listas.

Bajo ningún concepto debe confundirse la propiedad "f1IndiceItem", que referencia la fila de una lista
variable, con la propiedad "f1Indice" que referencia a un comprobante en caso que se esté autorizando un
lote de comprobantes para obtener varios CAE en una sola llamada.
5WSFEv1 Listas variables de tipos de datos
Al cargar los datos para autorizar un CAE algunos datos (moneda, tipo de comprobante, tipo de documentos, etc)
corresponden a un código que no se obtiene en la documentación de AFIP, sino que el propio web service (y el
control) contiene un grupo de métodos para recuperar estas listas de datos.

Por ejemplo el método "f1ParamGetTipoMoneda" devuelve una lista (que puede leerse en la propiedades
"f1MonedaId, f1MondaDesc, etc) usando el mecanismo "f1IndiceItem" y la propiedad
"f1TiposMonedaItemCantidad" que contiene la cantidad de monedas en la lista de AFIP.

Hay otros métodos, se detallan en la documentación, que devuelven las otras listas. Estos métodos deben
ejecutarse periódicamente para incorporar estas listas actualizadas a nuestra aplicación. Aunque algunas de estas
listas presentan muy pocos cambios.
6Errores en WSFEv1
Después de llamar a cualquiera de los métodos del WSFEv1, aparte de las propiedades específicas en donde se
leen los resultados, existen un grupo de propiedades comunes a todos que contienen la lista de errores devueltos
por AFIP (si los hubiere) y la lista de eventos (si los hubiere). Además los métodos "FECAESolicitar" y
"FECAERegInformar" contienen propiedades específicas para validaciones propias de cada comprobante que se
autoriza en AFIP.

En cada llamado al servidor del WSFEv1 este puede devolver 0, 1 o más errores que se leen en las propiedades
(código y descripción):
f1ErrorCode1 f1ErrorMsg1
f1ErrorCode2 f1ErrorMsg2

Estas propiedades estarán vacias si no hubo errores. Es importante destacar que el WSFEv1 devuelve una lista
de errores variables (que puede contener 0, 1 o más elementos). Las propiedades "f1ErrorMsg1" y
"f1ErrorMsg2" junto con "f1ErrorCode1" y "f1ErrorCode2" solo son provistas por comodidad. La forma correcta es
obtener la lista de errores devueltos es:

o Consultar el valor de la propiedad "f1ErrorItemCantidad". (0 si no hubo errores, 1 o más si la lista contiene


elementos).
o En caso que f1ErrorItemCantidad sea mayor que 0. Cargar "f1IndiceItem" a 0.
o Leer en las propiedad "f1ErrorMsg" y "f1ErrorCode" el primer error devuelto.
o Continuar cargando "f1IndiceItem" a 1, 2 hasta "f1ErrorItemCantidad-1" y leer cada fila de la lista de
errores en las propiedad "f1ErrorMsg" y "f1ErrorCode".

Es decir que las propiedades "f1ErrorMsg1" y "f1ErrorMsg2" apuntan a la primera y a la segunda fila de la lista de
errores (contienen "vacio" si no hubo errores) y son provistas por simplicidad. En caso que "f1ErrorItemCantidad"
muestre valor "1" (o superior) son equivalentes las propiedades:

cargar "f1IndiceItem" a 0.
mostrar el valor de "f1ErrorMsg1" mostrar el valor de "f1ErrorMsg"
Y en caso que "f1ErrorItemCantidad" muestre el valor "2" o superior son equivalentes las propiedades:

cargar "f1IndiceItem" a 0.
mostrar el valor de "f1ErrorMsg2" mostra el valor de "f1ErrorMsg".

Bajo ningún concepto deben confundirse la propiedades "f1ErrorMsg1", que referencia a un valor fijo: el
primero de la lista de errores si lo hubiere, con la propiedad "f1ErrorMsg" que referencia un valor de una lista
variable apuntada por "f1IndiceItem" y cuyo límite (cantidad de filas de la lista) está marcado por
"f1ErrorItemCantidad".

Lo mismo se aplica a las propiedades "f1ErrorCode", "f1ErrorCode1" y "f1ErrorCode2".


7WSFEv1 Fallos conexión
Al ejecutar alguno de los métodos autorizadores para CAE o CAE anticipado debe preverse (más allá de la
posible respuesta de aceptación o rechazo por parte de AFIP) que no se reciba la respuesta por fallas de conexión
o demoras en la red.

En estos casos debe verificarse si el último comprobante enviado fue o no autorizado (ya que la falla pudo
ocurrir después que el servidor de AFIP envie la respuesta pero antes que se la reciba).

Después de ejecutar el método FECAESolicitar (o FECAEARegInformativo) para un punto de venta, tipo de


comprobante y número, en caso de no recibir respuesta puede usarse el método FECompConsulta para ese punto
de venta, tipo de comprobante y número. Esté método recupera todos los datos archivados por AFIP (incluido CAE
o CAEA). Si el método FECompConsulta devuelve falso indicará que el error de conexión se originó antes de que
AFIP procesara la respuesta. En este caso se debe volver a ejecutar el método FECAESolicitar con los mismos
datos.

Alternativamente puede usarse el método FECompUltimoAutorizado que devuelve para un punto de venta y tipo
de comprobante el último numero procesado en AFIP. Pero solo devuelve el número y no el CAE asociado que solo
puede ser recuperado por FECompConsulta.
8Eventos en WSFEv1
El WSFEv1, y el OCX, después de llamar a cualquier método e independientemente del resultado del método
puede devolver 0, 1 o más "eventos". Son mensaje de caracter informativo enviados por el servidor de AFIP.
Estos mensajes no guardan relación con los resultados del métodos (correcto o incorrecto) sino que deben mostrar
a modo de aviso.

Despúes de cada método la propiedad "f1EventItemCantidad" contendrá 0 o superior indicando si AFIP devolvió
algun evento. Para recuperar los valores de esta lista variable, los datos se leen en las propiedades:
"f1EventMsg" y "f1EventCode" usando la propiedad "f1IndiceItem" para apuntar a cada fila de la lista, tal como se
explica en "listas variables de datos".
9WSFEv1 Métodos
La interface WSAFIFE replica todos los métodos del web service WSFEv1, en general con el mismo nombre pero
anteponiendo las letras "f1".

Método OCX Original AFIP. Descripción.


iniciar no aplicable Inicia el control, es el primer método que debe
ejecutase. Al igual que los demás Web Services, se
debe indicar el modo de trabajo (test o fiscal), el
C.U.I.T. emisor y la ruta donde esta el archivo
certificado digital.
f1ObtenerTicketAcceso LoginCMS Debe ejecutarse antes de operar con el servidor AFIP.
devuelve un permiso de acceso que es válido por
algunas horas. Una propiedad indica cuando vence el
permiso. En ese caso debemos volver a ejecutar el
método.
f1CAESolicitar FECAESolicitar Retorna el CAE de la factura/lote de ingreso y la fecha
de vencimiento del mismo. En caso de rechazo de la
factura/lote, devuelve un array con los errores
detectados y/u observaciones por cada comprobante.
f1CompUltimoAutorizado FECompUltimoAutorizado Mediante este método, Afip informa
el número del último comprobante para el tipo de
comprobante, C.U.I.T. emisor y punto de venta
informado.
f1CAEASolicitar / FECAEASolicitar Retorna el CAE Anticipado y la vigencia del mismo
f1CAEASolicitarS (fecha desde vigencia y fecha hasta vigencia). Esta
solicitud podrá llevarse a cabo los 5 días corridos
anteriores a cada quincena (habrá dos quincenas, la
primera del 1 al 15 de cada mes y la segunda
del día 16 hasta el ultimo día del mes)
f1CAEAConsultar / FECAEAConsultar Retorna un CAE Anticipado otorgado para un cierto
f1CAEAConsultarS periodo/orden (f1CAEAConsultarS acepta parametros
tipo "string" para evitar errores de conversión).
f1CAEASinMovimientoInform FECAEASinMovimientoInfor Este proceso permite informar a Afip, los CAE
ar mar Anticipados que no fueron utilizados en el punto de
venta informado.
f1CompTotXRequest FECompToxRequest Retorna la cantidad máxima de registros que
se podrán incluir en en los metodos "f1CAEASolicitar y
f1CAEARegInformativo" para el cuit emisor.
f1CAEARegInformativo FECAEARegInformativo Permite informar la factura o lote asociado a un CAE
Anticipado.
f1CAEASinMovimientoConsu FECAEASinMovimientoConsu Permite consultar mediante un CAEA cuales fueron
ltar ltar los puntos de venta notificados como sin movimiento
mediante el método "f1CAEASinMovimientoInformar".
F1CompConsultar FECompConsultar Permite consultar los datos de un comprobante ya
emitido, mediante el tipo y número de comprobante y
el punto de venta.
f1ParamGetTiposCbte FEParamGetTiposCbte Permite obtener los tipos de comprobantes habilitados
en este WS.
f1ParamGetTiposConcepto FEParamGetTiposConcepto Permite obtener los tipos de conceptos posibles en
este WS.
f1ParamGetTiposDoc FEParamGetTiposDoc Permite obtener los tipos de documentos aceptados en
este WS.
f1ParamGetTiposIva FEParamGetTiposIVA Permite obtener los tipos de IVA en uso en este
WS. Retorna el código y descripción.
f1ParamGetTiposMoneda FEParamGetTiposMonedas Permite obtener los tipos de monedas disponibles en
este WS. Retorna el id y descripción.
f1ParamGetTiposOpcional FEParamGetTiposOpcional Permite consultar los códigos y descripciones de los
tipos de datos opcionales habilitados. Además otorga
la fecha de vigencia de los mismos.
f1ParamGetTiposTributo FEParamGetTiposTributo Permite obtener los códigos, descripción, fecha de
vigencia de los tributos disponibles para usar con el
WS.
f1ParamGetPtosVenta FEParamGetPtosVenta Permite consultar los puntos de venta para las
autorizaciones CAE, CAEA gestionados por la cuit
emisora.
f1ParamGetCotizacion FEParamGetCotizacion Retorna la última cotización de la base de
datos aduanera del código de la moneda
ingresada.
10WSFEv1 Ticket de acceso
Antes de conectarse al WSFEv1 para ejecutar cualquiera de sus métodos es necesario obtener una autorización
de acceso a los servidores de AFIP. Esto se hace por medio del método "f1ObtenerTicketAcceso" o "LoginCMS". Si
este método devuelve verdadero obtendremos el "token" o ticket para operar.

El ticket generalmente es válido por 12 horas. La propiedad "f1TicketFechaVencimiento" contiene hasta que hora
el ticket actual es válido. Mientras el ticket esté en vigencia podemos ejecutar cualquier método del web service
como autorizar CAE o solicitar CAE anticipado.

Cuando el ticket se vence debemos volver a llamar al método "f1ObtenerTicketAcceso".

También es posible, antes de ejecutar algún método del WSFEv1, chequear que la propiedad "f1TicketEsValido"
devuelve verdadero indicando que aun tenemos acceso.

El método "f1ObtenerTicketAcceso" no tiene parámetros solo devuelve verdadero o falso. En caso de ser falso
consultar la propiedad "UltimoMensajeError" para obtener la descripción del error generalmente asociado a:

o "Computador no autorizado" por errores en el archivo de certificado.


o "Tiempo de expiración" o similar por no estar sincronizada la hora de la pc.

o "Licencia no válida" (solo en el modo real) por faltar el archivo de licencia o no corresponder al CUIT
emisor.
11WSFEv1 f1CAESolicitar
El método f1CAESolicitar (FECAESolicitar) permite obtener el CAE de un comprobante (también puede usarse para
obtener múltiples CAE de un lote de comprobantes pero en esta entrada, por simplicidad, solo se considera el caso
de obtener un CAE a la vez). También puede usarse (con esta misma documentación) para informar un grupo
acumulado de aglunos tipos de comprobantes ( por ej: obtener un único CAE para los comprobante ticket tipo "C"
desde el 1 hasta el 1000, en forma grupal) pero esto último no es lo mismo que el modo "en lote".

Todos los métodos y propiedades aqui descriptos son aplicables también al método FECAEARegInformativo. Con
la salvedad que en este método no se obtiene CAE sino que por el contrario se utiliza para informar el uso de un
CAE anticipado en un comprobante.

El funcionamiento general de este método (que no usa parámetros) es:

o Iniciar la interface y obtener ticket acceso (o validar que el ticket actual aun está en vigencia).
o Cargar en las propiedades correspondientes los datos de cabecera (ver tabla 1).
o Cargar en las propiedades correspondiente los datos de detalle de la factura (ver tabla 2), incluido
número, total, etc.
o Cargar en las propiedades correspondientes los datos variables como alícuotas, tributos, etc (tablas 3A,
3B, 3C y 3D), utilizando el mecanismo "f1IndiceItem".
o Ejecutar el método.
o Leer en las propiedades correspondientes el resultado devuelto por AFIP. teniendo en cuenta que este
método devuelve:

1. Una lista de errores globales.


2. Una lista de eventos globales.
3. Una resultado global indicando si el comprobante se aceptó o rechazó y además si la respuesta incluye un
resultado específico (de aceptación o rechazo). En algunos casos puede haber una rechazo "de plano" por
lo que los puntos 4 y 5 no esta disponibles. (ver Tabla 4.)
4. Un resultado espécifico indicando el resultado del comprobante (aceptación con el CAE correspondiente u
rechazo con los motivos espécifcos). (ver Tabla 5)
5. En caso de rechazo los motivos (u observaciones, en caso que se obtuvo CAE pero igual AFIP informa de
algún problema) se encuentra en una lista. (ver Tabla 6).

Una descripción de como interpretar los resultados de este método se encuentran en "resultado del método
FECAESolicitar"

Tabla 1: (datos de cabecera a cargar antes de solicitar CAE).


Propiedad Tipo Descripción.
f1CabeceraCbteTipo Entero Tipo de comprobante según la lista del método F1ParamGetTiposCbtes.

F1CabeceraCantReg Entero Cantidad de comprobantes para los cuales se solicita el CAE. Es


recomendable que el valor para esta propiedad sea "1".
F1CabeceraPtoVta Entero Punto de Venta de los comprobantes.

Tabla 2: (datos específicos del comprobante).


Propiedad Tipo Descripción
F1DetalleConcepto Entero Concepto del comprobante. 01-Productos, 02-Servicios, 03-Productos y
Servicios
F1DetalleDocTipo Entero Código del documento del comprador según la lista
del método f1ParamGetTiposDoc.
F1DetalleDocNro Entero Número de identificación del comprador.
F1DetalleCbteDesdeS Entero Número de comprobante desde.
F1DetalleCbteHastaS Entero Número de comprobante hasta. En caso de ser un solo comprobante,
este dato coincide con el anterior.
F1DetalleCbteFch String Fecha del comprobante, cuyo formato es "aaaammdd". Para un concepto
de factura igual a 1, la fecha de emisión puede ser hasta
5 días posteriores a la de generación. Si el concepto es 2 o 3, puede ser
hasta 10 días anteriores o posteriores a la fecha de generación. Al ser un
dato opcional, si no se asigna fecha, por defecto se asignará la fecha del
proceso.
F1DetalleImpTotal Double Importe total del comprobante, es igual a la suma de Importe Neto No
Grabado (F1DetallImpTotalConc) + Importe Neto Grabado
(F1DetalleImpNeto) + Importe Exento (F1DetalleImpOpEx) + Importes de
Tributo (F1DetalleImpTrib) + Importes de IVA (F1DetalleImpIVA).
12f1CAESolicitar resultados
Al ejecutar el método f1CAESolicitar (y también f1CAEARegInformativo) los resultados de AFIP son devueltos en
un conjunto de propiedades y listas que debe ser analizadas correctamente y en forma ordenada:

f1RespuestaResultado Contiene el resultado global de la operación: "A" aceptación y "R"


rechazo.
f1RespuestaReproceso A "S" si el resultado es repetido.
f1ErrorCode1 y f1ErrorMsg1 En caso de errores (pero solo por un motivo genérico o error
general, no por un rechazo debido a que los datos del comprobante
enviado no superaron las validación de AFIP). Este par de propiedades
contienen el código y la descripción del error. Puede existir más de una
error (una lista variable) estas propiedades solo apunta a la primera
fila de la lista de errores. la propiedad "f1ErrorItemCantidad" contiene
la cantidad total de filas en la lista de errores. (ver nota al final).
UltimoNumeroError / UltimoMensajeError En general es equivalente a las anteriores. Solo que f1ErrorCode1 /
f1ErrorMsg1 corresponde exclusivamente a códigos devueltos por AFIP.
UltimoMensajeError puede contener un error local del OCX (por ejemplo
si no hay conexión).
f1RespuestaCantidadReg Contiene 0 si AFIP no procesó el comprobante (es decir rechazó los
datos de plano,y los motivos solo pueden leerse en las propiedades
anteriores). Si vale 1 AFIP procesó el comprobante y devuelve un
resultado especifico (a leer en las propiedades de más abajo) tanto sea
asignando CAE o devolviendo un error por no superar todas las
validaciones.
detalles del resultado Solo disponibles si f1RespuestaCantidadReg mayor que 0.
f1Indice debe valer 0 para apuntar a estas propiedades.
f1RespuestaDetalleResultado Contiene "A" o "R" indicando si el comprobante fue aceptado o
rechazado (igual a f1RespuestaResultado si se está autorizando un
comprobante por vez).
f1RespuestaDetalleCAE Si fue aceptado esta propiedad contiene el CAE (no aplica para el
método f1CAEARegInformativo).
f1RespuestaDetalleCAEFchVto Fecha vencimiento CAE (no aplica para el método
f1CAEARegInformativo).
f1RespuestaDetalleObervacionCode1 y En caso que "f1RespuestaDetalleResultado" contenga "R" estas
f1RespuestaDetalleOversvacionMsg1 propiedades recuperar el codigo/descripción el motivo exacto por el
que AFIP rechazó el comprobante. Además aunque se obtenga CAE
igualmente debe leerse este par de propiedades ya que AFIP puede
devolver una "advertencia" aunque asigne CAE válido.
f1RespuestaDetalleObervacionItemCanti La lista de observaciones (error por rechazo o advertencia aunque se
dad obtuvo CAE) puede contener más de un elemento. El par de
propiedades "f1RespuestaDetalleObervacionMsg1/Code1" solo contiene
el valor de la primera fila. (ver nota al final)

Es decir que después de ejecutar f1CAESolicitar si las propiedades:

o f1RespuestaResultado = "A"
o f1RespuestaReproceso = "N"
o f1RespuestaCantidadReg = 1
o f1RespuestaDetalleCAE distinto de "vacio".

Entonces obtuvimos un CAE válido y original desde AFIP (para el f1CAEARegInformativo solo se consideran las
primera 3 propiedades citadas). En caso que no se cumpla alguna de esos valores debemos analizar el valor de las
otras propiedades (en el orden indicado) para econtrar la causa. Ya que esta puede deberse a:

o Errores genericos o generales (de conexión, servidor ocupado) cuya descripción se recupera
en: f1ErrorCode1 / f1ErrorMsg (o en UltimoMensajeError).
o Errores espécificos por no superar las validaciones de AFIP cuya descripción se recupera
en: f1RespuestaDetalleObervacionCode1 / f1RespuestaDetalleOversvacionMsg1

Ver validaciones para los código de error y su significado.

Además tener en cuenta que aunque se obtuvo CAE válido las propiedades f1RespuestaDetalleObervacionCode1 /
f1RespuestaDetalleOversvacionMsg1 pueden contener una "advertencia u observación" de AFIP.

Y por ultimo. Recordar que las propiedades del tipo f1ErrorMsg1 y f1RespuestaDetalleOversvacionMsg1 fueron
agregadas por simplicidad y solo contienen el primer elemento de la lista. Los errores globales pueden ser
más de 1 y de la misma manera los errores u observaciones específicas de un comprobante pueden ser variables.
Para leer la lista de todos los errores generales debe usar el mecanismo "f1indiceitem" tal como se explica
en errores. Y del mismo modo para leer la lista de observaciones especificas de un comprobante debe recorrerse
la lista de obervaciones.

13WSFEv1 FECAEASolicitar
El método f1CAEASolicitar permite obtener un CAE anticipado, junto con la fecha de vigencia
del código de autorización y la fecha límite para informar los comprobantes vinculados al CAEA. Luego se debe
informar los comprobantes asociados a un CAEA mediante el método FECAEARegInformativo.

Se debe solicitar un único CAE anticipado por C.U.I.T. emisor. Un mismo CAE anticipado luego puede asignarse a
varios puntos de ventas, y en cada punto de venta a 1 o más comprobantes.

F1CAEASolicitar acepta 2 parámetros de entrada:


Periodo Un número entero (no string) para indicar el año/mes al que corresponde el CAE anticipado. Es decir se
forma un número cuyos primero 4 dígitos son el año y los restantes el mes (por ej: 201001).
Orden 1 o 2 para indicar si el CAE anticipado corresponde a la primera (1 al 15 de cada mes) o la segunda (16
al último día del mes) quincena del periodo.

(el método f1CAEASolicitarS es equivalente pero acepta parámetros tipo "string" para evitar errores de conversión
en algunos lenguajes).

Este método retorna (además de una lista de errores generales si los hubiere) la respuesta de AFIP en las
propiedades:
Propiedad Tipo Descripción
f1RespuestaCAEA String Código de autorización anticipado.
f1RespuestaCAEAPeriodo Entero Período para el cual es informado el CAEA, cuyo formato es
aaaamm.
f1RespuestaCAEAOrden Entero Orden dentro del período. Hace referencia a:
1-Primera quincena
2-Segunda quincena
f1RespuestaCAEAFchVigH String Fecha hasta de la vigencia del CAEA.
asta
f1RespuestaCAEAFchVigD String Fecha tope para informar a Afip los comprobantes vinculados a un
esde CAEA.
f1RespuestaCAEAFchProc String Fecha de proceso, cuyo formato es aaaammddhhmmss
eso
f1ErrorMsg1 String La descripción del error (si hubo). Puede existir más de un
error. Ver lista general de errores.
f1ErrorCode1 Entero Esta propiedad contiene el código del primer error.
f1EventMsg String Descripción de un evento. Puede existir más de un evento. Ver
lista general de eventos.
f1EventCode Entero Código del evento
Es posible consultar el CAE anticipado asignado por AFIP para un periódo/quincena dado, mediante
el método FECAEAConsultar.
En caso de no asignar el CAE anticipado a ningún comprobante, mediante
el método FECAEASinMovimientoInformar es posible informar a AFIP aquellos códigos de autorización que no
sufrieron movimientos para un determinado punto de venta.
Y mediante el método FECAEASinMovimientoConsultar podremos consultar mediante CAEA los puntos de ventas
informados como sin movimientos.Es decir, éste método permite consultar lo informado por
el método FECAEASinMovimientoInformar.
14WSFEv1 FECompConsultar
Este método permite recuperar íntegramente todos los datos archivados por AFIP para un número de
comprobante dado.

Acepta 3 parámetros:

o Punto de Venta.
o Tipo de Comprobante.
o Número de Comprobante.

Y devuelve verdadero (si el comprobante existe en lo servidores de AFIP) junto con todos los datos asociados al
comprobante. Los datos se leen en:

o Las propiedades de respuesta (f1ResultadoDetalleCAE y demás) propias del método FECAESolicitar y


FECAERegInformar
o La propiedad f1ResultadoTipoEmision para indicar si fue un comprobante autorizado con CAE o CAE
anticipado.
o Y además todos los datos (totales, netos, alicuotas, obervaciones, etc) en las mismas propiedades donde
habitualmente se cargan para los métos FECAESolicitar yFECAERegInformar).

Por ejemplo la propiedad FEDetalleImpTotal contendrá el importe total usado (y archivdo por AFIP) al autorizar el
comprobante.

En caso de devolver falso el motivo del error puede leerse en la lista general de errores.
15WSFEv1 FECAEARegInformativo
El método f1CAEARegInformativo permite informar (para un CAE anticipado previamente obtenido
con FECAEASolicitar) cada uno de los comprobantes emitidos y asociados a ese CAE anticipado.

Antes de ejecutar este método deben cargarse las propiedades con los datos del comprobante, exactamente de
la misma forma que se cargan los datos en el método FECAESolicitar. Por lo que remitimos a la documentación de
ese método para detallar todas las propiedades a usar. La única diferencia es que a todos los datos del
comprobante que se deben cargar se agrega la propiedad: "FEDetalleCAEA" donde se indica el CAE anticipado
usado en el comprobante.

De la misma forma. Los resultados de este método se leen (e interpretan) en las mismas propiedades del método
FECAESoliciar (obviamente ignorando las propiedades f1RespuestaDetalleCAE y f1RespuestaDetalleCaeFchVto, ya
que esté método no devuelve CAE sino que sirve para informar en que comprobante(s) se usó un CAE anticipado).

Todo lo aplicable al método FECAESolicitar es válido también para este método incluyendo:

o Tratamiento de errores y obervaciones.


o Numeración (solo tener en cuenta que los comprobantes con CAE y CAEA no puede usar el
mismo punto de venta).
o Fallos de conexión.

Incluso es posible recuperar todos los datos de un comprobante informado con CAE anticipado con el
método FECompConsulta. En este método la propiedad f1RespuestaDetalleTipoEmisión indicará si el comprobante
fue informado con CAE o CAEA y en este último caso el CAEA informado se recupera en la propiedad
FERespuestaDetalleCAEA.
16WSFEv1 FECAEASinMovimientoInformar
En caso que un CAE anticipado (obtenido con FECAEASolicitar) no se use en ningún comprobante, para un punto
de venta. (es decir no se ejecutó el método FECAEARegInformativo) entonces debe usarse esté metodo para
informar que el CAE anticipado no tuvo movimientos.

Paramétros:

Punto Venta entero


CAE anticipado string

El método devuelve verdadero o falso con las respuesta en las propiedades:

f1RespuestaResultado string resultado


f1RespuestaCAEA string CAE anticipado informado
f1RespuestaCAEAPtoVta entero punto venta informado
f1RespuestaCAEAFchPro string
ceso
f1ErrorCode1/f1ErrorMsg Descripción del error (si lo hay) tal como se detalla en lista de errores
1 generales.

17WSFEv1 FECompUltimoAutorizado
Este método devuelve, para un punto de venta y tipo de comprobante, el último número de comprobante
autorizado en AFIP. No usa propiedades ni de entrada ni salida.

Parámetros:
Punto Venta Entero
Tipo de Código según método
Comprobante FEParamGetTiposCbte

Devuelve un resultado tipo entero con el numero archivado en AFIP y deja la lista de errores generales disponible.
18WSFEv1 f1CAEASinMovimientoConsultar
Este método devuelve una lista variable con los puntos de venta que fueron informados como sin movimientos
(con el método f1CAEASinMovimientoInformar). Acepta 2 parámetros:

CAE anticipado El CAE anticipado (obtenido con FECAEASolicitar) del que quiere
consultar los puntos de ventas ya informados como sin
movmiento
Punto de Venta. Ver nota más abajo.

Aparentemente este método debería tener un solo argumento (el CAE anticipado) y no pedir el punto de venta.
Ya que justamente devuelve una lista de puntos de ventas sin movimientos. Como el método no ésta operativo no
hay más información hasta el momento sobre el funcionamiento exacto.
19WSFEv1 Ejemplos
Estos ejemplos usan la versión 7.7 (o superior) del instalador, son provistos para quienes desean tener
una idea general de las propiedades y métodos del WSFEv1.

Para usar la interface y conectar al WSFEv1 es necesario contar con un certificado digital instalado en la pc (Ver
en Como Usar):
Estos ejemplos son para conectarse al WSFEv1 y: obtener CAE con el método FECAESoliciar, solicitar CAE
anticipado y luego informar su uso.

Este primer ejemplo emite una factura tipo A para el punto de venta 4 (en modo entrenamiento) con 2 alícuotas, 1
tributo municipal, sin comprobantes asociados ni datos opcionales.
Si decide implementar el ejemplo debe usar las fechas del día actual para no recibir un error.
Ejemplo WSFEv1 en Visual Basic 6 o superior para obtener CAE.
Ejemplo WSFEv1 en Visual FoxPro 6 o superior para obtener CAE.

Este segundo ejemplo solicita CAE anticipado (valen las consideraciones del parrafo anterior) para usarlo en un
comprobante en el último ejemplo.

Ejemplo WSFEv1 en Visual Basic 6 o superior para solicitar CAE anticipado.

En este ejemplo final se informa de un comprobante emitido con el CAE anticipado obtenido anteriormente.
Notar que el último ejemplo es casi igual al primero, solo que no se obtiene CAE sino que informa del CAE
anticipado utilizado y se indica otro punta de venta.

Ejemplo WSFEv1 en Visual Basic 6 o superior para informar CAE anticipado.


20Ejemplo WSFEv1 en Visual Basic para CAE
Este ejemplo usa la versión 7.7 (o superior) del instalador.

Es totalmente operativo (cuando se publique el instalador) pero es necesario leer toda la documentación del
WSFEv1 para una implementación real.

Crear un proyecto en Visual Basic.


Agregar al proyecto una referencia al componente WSAFIPFE
Crear un formulario y agregar un control tipo "button".
En el evento click de un control tipo botón insertar el siguiente
código:

Dim fe As New WSAFIPFE.Factura


If fe.iniciar(0, "CUIT el emisor sin separadores", "ruta y nombre del certificado *.pfx", "") Then
If fe.f1ObtenerTicketAcceso() Then
fe.F1CabeceraCantReg = 1
fe.F1CabeceraPtoVta = 4
fe.F1CabeceraCbteTipo = 1
fe.f1Indice = 0
fe.F1DetalleConcepto = 1
fe.F1DetalleDocTipo = 80
fe.F1DetalleDocNro = "20111111112"
fe.F1DetalleCbteDesde = 1
fe.F1DetalleCbteHasta = 1
fe.F1DetalleCbteFch = "20101018"
fe.F1DetalleImpTotal = 184.05
fe.F1DetalleImpTotalConc = 0
fe.F1DetalleImpNeto = 150
fe.F1DetalleImpOpEx = 0
fe.F1DetalleImpTrib = 7.8
fe.F1DetalleImpIva = 26.25
fe.F1DetalleFchServDesde = "20101018"
fe.F1DetalleFchServHasta = "20101018"
fe.F1DetalleFchVtoPago = "20101018"
fe.F1DetalleMonId = "PES"
fe.F1DetalleMonCotiz = 1

fe.F1DetalleTributoItemCantidad = 1
fe.f1IndiceItem = 0
fe.F1DetalleTributoId = 3
fe.F1DetalleTributoDesc = "Impuesto Municipal Matanza"
fe.F1DetalleTributoBaseImp = 150
fe.F1DetalleTributoAlic = 5.2
fe.F1DetalleTributoImporte = 7.8

fe.F1DetalleIvaItemCantidad = 2
fe.f1IndiceItem = 0
fe.F1DetalleIvaId = 5
fe.F1DetalleIvaBaseImp = 100
fe.F1DetalleIvaImporte = 21

fe.f1IndiceItem = 1
fe.F1DetalleIvaId = 4
fe.F1DetalleIvaBaseImp = 50
fe.F1DetalleIvaImporte = 5.25

fe.F1DetalleCbtesAsocItemCantidad = 0
fe.F1DetalleOpcionalItemCantidad = 0

fe.ArchivoXMLRecibido = "c:\recibido.xml"
fe.ArchivoXMLEnviado = "c:\enviado.xml"

lResultado = fe.F1CAESolicitar()

If lResultado Then
MsgBox ("resultado método: verdadero")
Else
MsgBox ("resultado método: falso")
End If
MsgBox ("resultado global AFIP: " + fe.F1RespuestaResultado)
MsgBox ("es reproceso? " + fe.F1RespuestaReProceso)
MsgBox ("registros procesados por AFIP: " + Str(fe.F1RespuestaCantidadReg))
MsgBox ("error genérico global:" + fe.f1ErrorMsg1)
If fe.F1RespuestaCantidadReg > 0 Then
fe.f1Indice = 0
MsgBox ("resultado detallado comprobante: " + fe.F1RespuestaDetalleResultado)
MsgBox ("cae comprobante: " + fe.F1RespuestaDetalleCae)
MsgBox ("número comprobante:" + fe.F1RespuestaDetalleCbteDesdeS)
MsgBox ("error detallado comprobante: " + fe.F1RespuestaDetalleObservacionMsg1)
End If
Else
MsgBox ("fallo acceso " + fe.UltimoMensajeError)
End If
Else
MsgBox ("fallo iniciar " + fe.UltimoMensajeError)
End If
21WSFEv1 Obervaciones al solicitar CAE/CAEA
Después de llamar a cualquiera de los métodos para autorizar CAE o CAE anticipado (FECAESolicitar y
FECAERegInformativo), aparte de las propiedades específicas en donde se leen los resultados, existe un grupo de
propiedades que contienen la lista de errores y observaciones devueltos por AFIP (si los hubiere). Nos referimos al
error especifico devuelto por AFIP al intentar autorizar un CAE o CAE anticipado. No a los errores globales
devueltos en la lista de errores.

Estos errores u obervaciones se leen en (código y descripción):


f1RespuestaDetalleObservacionCode1
f1RespustaDetalleObservacionMsg1

Estas propiedades estarán vacias si no hubo errores al autorizar CAE o CAE anticipado. Es importante destacar
que el WSFEv1 devuelve una lista de observaciones variables (que puede contener 0, 1 o más elementos). Las
propiedades "f1RespuestaDetalleObervacionMsg1" y "f1RespustaDetalleObervacionCode1" solo son provistas por
comodidad. La forma correcta de obtener la lista de obervaciones devueltos es:

o Consultar el valor de la propiedad "f1RespuestaDetalleObservacionItemCantidad". (0 si no hubo errores, 1


o más si la lista contiene elementos).
o En caso que f1RespuestaDetalleObervacionItemCantidad sea mayor que 0. Cargar "f1IndiceItem" a 0.
o Leer en las propiedad "f1RespuestaDetalleObservacionMsg" y "f1RespustaDetalleObervacionCode" el
primer error devuelto.
o Continuar cargando "f1IndiceItem" a 1, 2 hasta f1RespuestaDetalleObervacionItemCantidad-1" y leer cada
fila de la lista de errores en las propiedad "f1RespuestaDetalleObservacionMsg" y
"f1RespustaDetalleObservacionCode".

Es decir que la propiedad "f1RespuestaDetalleObervacionMsg1" apunta a la primera fila de la lista de errores


(contienen "vacio" si no hubo errores) y es provista por simplicidad. En caso que
"f1RespuestaDetalleObervacionItemCantidad" muestre valor "1" (o superior) son equivalentes las propiedades:

cargar "f1IndiceItem" a 0.
mostrar el valor de mostrar el valor de
"f1RespuestaDetalleObservacionMsg1" "f1RespuestaDetalleObservacionMsg"

Bajo ningún concepto deben confundirse las propiedades "f1RespuestaDetalleObservacionMsg1", que


referencia a un valor fijo: el primero de la lista de errores si lo hubiere, con la propiedad
"f1RespuestaDetalleObservacionMsg" que referencia un valor de una lista variable apuntada por "f1IndiceItem" y
cuyo límite (cantidad de filas de la lista) está marcado por "f1RespuestaDetalleObservacionItemCantidad".

La lista de todos los códigos de error y su descripción se encuentra en la entrada "validaciones".


22WSFEv1 Numeración
La numeración de comprobantes en todos los Web Services de AFIP (incluido el WSFEv1) es correlativa por punto
de venta y tipo de comprobante.

La numeración comienza siempre desde 1 (para cada punto de venta y tipo de comprobante). Los Web Services
de AFIP no admiten "huecos" o comprobantes anulados (es posible emitir una nota de crédito para anular una
factura eléctronica).

Si al registrar una factura electrónica esta es rechazada por AFIP (por cualquier motivo) el número no es
asignado. Queda disponible para la próxima emisión válida.

Cada tipo de comprobante (Factura A, Nota Crédito A, Factura B, etc.) está identificado por un código numérico
que se obtiene de una lista variable.

Antes de llamar al método FECAESolicitar para obtener CAE (o FECAEARegInformativo para usar un CAE
anticipado) debemos cargar en las propiedades:
"f1DetalleCbteDesde" y "f1DetalleCbteHasta" el número del comprobante (según las reglas arriba descriptas).

¿Porque el número de comprobante debe cargarse en 2 propiedades?.


Porque para algunos tipos de comprobantes especiales es posible pedir CAE para un grupo de documentos (por
ejemplo ticket "C" desde el número 1 al número 1000) y en este caso se debe indicar el primer y el último número
del grupo (siempre respetando las reglas de numeración) y cargar los totales del grupo de documentos en las
propiedades habituales.

No debe confundirse este grupo de documentos (para el que se envia los totales acumulados y se
obtiene un solo CAE) con el modo "en lote" que se refiere a enviar un lote de documentos (con numeración y
datos individuales) para obtener múltiples CAE (uno para cada documento del lote) en una sola llamada a
FECAESolicitar.

Esta tabla muestra un ejemplo de como se numeran las facturas electrónicas y su correlación:

Fecha Punto Comprobante Número Correlación


(dia) Venta
1 1 Factura A 1 xxxxxxxxxx
1 1 Factura A 2 xxxxxxxxxx
1 2 Factura A 1 xxxxxxxxxx
2 1 Factura A 3 xxxxxxxxxx
1 2 Factura A 2 xxxxxxxxxx
2 2 Nota Débito A 1 xxxxxxxxxx
2 2 Nota Crédito A 1 xxxxxxxxxx
3 1 Factura A 4 xxxxxxxxxx
2 2 Factura A 3 xxxxxxxxxx
2 2 Nota Débito A 2 xxxxxxxxx
3 1 Factura A rechazada xxxxxxxxxx
3 1 Factura A 5 xxxxxxxxxx
4 2 Factura A 4 xxxxxxxxxx
4 1 Nota Crédito A 1 xxxxxxxxxx

El WSFEv1 incluye el método f1CompUltimoAutorizado que devuelve el último numero usado para punto de venta
y tipo de comprobante.

23

Das könnte Ihnen auch gefallen