Skip to content

Referencia de la API pública

Resumen de lo que exporta @arcasdk/core y cómo acceder a cada servicio desde una instancia de Arca.


Clase Arca

Punto de entrada principal. Se construye con un Context y expone un servicio tipado por cada web service de ARCA soportado.

ts
import { Arca } from "@arcasdk/core";

const arca = new Arca({
  cuit: 20111111112,
  cert: "...",
  key: "...",
  production: false,
});

Propiedades de servicio

PropiedadWeb serviceDocumentación
electronicBillingServiceWSFEFacturación electrónica
wsfexServiceWSFEXFacturación de exportación
wsfecredServiceWSFECREDFactura de crédito MiPyMEs
registerScopeFourServicePadrón A4Padrón alcance 4
registerScopeFiveServicePadrón A5Padrón alcance 5
registerScopeTenServicePadrón A10Padrón alcance 10
registerScopeThirteenServicePadrón A13Padrón alcance 13
registerInscriptionProofServiceConstancia inscripciónConstancia de inscripción
genericServiceCualquier WSDL / SOAP genéricoServicio genérico

Ejemplo rápido por servicio:

ts
import { Arca, ArcaServiceNames } from "@arcasdk/core";

await arca.electronicBillingService.getServerStatus();
await arca.wsfexService.dummy();
await arca.wsfecredService.consultarTiposRetenciones();
await arca.registerScopeFourService.getTaxpayerDetails(20111111111);
await arca.genericService.call(ArcaServiceNames.WSFE, "FEDummy", {});

ArcaServiceNames

Constantes con los alias WSAA de cada servicio. Usalas con AuthRepository, genericService.call() y cualquier API que reciba un nombre de servicio.

ts
import { Arca, ArcaServiceNames, AuthRepository } from "@arcasdk/core";

const ticket = await authRepository.requestLogin(ArcaServiceNames.WSFE);

await arca.genericService.call(
  ArcaServiceNames.WSSR_PADRON_FOUR,
  "dummy",
  {},
);
ConstanteValor (alias WSAA)
WSFEwsfe
WSFEXwsfex
WSFECREDwsfecred
WSSR_PADRON_FOURws_sr_padron_a4
WSSR_PADRON_FIVEws_sr_padron_a5
WSSR_PADRON_TENws_sr_padron_a10
WSSR_PADRON_THIRTEENws_sr_padron_a13
WSSR_INSCRIPTION_PROOFws_sr_constancia_inscripcion
FE_DUMMYFEDummy

FE_DUMMY sirve como alias WSAA; no incluye WSDL en el paquete. Para usarlo con genericService, pasá wsdlContent en las opciones.


Autenticación WSAA

Automática (recomendada)

Con handleTicket: false (por defecto), Arca renueva y persiste tickets sin código extra. Ver Gestión de credenciales.

AuthRepository

Cliente WSAA de bajo nivel, útil cuando controlás vos el ciclo del ticket:

ts
import { AuthRepository, ArcaServiceNames } from "@arcasdk/core";

const authRepository = new AuthRepository({
  cuit: 20111111112,
  cert: "...",
  key: "...",
  production: false,
});

const ticket = await authRepository.requestLogin(ArcaServiceNames.WSFE);
const credentials = ticket.toLoginCredentials();

Almacenamiento de tickets

ExportUso
ITicketStoragePortInterfaz para persistir AccessTicket por servicio
FileSystemTicketStorageImplementación en disco
MemoryTicketStorageImplementación en memoria (tests, procesos cortos)

Inyectá un storage custom en el Context:

ts
import {
  Arca,
  FileSystemTicketStorage,
  type ITicketStoragePort,
} from "@arcasdk/core";

const ticketStorage: ITicketStoragePort = new FileSystemTicketStorage({
  ticketPath: "/var/lib/mi-app/arca-tickets",
  cuit: 20111111112,
  production: false,
});

const arca = new Arca({ cuit, cert, key, ticketStorage });

SOAP y transporte

ExportDescripción
SoapClientCrear clientes SOAP con WSDL bundled o contenido manual
SoapRuntimeForzar runtime Node o Universal en SoapClient
DateTimeRefUtilidad de fecha/hora usada internamente
MS_PER_MINUTE, MS_PER_SECOND, WSAA_TRA_VALIDITY_WINDOW_MSConstantes de tiempo WSAA

