XmlPeruDevDocs

Qué se frena antes de enviar

Elige si un comprobante que SUNAT aceptaría con reparos sale o se frena aquí.

Autenticación: token Bearer de cuenta (empresas:manage).

Consideraciones

  • Antes de firmar corremos las mismas reglas que SUNAT. Lo que no pasa no se firma ni se envía, así que no consume plan.
  • SUNAT separa dos cosas: un error (código menor que 4000) lo rechaza; una observación (4000 o mayor) la acepta con reparos. Los errores se frenan siempre — el comprobante no iba a pasar—; lo que eliges aquí es qué hacer con las observaciones.
  • Por defecto es errors: se emite y la observación llega en warnings de POST /v1/cpe, para corregir el origen sin frenar la facturación.
  • Con strict tampoco sale lo observado. Útil para quien prefiere no tener ningún comprobante con reparos.
  • Vale para todas las empresas de la cuenta. Una concreta puede llevar la contraria con PATCH /v1/companies/{ruc}/validation, y policy: null borra esa excepción.
  • Se aplica por igual emitas por /v1, por la superficie compat o por la recepción SOAP.
PATCHhttps://api.xmlperu.dev/v1/account/validationCopiar

Cada empresa dice en GET /v1/companies/{ruc} qué política le aplica y de dónde le viene:

"validation": { "policy": "errors", "source": "account" }

source es account cuando la hereda, company cuando tiene la suya, y default cuando nadie ha elegido nada.

Cuándo frena cada una

errors strict
Error de SUNAT No sale No sale
Observación de SUNAT Sale, y avisa en warnings No sale

Un comprobante frenado responde 422 con el código y el texto de cada regla, y no gasta firma ni envío.

Headers

NameTypeDescription
Acceptstringapplication/json
Content-Typestringapplication/json
AuthorizationstringBearer <token>. Genéralo desde tu panel, en Tokens de API.

Body

NameTypeDescription
policy*stringerrors (por defecto) · strict.

Ejemplo de solicitud

Copiar
curl -X PATCH https://api.xmlperu.dev/v1/account/validation \
  -H "Authorization: Bearer $TOKEN_CUENTA" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "policy": "strict"
}'

Respuesta

200 Actualizadoapplication/json
{
  "success": true,
  "message": "Validación de la cuenta actualizada.",
  "data": {
    "account": {
      "validation": {
        "policy": "strict",
        "is_default": false
      }
    }
  }
}
422 Política desconocidaapplication/json
{
  "success": false,
  "message": "The selected policy is invalid."
}