issue(). Los métodos de esta página sirven
cuando tu aplicación ya reservó un número, necesita un campo de ARCA que
issue() no recibe o tiene que consultar directamente WSFE, WSMTXCA o
Padrón.
Control manual de la numeración
Este bloque es examples/factura-b-consumidor-final.ts:buildFacturaB() deriva el tipo Factura B, el neto, el detalle de IVA, el
importe de IVA, los campos en cero y el total, sin aritmética fiscal de punto
flotante. buildFacturaC() arma aparte la forma de la Factura C con IVA cero.
Las dos funciones aceptan enteros en centavos de la moneda y soportan las ISO
ARS (la de por defecto) y USD. Factura B requiere un taxableAmount
positivo. Cuando vatRate es positivo, el importe tiene que producir al menos
un centavo de IVA después del redondeo. El IVA usa el criterio Round Half Even
documentado por ARCA, así que un medio centavo exacto se redondea al centavo
par.
Para una factura en USD, pasá el tipo de cambio como string decimal:
Métodos por servicio
client.wsfe
Facturación electrónica WSFE. Los inputs usan nombres habituales en JS y el SDK los
mapea internamente a los campos SOAP de AFIP / ARCA.
- Los campos de fecha aceptan
YYYY-MM-DDoYYYYMMDD. - Armá facturas A/B/C desde afirmaciones explícitas con
client.issue(). - Emití facturas y notas de crédito con los métodos directos de WSFE.
issue({ voucherNumber, data })manda un pedido de autorización y devuelve evidenciaauthorized,rejectedoindeterminate.getNextVoucherNumber({ salesPoint, voucherType })lee el próximo número a reservar.getVoucherInfo({ number, salesPoint, voucherType })devuelve el detalle del comprobante onull.- Consultá números y detalles de comprobantes.
- Leé los catálogos de ARCA con métodos como
getVoucherTypes()ygetVatRates(). Hay métodos de catálogo disponibles para datos de referencia en vivo cuando no querés valores fijos en el código. - Verificá el estado del servidor con
getServerStatus(). - Los métodos autenticados aceptan
forceRefresh: truepara descartar el TA WSAA cacheado y pedir un Token Authorization nuevo para el mismo servicio.
client.padron
getTaxpayerDetails(taxId)devuelve los datos del contribuyente onull.getTaxIdByDocument(documentNumber)resuelve CUIT candidatos a partir de un número de documento, onull.
client.wsmtxca
issue({ data })getLastAuthorizedVoucher({ voucherType, salesPoint })getVoucher({ voucherType, salesPoint, voucherNumber })- Los métodos autenticados aceptan
forceRefresh: truepara renovar el TA WSAA de WSMTXCA antes de la llamada.
client.issue() también emite por WSMTXCA, con detalle de ítems, cuando pasás
{ service: "wsmtxca" }. La guía de WSMTXCA explica ese
flujo. Para armar el request completo, llamá directamente a issue,
getLastAuthorizedVoucher, lookupVoucher, getVoucher o getSalesPoints.
Emitir un pedido armado por tu aplicación
client.issue() deriva el pedido de WSFE, reserva el número y recupera
después de una caída por vos. Cuando necesitás algo que no deriva (una nota en
otra moneda o a otro receptor, o cualquier campo fuera de la
entrada de issue()) o la
numeración es de tu aplicación, usá client.wsfe.issue(...). Este método
manda un FECAESolicitar para un número de comprobante que reservaste vos de
forma persistente. Devuelve si ese intento quedó autorizado, rechazado o
indeterminado. Preserva cada error y observación estructurados con su servicio,
operación, código, origen y nivel de resultado.
wsfe.issue() y wsmtxca.issue() fuerzan un único intento de transporte SOAP,
incluso cuando el cliente tiene configurados reintentos generales de
transporte. Nunca refrescan credenciales ni reenvían de forma automática. Un
rechazo de autenticación explícito del proveedor vuelve como
reason: "authentication_rejected" con evidencia tipada y segura en
authentication. Un timeout, una falla de conexión, una respuesta inválida o
un resultado incompleto o contradictorio quedan indeterminados y sin reenvío.
Así se evita que un trabajo fiscal incierto provoque una segunda autorización
oculta.
Las operaciones autenticadas de lectura, catálogo y consulta pueden repetirse
una vez con un refresco forzado de credenciales después de un rechazo de
autenticación explícito y tipado. Pasar forceRefresh: true desactiva
cualquier otro intento de recuperación de autenticación.
La ausencia en las consultas directas depende de la operación:
- WSFE
FECompConsultarcódigo 602 devuelvenot_found. - WSFE
FEParamGetPtosVentacódigo 602 devuelve una lista vacía: ARCA responde así cuando el contribuyente no tiene puntos de venta para web services. - WSMTXCA
consultarComprobantecódigo 1503 devuelvenot_found. - WSMTXCA
consultarUltimoComprobanteAutorizadocódigo 1502 devuelve el número de comprobante0. - El código 602 de WSMTXCA no es ausencia de comprobante exacto y sigue siendo un error.
issue() no recibe, usá WsfeVoucherInput.
También soporta exenciones, importes no gravados y varias alícuotas de IVA. Sus
importes son números en unidades
mayores, se validan localmente y se serializan como strings canónicos de dos
decimales:
Importes y monedas
client.issue(), buildFacturaB() y buildFacturaC() reciben enteros en
centavos y monedas ISO ARS o USD. WsfeVoucherInput usa valores decimales
en unidades mayores e identificadores de ARCA como PES y DOL.