Detalle de engines y TLS: Engines SOAP y useHttpsAgent.


Tipos y DTOs

El paquete reexporta tipos de la capa de aplicación para armar requests y tipar responses:

  • Facturación: IVoucher, INextVoucher, CreateVoucherResultDto, DTOs de parámetros y consultas WSFE.
  • WSFEX / WSFECRED: tipos bajo los namespaces exportados desde @arcasdk/core (p. ej. inputs/outputs de wsfexService y wsfecredService).
  • Padrón: DTOs en el módulo de register exportado.
  • Auth: ILoginCredentials, entidades de dominio como AccessTicket y Voucher cuando se exportan.

También están disponibles los use cases (CreateVoucherUseCase, LoginUseCase, etc.) para composición custom sin pasar por Arca.

ts
import {
  CreateVoucherUseCase,
  type CreateVoucherResultDto,
} from "@arcasdk/core";

Dominio exportado

Entidades y value objects reutilizables:

  • Voucher — modelo de comprobante WSFE
  • AccessTicket — ticket WSAA con toLoginCredentials()
  • CUIT, CAE, VoucherNumber — value objects

Servicio genérico vs servicios dedicados

EnfoqueCuándo usarlo
Servicio dedicado (wsfexService, etc.)Uso normal: métodos tipados, menos fricción
genericServiceMétodos no expuestos aún, dummy de prueba, WSDL propio con wsdlContent

Ver Servicio genérico para la lista de WSDL incluidos y ejemplos de call().


Métodos por servicio

Acceso: arca.<propiedad>.<método>(...). Los tipos de entrada y salida se importan desde @arcasdk/core (p. ej. IVoucher, IFEXAuthorizeInput).

electronicBillingService (WSFE)

Guía detallada: Facturación electrónica

MétodoDescripción
getServerStatus()Estado de App/DB/Auth de WSFE
getSalesPoints()Puntos de venta habilitados
getLastVoucher(salesPoint, type)Último comprobante autorizado por PV y tipo
createVoucher(req)Emite comprobante y obtiene CAE (IVoucherCreateVoucherResultDto)
createNextVoucher(req)Igual que createVoucher pero calcula número siguiente (INextVoucher)
createInvoice(req)Sinónimo de createVoucher
createNextInvoice(req)Sinónimo de createNextVoucher
getVoucherInfo(number, salesPoint, type)Consulta comprobante emitido
getVoucherTypes()Tipos de comprobante
getConceptTypes()Tipos de concepto
getDocumentTypes()Tipos de documento receptor
getAliquotTypes()Alícuotas IVA
getCurrencyTypes()Monedas
getOptionalTypes()Campos opcionales
getTaxTypes()Tipos de tributo
getIvaReceptorTypes(claseCmp?)Condiciones IVA del receptor
getQuotation(currencyId)Cotización de moneda
getCountries()Países
getActivities()Actividades AFIP
getMaxRecordsPerRequest()Máximo de registros por request
getCaea(period, order)Solicita CAEA (YYYYMM, quincena 1 | 2)
consultCaea(period, order)Consulta CAEA vigente
informCaeaNoMovement(caea, salesPoint)Informa sin movimiento en PV
consultCaeaNoMovement(caea, salesPoint)Consulta sin movimiento
informCaeaUsage(voucher, caea)Informa comprobante emitido con CAEA

wsfexService (WSFEX)

Guía detallada: Facturación de exportación

MétodoDescripción
dummy()Estado del servicio
authorize(input)Autoriza comprobante de exportación
getCmp(input)Consulta comprobante por ID
getLastCmp(input)Último comprobante autorizado
getLastId(input)Último ID de comprobante
checkPermiso(input)Valida permiso de embarque
getParamCbteTipo(input)Tipos de comprobante exportación
getParamTipoExpo(input)Tipos de exportación
getParamIncoterms(input)Incoterms
getParamIdiomas(input)Idiomas
getParamUMed(input)Unidades de medida
getParamDstPais(input)Países destino
getParamDstCuit(input)CUITs destino
getParamMon(input)Monedas
getParamMonConCotizacion(input)Monedas con cotización
getParamCtz(input)Cotización
getParamPtoVenta(input)Puntos de venta
getParamOpcionales(input)Opcionales
getParamActividades(input)Actividades

