Error en facturacin electrnica

RunLLM
RunLLM

El error significa que, para facturas B cuyo importe es menor a $10.000.000, si el tipo de documento (DocTipo) es 99 (Consumidor Final), el número de documento (DocNro) debe ser exactamente 0. Si se informa otro valor en DocNro, el web service rechaza la solicitud con ese mensaje de error. Según la documentación y ejemplos de Afip SDK y múltiples respuestas en la comunidad, esta es la forma correcta de facturar a consumidor final por debajo del monto límite.

¿Te gustaría ver un ejemplo de código o más detalles sobre cómo corregirlo?

Sources:

Agustin Desimone
Agustin Desimone

@user como? Si facturo menos de 10 millones debo poner el doc nro del receptor como 0? Y como sabe entonces el sistema de ARCA o algún ente fiscal quien es el receptor de la factura en la cual yo actúo como emisor

RunLLM
RunLLM

Mi entendimiento es que, sí, si facturás menos de $10.000.000 a un consumidor final (DocTipo 99), debés poner DocNro en 0. En ese caso, el sistema de ARCA/AFIP no requiere identificar al receptor; la factura queda emitida "a consumidor final" y no se almacena información personal del comprador en el comprobante electrónico, solo los datos del emisor. Esto está respaldado por la documentación oficial y por respuestas de la comunidad.

¿Querés ver un ejemplo de cómo se arma el JSON o el código para este caso?

Sources:

Agustin Desimone
Agustin Desimone

@user o debo cambiar el número de consumidor final (es decir de 99 a otro tipo)? Qué opción crees que es mejor, esa primera que planteas o esta segunda?

RunLLM
RunLLM

No debés cambiar el tipo de documento (99) si el receptor es consumidor final y el monto es menor a $10.000.000; mantené DocTipo en 99 y DocNro en 0. Solo si el monto supera ese límite, debés usar otro tipo de documento (80, 86, 96) y el número correspondiente del receptor, según la documentación oficial.

La mejor opción es seguir la normativa: para montos menores, usá 99/0; para montos mayores, identificá al receptor. Así evitás rechazos y cumplís con AFIP/ARCA.

Sources:

Agustin Desimone
Agustin Desimone

@user pregunta, si emitimos con doc nro 0 la factura pasa a ser tipo consumidor final en vez de tipo B? o puede ser ambas? cual es su diferencia?

RunLLM
RunLLM

La factura sigue siendo tipo B (CbteTipo 6), pero al poner DocTipo 99 y DocNro 0, el receptor es "consumidor final". Es decir, una factura B puede ser emitida tanto a responsables inscriptos como a consumidores finales; lo que cambia es la identificación del receptor, no el tipo de comprobante. La diferencia está en los datos del receptor: con DocTipo 99/DocNro 0 no se identifica al comprador, mientras que con otros tipos sí se lo identifica, pero ambas son facturas B según la documentación oficial.

¿Te gustaría ver ejemplos de ambos casos en código?

Sources:

Agustin Desimone
Agustin Desimone

@user Ok y podríamos emitir otro tipo de factura si el cliente nos dijo que debe ser tipo B y que debemos de agregar los detalles del cliente/receptor de la factura?

@user Ok y podríamos emitir otro tipo de factura si el cliente nos dijo que debe ser tipo B y que debemos de agregar los detalles del cliente/receptor de la factura?

RunLLM
RunLLM

Sí, podés emitir una factura tipo B (CbteTipo 6) agregando los datos del receptor. En ese caso, usá DocTipo 80 (CUIT), 86 (CUIL) o 96 (DNI) y el número de documento correspondiente, según lo que te indique el cliente. Así la factura sigue siendo tipo B, pero identificada a nombre del receptor, tal como muestra la documentación oficial.

¿Querés un ejemplo de cómo armar el JSON o el código para este caso?

Sources:

Agustin Desimone
Agustin Desimone

@user ya le agrgeué eso de doc nro = 0, ahora me dice: " Si ImpNeto es mayor a 0 el objeto IVA es obligatorio."

RunLLM
RunLLM

El error indica que, si el campo ImpNeto (importe neto gravado) es mayor a 0, debés incluir el objeto Iva con las alícuotas correspondientes, aunque sea una factura B a consumidor final. AFIP exige que se detalle el IVA en la estructura, aunque luego no se discrimine en el PDF para el cliente final, según la documentación oficial.

¿Querés ver un ejemplo de cómo armar el objeto Iva en el JSON?

Sources:

Agustin Desimone
Agustin Desimone

@user entonces si tengo esta estrucura de JSON para las facturas tipo B:

{ "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq" : { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 6 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 99, "DocNro": 0, "CbteDesde": 865, "CbteHasta": 865, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 5, "Iva": { "AlicIva": [ { "Id": 5, "BaseImp": 100, "Importe": 21 } ] } } } } } }

Como debe lucir?

@user entonces como debe lucir la factura en este caso? como cambia el JSON de la esructura>

RunLLM
RunLLM

La estructura es correcta, pero el campo "Iva" debe ser un array, no un objeto con "AlicIva". Debe lucir así:

"Iva": [
    {
        "Id": 5,
        "BaseImp": 100,
        "Importe": 21
    }
]

El resto de los campos está bien para una factura B a consumidor final con IVA discriminado en la estructura, según la documentación oficial.

Sources: