No esperar a SUNAT
Desactiva la espera de SUNAT en el envío, para empresas que mandan en lote.
Autenticación: token Bearer de cuenta (empresas:manage).
Consideraciones
- Por defecto,
POST /api/cpe/enviarespera unos segundos a SUNAT y devuelve el CDR. Es lo normal y no hay que configurar nada. - Con
inmediatadeja de esperar: responde al momento y el resultado se recoge con consultar o por webhook. - Sirve para quien manda en lote: unos segundos por comprobante multiplicados por una tanda de trescientos son un cuarto de hora.
- Solo afecta a
/api/cpe/*. En/v1la respuesta es siempre inmediata, se ponga lo que se ponga aquí. - No cambia nada para resúmenes, reversiones ni guías: esos ya respondían al momento porque SUNAT los resuelve por ticket.
Cuándo tocarlo
Casi nunca. El comportamiento por defecto —esperar y devolver el CDR— es el que espera cualquier integración que venga de otra plataforma, y es el que hace que migrar no cueste nada.
| Esperar (por defecto) | Inmediata | |
|---|---|---|
enviar responde en |
unos segundos | el acto |
| El CDR llega | en la misma respuesta | consultando o por webhook |
| Para | emitir venta a venta | mandar en lote |
Tiene sentido si acumulas comprobantes y los mandas de golpe: ahí la espera se multiplica por la tanda y no te aporta nada, porque no hay nadie esperando la respuesta al otro lado.
curl -X PATCH https://api.xmlperu.dev/v1/companies/$RUC/response \
-H "Authorization: Bearer $TOKEN_CUENTA" \
-H "Content-Type: application/json" \
-d '{"mode": "immediate"}'
Para volver al comportamiento normal, {"mode": "wait"}.
Lo que no cambia
Tu comprobante ya es válido al firmarse, en los dos modos. Esto solo decide en qué momento te enteras del veredicto de SUNAT, no cuándo el comprobante existe.
Headers
| Name | Type | Description |
|---|---|---|
| Accept | string | application/json |
| Content-Type | string | application/json |
| Authorization | string | Bearer <token>. Genéralo desde tu panel, en Tokens de API. |
Parámetros de URL
| Name | Type | Description |
|---|---|---|
| ruc* | string | RUC de 11 dígitos de la empresa. |
Body
| Name | Type | Description |
|---|---|---|
| mode* | string | wait (por defecto) o immediate. |
Ejemplo de solicitud
Copiar
curl -X PATCH https://api.xmlperu.dev/v1/companies/20123456789/response \
-H "Authorization: Bearer $TOKEN_CUENTA" \
-H "Accept: application/json"Copiar
<?php
$token_cuenta = 'pega-aqui-tu-token';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.xmlperu.dev/v1/companies/20123456789/response');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $token_cuenta,
'Accept: application/json',
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);Copiar
const TOKEN_CUENTA = 'pega-aqui-tu-token';
const res = await fetch('https://api.xmlperu.dev/v1/companies/20123456789/response', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${TOKEN_CUENTA}`,
Accept: 'application/json',
},
});
const data = await res.json();Copiar
import requests
TOKEN_CUENTA = "pega-aqui-tu-token"
headers = {
"Authorization": f"Bearer {TOKEN_CUENTA}",
"Accept": "application/json",
}
res = requests.patch("https://api.xmlperu.dev/v1/companies/20123456789/response", headers=headers)
data = res.json()Respuesta
200 Actualizadoapplication/json
{
"success": true,
"message": "Modo de respuesta actualizado.",
"data": {
"company": {
"ruc": "20123456789",
"response": "immediate"
}
}
}422 Modo inválidoapplication/json
{
"success": false,
"message": "The selected modo is invalid."
}