Ejemplo de payload AFIP

RunLLM
RunLLM

Sí, aquí tienes un ejemplo de payload para emitir una factura (A o B) de un Responsable Inscripto (RI) a un Consumidor Final (DocTipo 99, DocNro 0) por un producto de $1000 con IVA 21%. Los campos clave son: ImpNeto: 1000, ImpIVA: 210, ImpTotal: 1210, y el array de IVA con Id 5 (21%), BaseImp 1000, Importe 210. Ejemplo en JSON:

{
  "CantReg": 1,
  "PtoVta": 1,
  "CbteTipo": 6,
  "Concepto": 1,
  "DocTipo": 99,
  "DocNro": 0,
  "CbteDesde": 1,
  "CbteHasta": 1,
  "CbteFch": 20240620,
  "ImpTotal": 1210,
  "ImpTotConc": 0,
  "ImpNeto": 1000,
  "ImpOpEx": 0,
  "ImpIVA": 210,
  "ImpTrib": 0,
  "MonId": "PES",
  "MonCotiz": 1,
  "CondicionIVAReceptorId": 5,
  "Iva": [
    {
      "Id": 5,
      "BaseImp": 1000,
      "Importe": 210
    }
  ]
}

Puedes adaptar el número de comprobante y la fecha según corresponda. Para más detalles, revisa los ejemplos oficiales en docs.afipsdk.com y afipsdk.com.

¿Te gustaría ver el ejemplo en otro lenguaje o con más detalles?

Sources:

Fede
Fede

y ahora uno que tenga ademas un producto de 500 pesos con iva 10.5%

RunLLM
RunLLM

Debes agregar una segunda alícuota de IVA en el array "Iva", sumando ambos productos en los totales. El payload sería: ImpNeto: 1500, ImpIVA: 262.5, ImpTotal: 1762.5, y el array "Iva" con dos objetos: uno para 21% y otro para 10.5%. Ejemplo:

{
  "CantReg": 1,
  "PtoVta": 1,
  "CbteTipo": 6,
  "Concepto": 1,
  "DocTipo": 99,
  "DocNro": 0,
  "CbteDesde": 1,
  "CbteHasta": 1,
  "CbteFch": 20240620,
  "ImpTotal": 1762.5,
  "ImpTotConc": 0,
  "ImpNeto": 1500,
  "ImpOpEx": 0,
  "ImpIVA": 262.5,
  "ImpTrib": 0,
  "MonId": "PES",
  "MonCotiz": 1,
  "CondicionIVAReceptorId": 5,
  "Iva": [
    {
      "Id": 5,
      "BaseImp": 1000,
      "Importe": 210
    },
    {
      "Id": 4,
      "BaseImp": 500,
      "Importe": 52.5
    }
  ]
}

Esto sigue la estructura oficial y la suma de IVA y netos debe coincidir con los totales. Más detalles y ejemplos en docs.afipsdk.com y ejemplos de múltiples IVA en discord.

¿Necesitás el ejemplo en otro formato o con explicación paso a paso?

Sources:

Fede
Fede

los productos valen 1000 y 500 respectivamente pero ya tienen iva incluido

RunLLM
RunLLM

En ese caso, debes calcular la base imponible (neto) dividiendo el precio final por 1,21 (para 21%) y por 1,105 (para 10,5%). Así, para $1000 con IVA 21%: neto = 826,45, IVA = 173,55. Para $500 con IVA 10,5%: neto = 452,49, IVA = 47,51. Los totales serían: ImpNeto: 1278,94, ImpIVA: 221,06, ImpTotal: 1500.

El payload sería:

{
  "CantReg": 1,
  "PtoVta": 1,
  "CbteTipo": 6,
  "Concepto": 1,
  "DocTipo": 99,
  "DocNro": 0,
  "CbteDesde": 1,
  "CbteHasta": 1,
  "CbteFch": 20240620,
  "ImpTotal": 1500,
  "ImpTotConc": 0,
  "ImpNeto": 1278.94,
  "ImpOpEx": 0,
  "ImpIVA": 221.06,
  "ImpTrib": 0,
  "MonId": "PES",
  "MonCotiz": 1,
  "CondicionIVAReceptorId": 5,
  "Iva": [
    {
      "Id": 5,
      "BaseImp": 826.45,
      "Importe": 173.55
    },
    {
      "Id": 4,
      "BaseImp": 452.49,
      "Importe": 47.51
    }
  ]
}

Este método es el recomendado en la documentación y foros de la comunidad para precios finales con IVA incluido. ¿Te gustaría ver el cálculo detallado o necesitas ayuda con otro caso?

Sources:

Fede
Fede

quiero el mismo ejemplo pero para factura A

RunLLM
RunLLM

Para una Factura A, el payload es casi igual, solo cambia el tipo de comprobante (CbteTipo: 1 para Factura A) y se mantiene la discriminación de IVA. Usando los mismos valores netos e IVA calculados (precios finales con IVA incluido), el ejemplo sería:

{
  "CantReg": 1,
  "PtoVta": 1,
  "CbteTipo": 1,
  "Concepto": 1,
  "DocTipo": 99,
  "DocNro": 0,
  "CbteDesde": 1,
  "CbteHasta": 1,
  "CbteFch": 20240620,
  "ImpTotal": 1500,
  "ImpTotConc": 0,
  "ImpNeto": 1278.94,
  "ImpOpEx": 0,
  "ImpIVA": 221.06,
  "ImpTrib": 0,
  "MonId": "PES",
  "MonCotiz": 1,
  "CondicionIVAReceptorId": 5,
  "Iva": [
    {
      "Id": 5,
      "BaseImp": 826.45,
      "Importe": 173.55
    },
    {
      "Id": 4,
      "BaseImp": 452.49,
      "Importe": 47.51
    }
  ]
}

La estructura y los cálculos son los mismos, solo asegúrate de usar CbteTipo: 1. Más detalles y ejemplos en docs.afipsdk.com.

¿Te gustaría ver el ejemplo en otro lenguaje o con explicación paso a paso?

Sources:

Fede
Fede

como hago una nota de credito c?

RunLLM
RunLLM

Para emitir una Nota de Crédito C con Afip SDK, debes usar el método createVoucher con el tipo de comprobante 13 (Nota de Crédito C). Debes asociarla a la factura C original usando el campo CbtesAsoc. Ejemplo básico en Node.js:

const punto_de_venta = 1;
const tipo_de_nota = 13; // Nota de Crédito C
const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota);
const data = {
  CantReg: 1,
  PtoVta: punto_de_venta,
  CbteTipo: tipo_de_nota,
  Concepto: 1,
  DocTipo: 80,
  DocNro: 33693450239,
  CbteDesde: last_voucher + 1,
  CbteHasta: last_voucher + 1,
  CbteFch: 20240620,
  ImpTotal: 100,
  ImpTotConc: 0,
  ImpNeto: 100,
  ImpOpEx: 0,
  ImpIVA: 0,
  ImpTrib: 0,
  MonId: 'PES',
  MonCotiz: 1,
  CondicionIVAReceptorId: 6,
  CbtesAsoc: [
    { Tipo: 11, PtoVta: 1, Nro: 1 } // Factura C asociada
  ]
};
const res = await afip.ElectronicBilling.createVoucher(data);
console.log({ cae: res.CAE, vencimiento: res.CAEFchVto });

Más detalles y ejemplos en docs.afipsdk.com.

¿Te gustaría ver el ejemplo en otro lenguaje o con explicación detallada?

Sources: