Skip to content

Comprobantes T de Turismo (WSCT)

El servicio wsctService autoriza y consulta comprobantes clase T para servicios de alojamiento a turistas extranjeros, a través del Web Service CT (WSCT).

Detalles técnicos

  • WSCT usa SOAP 1.1 internamente (como WSFECRED).
  • También podés invocar cualquier operación vía genericService con ArcaServiceNames.WSCT.

Requisitos

  • El emisor debe estar empadronado en una actividad de hospedaje/turismo.
  • El certificado debe tener autorizado el web service wsct en el portal ARCA. Ver Gestión de credenciales.
  • Debe existir un punto de venta habilitado para este servicio.

Si el certificado no tiene el WS autorizado, WSAA responde coe.notAuthorized. Ver Errores frecuentes — coe.notAuthorized.

Los tipos de comprobante vigentes se consultan con consultarTiposComprobantes() (habitualmente Factura T, Nota de Débito T y Nota de Crédito T). No hardcodees el código: obtenelo del catálogo antes de autorizar o consultar.

ts
const tipos = await arca.wsctService.consultarTiposComprobantes();
console.log(tipos.consultarTiposComprobantesReturn.arrayTiposComprobantes);

Autorizar comprobante

autorizarComprobante envía el comprobante y obtiene el CAE. Conviene consultar antes el último número autorizado para el mismo punto de venta y tipo.

ts
const tipos = await arca.wsctService.consultarTiposComprobantes();
const codigoTipoComprobante =
  tipos.consultarTiposComprobantesReturn.arrayTiposComprobantes
    .codigoDescripcion[0].codigo;

const ultimo = await arca.wsctService.consultarUltimoComprobanteAutorizado({
  codigoTipoComprobante,
  numeroPuntoVenta: 1,
});

const proximo =
  Number(ultimo.consultarUltimoComprobanteAutorizadoReturn.numeroComprobante ?? 0) +
  1;

const result = await arca.wsctService.autorizarComprobante({
  comprobanteRequest: {
    codigoTipoComprobante,
    numeroPuntoVenta: 1,
    numeroComprobante: proximo,
    fechaEmision: "2026-09-03",
    codigoTipoDocumento: 91,
    numeroDocumento: "AB123456",
    idImpositivo: "IVAEX",
    codigoPais: 212,
    domicilioReceptor: "Hotel example",
    codigoRelacionEmisorReceptor: 1,
    importeGravado: 100,
    importeNoGravado: 0,
    importeExento: 0,
    importeOtrosTributos: 0,
    importeReintegro: 0,
    importeTotal: 121,
    codigoMoneda: "PES",
    cotizacionMoneda: 1,
    arrayItems: {
      item: [
        {
          tipo: 0,
          codigoTurismo: 1,
          codigo: "ALOJ",
          descripcion: "Alojamiento",
          codigoAlicuotaIVA: 5,
          importeIVA: 21,
          importeItem: 121,
        },
      ],
    },
    arraySubtotalesIVA: {
      subtotalIVA: [{ codigo: 5, importe: 21 }],
    },
  },
});

const { resultado, comprobanteResponse, arrayErrores } =
  result.autorizarComprobanteReturn;

if (resultado === "A" || resultado === "O") {
  console.log(comprobanteResponse?.CAE);
  console.log(comprobanteResponse?.fechaVencimientoCAE);
} else {
  console.error("Comprobante rechazado", arrayErrores);
}

resultado puede ser "A" (aprobado), "O" (aprobado con observaciones) o "R" (rechazado). Si es "R", comprobanteResponse puede no venir; revisá arrayErrores y arrayErroresFormato.

Los códigos de ítem de turismo se obtienen con consultarCodigosItemTurismo(). Los tipos de ítem, con consultarTiposItem().


Consultar comprobante autorizado

ts
const tipos = await arca.wsctService.consultarTiposComprobantes();
const codigoTipoComprobante =
  tipos.consultarTiposComprobantesReturn.arrayTiposComprobantes
    .codigoDescripcion[0].codigo;

const result = await arca.wsctService.consultarComprobanteTipoPVentaNro({
  codigoTipoComprobante,
  numeroPuntoVenta: 1,
  numeroComprobante: 1,
});

console.log(result.consultarComprobanteReturn.comprobante);

Último comprobante autorizado

ts
const tipos = await arca.wsctService.consultarTiposComprobantes();
const codigoTipoComprobante =
  tipos.consultarTiposComprobantesReturn.arrayTiposComprobantes
    .codigoDescripcion[0].codigo;

const result = await arca.wsctService.consultarUltimoComprobanteAutorizado({
  codigoTipoComprobante,
  numeroPuntoVenta: 1,
});

console.log(result.consultarUltimoComprobanteAutorizadoReturn.numeroComprobante);

Cotización de moneda

ts
const result = await arca.wsctService.consultarCotizacion({
  codigoMoneda: "DOL",
  fechaCotizacion: "2026-09-03",
});

console.log(result.consultarCotizacionReturn.cotizacionMoneda);

Tipos de tarjeta

Requiere el código de forma de pago (ver consultarFormasPago()).

ts
const result = await arca.wsctService.consultarTiposTarjeta({
  formaPago: 1,
});

console.log(result.consultarTiposTarjetaReturn.arrayTiposTarjeta);

Catálogos y parámetros

ts
await arca.wsctService.consultarPuntosVenta();
await arca.wsctService.consultarTiposComprobantes();
await arca.wsctService.consultarTiposDocumento();
await arca.wsctService.consultarTiposItem();
await arca.wsctService.consultarCodigosItemTurismo();
await arca.wsctService.consultarTiposIVA();
await arca.wsctService.consultarCondicionesIVA();
await arca.wsctService.consultarTiposTributo();
await arca.wsctService.consultarMonedas();
await arca.wsctService.consultarPaises();
await arca.wsctService.consultarCUITsPaises();
await arca.wsctService.consultarRelacionEmisorReceptor();
await arca.wsctService.consultarFormasPago();
await arca.wsctService.consultarTiposCuenta();
await arca.wsctService.consultarTiposDatosAdicionales();
await arca.wsctService.consultarNovedades();

Servicio genérico

Cualquier operación del WSDL también se puede invocar con genericService:

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

await arca.genericService.call(
  ArcaServiceNames.WSCT,
  "consultarTiposComprobantes",
  {},
);

Ver Servicio genérico para más detalles.


Dummy (estado del servicio)

Según el WSDL, dummy no lleva authRequest en el body (el SDK no inyecta ticket WSAA en esta operación).

Homologación

En homologación ARCA puede responder [common_001] Acceso Denegado a dummy, aun sin autenticación. Para validar conectividad y credenciales, preferí una operación autenticada como consultarTiposComprobantes().

ts
const status = await arca.wsctService.dummy();

console.log(status.dummyReturn.appserver);
console.log(status.dummyReturn.dbserver);
console.log(status.dummyReturn.authserver);

Made by Rodrigo Alcorta with ❤️