wsfecredService (WSFECRED)

Guía detallada: Factura de crédito MiPyMEs

MétodoDescripción
aceptarFECred(input)Acepta FCE como receptor
rechazarFECred(input)Rechaza FCE
rechazarNotaDC(input)Rechaza nota de débito/crédito
informarCancelacionTotalFECred(input)Cancelación total
modificarOpcionTransferencia(input)Modifica opción de transferencia
consultarComprobantes(input)Lista comprobantes FCE
consultarCtasCtes(input)Cuentas corrientes
consultarCtaCte(input)Detalle de cuenta corriente
consultarHistorialEstadosComprobante(input)Historial de estados de comprobante
consultarHistorialEstadosCtaCte(input)Historial de estados de cuenta
consultarObligadoRecepcion(input)Obligado a recepción
consultarMontoObligadoRecepcion(input)Monto obligado recepción
informarFacturaAgtDptoCltv(input)Informa factura agente depósito
consultarFacturasAgtDptoCltv(input)Consulta facturas agente depósito
consultarCuentasEnAgtDptoCltv()Cuentas en agente depósito
obtenerRemitos(input)Remitos asociados
consultarTiposRetenciones()Catálogo de retenciones
consultarTiposMotivosRechazo()Motivos de rechazo
consultarTiposFormasCancelacion()Formas de cancelación
consultarTiposAjustesOperacion()Tipos de ajuste

registerScopeFourService (Padrón A4)

MétodoDescripción
getServerStatus()dummy del servicio
getTaxpayerDetails(identifier)Datos del contribuyente por CUIT

Guía alcance 4


registerScopeFiveService (Padrón A5)

MétodoDescripción
getServerStatus()dummy del servicio
getTaxpayerDetails(identifier)Un contribuyente
getTaxpayersDetails(identifiers)Varios contribuyentes (lote)

Guía alcance 5


registerScopeTenService (Padrón A10)

MétodoDescripción
getServerStatus()dummy del servicio
getTaxpayerDetails(identifier)Datos del contribuyente

Guía alcance 10


registerScopeThirteenService (Padrón A13)

MétodoDescripción
getServerStatus()dummy del servicio
getTaxpayerDetails(identifier)Datos del contribuyente
getTaxIDByDocument(documentNumber)CUIT a partir de documento

Guía alcance 13


registerInscriptionProofService (Constancia)

MétodoDescripción
getServerStatus()dummy del servicio
getTaxpayerDetails(identifier)Constancia de un contribuyente
getTaxpayersDetails(identifiers)Constancias en lote

Guía constancia


genericService

MétodoDescripción
call(serviceName, methodName, params, options?)Invoca cualquier operación SOAP; options.wsdlContent para WSDL externo
ts
await arca.genericService.call(
  ArcaServiceNames.WSFECRED,
  "consultarTiposRetenciones",
  {},
);

AuthRepository

Instancia independiente de Arca para flujos WSAA manuales o serverless.

MétodoDescripción
login(serviceName)Ticket válido (cache/storage o nuevo login)
requestLogin(serviceName)Fuerza solicitud WSAA y devuelve AccessTicket
getAuthParams(ticket, cuit)Parámetros Token / Sign / Cuit para SOAP

Use cases equivalentes exportados: LoginUseCase, RequestLoginUseCase, GetAuthParamsUseCase.


Use cases (composición avanzada)

Cada método de servicio tiene un use case homónimo exportado desde @arcasdk/core. Podés instanciarlos con el puerto de repositorio correspondiente si armás tu propio wiring:

MóduloEjemplos
authenticationLoginUseCase, RequestLoginUseCase, GetAuthParamsUseCase
electronic-billingCreateVoucherUseCase, GetCaeaUseCase, GetSalesPointsUseCase, …
registerGetTaxpayerDetailsUseCase, GetRegisterServerStatusUseCase, …
wsfexAuthorizeUseCase, GetCmpUseCase, FexDummyUseCase, …
wsfecredAceptarFECredUseCase, ConsultarComprobantesUseCase, …

Los tipos I*RepositoryPort también se exportan para inyectar implementaciones custom en tests o extensiones.

Made by Rodrigo Alcorta with ❤️