XmlPeruDevDocs

Quién envía a SUNAT

Elige si el comprobante sale solo al firmarlo o lo envía la empresa cuando quiera.

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

Consideraciones

  • Por defecto es automatic: firmar encola el envío y no hay que hacer nada más.
  • En manual, POST /v1/cpe responde estado: "por_enviar" y el comprobante queda firmado esperando. Se manda con POST /v1/cpe/{external_id}/enviar.
  • Manual es decidir CUÁNDO, no SI. Pasadas 12 horas el comprobante se envía igual: SUNAT tiene plazos y un comprobante firmado que nunca se informa es un incumplimiento del emisor.
  • La firma ya se consumió al emitir: el modo de envío no cambia lo que se cobra ni cuándo.
PATCHhttps://api.xmlperu.dev/v1/companies/{ruc}/sendingCopiar

Para qué sirve

Por defecto nosotros llevamos el envío: firmas y el comprobante sale hacia SUNAT sin que tengas que hacer nada. Es lo que quiere la mayoría.

El modo manual es para quien necesita revisar antes de que salga — o elegir el momento, por ejemplo agrupando los envíos al cierre del día. El comprobante se firma igual, queda en estado Por enviar, y sale cuando tú lo mandes:

curl -X POST https://api.xmlperu.dev/v1/cpe/$EXTERNAL_ID/enviar \
  -H "Authorization: Bearer $TOKEN_EMPRESA"

También puedes mandarlo desde el panel, en el listado de comprobantes.

El plazo

Pasadas 12 horas en «Por enviar», el comprobante se envía solo.

No es quitarte el control: es el suelo por debajo del cual no te dejamos caer. Un comprobante firmado y nunca informado es un incumplimiento tuyo ante SUNAT, y llevaría nuestra firma dentro. El modo manual decide cuándo sale, dentro del plazo, no si sale.

Lo que no cambia

La firma se consume al emitir, no al enviar: cambiar el modo no altera lo que se cobra. Y el resultado se consulta igual, con GET /v1/cpe/{external_id}.

Headers

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

Parámetros de URL

NameTypeDescription
ruc*stringRUC de 11 dígitos de la empresa.

Body

NameTypeDescription
mode*stringautomatic (por defecto) · manual.

Ejemplo de solicitud

Copiar
curl -X PATCH https://api.xmlperu.dev/v1/companies/20123456789/sending \
  -H "Authorization: Bearer $TOKEN_CUENTA" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "mode": "manual"
}'

Respuesta

200 Actualizadoapplication/json
{
  "success": true,
  "message": "Modo de envío actualizado.",
  "data": {
    "company": {
      "ruc": "20123456789",
      "business_name": "MI EMPRESA SAC",
      "plan_type": "01",
      "environment": "02",
      "environment_name": "production",
      "sending": "manual",
      "is_active": true
    }
  }
}
422 Modo inválidoapplication/json
{
  "success": false,
  "message": "Datos inválidos",
  "errors": { "mode": ["El campo mode seleccionado es inválido."] }
}