Facturacin de servicios con Afip

RunLLM
RunLLM

Para facturar un servicio con Afip SDK, primero debes obtener un CAE usando el método createVoucher o su equivalente en tu lenguaje, especificando el concepto "2" (Servicios) y los datos requeridos como CUIT, punto de venta, tipo de comprobante, datos del receptor y montos. Es obligatorio incluir la condición frente al IVA del receptor y, para servicios, las fechas de prestación y vencimiento de pago.

Puedes hacerlo vía API o usando las librerías oficiales en Node.js, PHP, Python, Ruby, etc. Ejemplo en Node.js:

const data = {
  CantReg: 1,
  PtoVta: 1,
  CbteTipo: 6, // Factura B, por ejemplo
  Concepto: 2, // Servicios
  DocTipo: 80, // CUIT
  DocNro: 20123456789,
  CbteDesde: 1,
  CbteHasta: 1,
  CbteFch: 20240601,
  FchServDesde: 20240601,
  FchServHasta: 20240601,
  FchVtoPago: 20240610,
  ImpTotal: 121,
  ImpTotConc: 0,
  ImpNeto: 100,
  ImpOpEx: 0,
  ImpIVA: 21,
  ImpTrib: 0,
  MonId: 'PES',
  MonCotiz: 1,
  CondicionIVAReceptorId: 1,
  Iva: [{ Id: 5, BaseImp: 100, Importe: 21 }]
};
const res = await afip.ElectronicBilling.createVoucher(data);
console.log(res.CAE, res.CAEFchVto);

Más detalles y ejemplos en la documentación oficial. ¿Te gustaría ver el paso a paso completo o ejemplos en otro lenguaje?

Sources:

Fede
Fede

Que va en fecha vencikiento de pago?

Que va en fecha vencikiento de pago?

RunLLM
RunLLM

En "fecha de vencimiento de pago" (FchVtoPago) debes colocar la fecha límite en la que el receptor debe abonar el servicio facturado. Es obligatoria para comprobantes de servicios (concepto 2) y para productos y servicios (concepto 3), y debe estar en formato AAAAMMDD.

¿Te gustaría ver ejemplos prácticos o detalles sobre cómo calcularla?

Sources:

Fede
Fede

Si

RunLLM
RunLLM

Por ejemplo, si emites una factura de servicios hoy (01/06/2024) y el pago debe realizarse en 10 días, la "fecha de vencimiento de pago" será 20240611. Este campo se coloca en el parámetro FchVtoPago del JSON o del objeto de datos al crear el comprobante.

En Node.js sería así:

const data = {
  // ...otros campos...
  FchVtoPago: 20240611, // Fecha de vencimiento de pago en formato AAAAMMDD
  // ...otros campos...
};

Recuerda que este campo es obligatorio para servicios y productos/servicios, y debe ser igual o posterior a la fecha de emisión. Más detalles en la documentación oficial de Afip SDK.

Sources:

Fede
Fede

Como va cuando facturo productos y servicios?

RunLLM
RunLLM

Cuando facturas productos y servicios (concepto 3), debes completar los campos de fechas: FchServDesde, FchServHasta y FchVtoPago. Estas indican el período del servicio y la fecha límite de pago, todas en formato AAAAMMDD. Son obligatorias para concepto 3.

¿Te gustaría ver un ejemplo de estructura de datos para este caso?

Sources:

Fede
Fede

Y si son 2 servicios con fechas diferentes?

RunLLM
RunLLM

Mi entendimiento es que, usando Afip SDK y el web service estándar, solo puedes informar un único rango de fechas (FchServDesde y FchServHasta) y una sola fecha de vencimiento de pago (FchVtoPago) por comprobante, aunque incluyas varios servicios. No es posible detallar múltiples rangos de fechas para distintos servicios en el mismo comprobante; deberías emitir comprobantes separados si los períodos no coinciden.

¿Te gustaría ver cómo estructurar el comprobante en este caso?

Sources: