Descarga la propuesta que arma SUNAT, concíliala contra tus registros, acéptala y registra el preliminar. Todo por API, con el mismo token que usas para emitir.
¿Qué es SIRE? Los libros electrónicos de SUNAT: RVIE (Registro de Ventas) y RCE (Registro de Compras). Bajas la propuesta que arma SUNAT, la concilias, la aceptas y la registras.
Autenticación (todas las llamadas): Authorization: Bearer <api_token>. NO se envía user_id ni el certificado .pfx.
SIRE no tiene beta (producción con credenciales reales). periodo = AAAAMM.
Respuesta de la consulta (cada registro): trae los campos etiquetados al mismo nivel (no anidados)
y columnas = la fila cruda completa de SUNAT (por si necesitas algún campo extra).
Campos: origen, ruc, razon_social, periodo, car, fecha_emision, fecha_vencimiento, tipo_comprobante, serie, numero, contraparte_tipo_doc, contraparte_num_doc, contraparte_razon_social, base_imponible_gravada, igv, importe_total, moneda, tipo_cambio, en_facturador, columnas (en ventas además valor_exportacion). La contraparte = proveedor en compras / cliente en ventas.
tipo: "sale")POST /api/sire/periodos
Authorization: Bearer TU_API_TOKEN
{ "tipo": "sale" }
Parámetros: tipo="sale" (obligatorio).
POST /api/sire/ticket
Authorization: Bearer TU_API_TOKEN
{ "tipo": "sale", "periodo": "202605" }
Parámetros: tipo="sale", periodo AAAAMM. Devuelve numTicket.
POST /api/sire/consulta
Authorization: Bearer TU_API_TOKEN
{ "tipo": "sale", "periodo": "202605", "ticket": "0000000123", "page": 1 }
Parámetros: tipo, periodo, ticket (el numTicket del paso 2), page (opcional). status_code: 01 en proceso · 06 terminado.
POST /api/sire/aceptar
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605", "tipo": "sale" }
Parámetros: periodo, tipo="sale". En ventas responde directo (no ticket).
POST /api/sire/registrar
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605", "tipo": "sale" }
POST /api/sire/exportar-preliminar
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605" }
Devuelve numTicket → bájalo con /api/sire/consulta.
POST /api/sire/descargar-registro
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605", "tipo": "sale" }
POST /api/sire/constancia
Authorization: Bearer TU_API_TOKEN
{ "nom_archivo": "LE20100176450...014040002OIM2.pdf" }
Parámetros: nom_archivo (lo da SUNAT al registrar). Devuelve PDF base64.
POST /api/sire/conciliacion
Authorization: Bearer TU_API_TOKEN
{ "tipo": "sale", "periodo": "202605" }
POST /api/sire/historial
Authorization: Bearer TU_API_TOKEN
{}
POST /api/sire/descarga
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605", "tipo": "sale", "cod_proceso": "23" }
Parámetros: periodo, tipo="sale", cod_proceso (elige el reporte; ej. 23 = registro). Devuelve numTicket.
POST /api/sire/carga-masiva (multipart/form-data) Authorization: Bearer TU_API_TOKEN archivo=@LE20100176450_202605.zip periodo=202605 tipo=sale cod_proceso=1 nom_txt=LE20100176450...014040002OIM2.txt
Parámetros: archivo (.zip con el .txt SUNAT) o archivo_base64, periodo, tipo="sale", cod_proceso, nom_txt.
cod_proceso VENTAS: 1=Importar CP propuesta · 3=Reemplazo · 4=Importar CP preliminar · 6=Ajustes posteriores · 7=Ajustes periodos anteriores.
POST /api/sire/edicion
Authorization: Bearer TU_API_TOKEN
{ "op": "rvie_tipocambio_individual", "periodo": "202605", "tipo": "sale",
"body": { "codCar": "...27 dígitos...", "codMoneda": "02", "mtoTipoCambio": "3.85" } }
| op (VENTAS) | Qué hace | body (campos SUNAT) |
|---|---|---|
rvie_tipocambio_individual | Editar tipo de cambio de un CP | codCar, codMoneda, mtoTipoCambio |
rvie_tipocambio_masivo | Tipo de cambio masivo | lista de CP con su tipo de cambio |
rvie_eliminar_comprobante_propuesta | Eliminar CP de la propuesta | numCDP, codCar, codTipoCDP |
rvie_eliminar_comprobante_preliminar | Eliminar CP del preliminar | codCar, codTipoCDP, numCDP |
rvie_eliminar_reemplazo | Eliminar el reemplazo | — |
rvie_exclusion_definitiva | Exclusión definitiva NC/facturas | codCar, codSituacion |
tipo: "purchase")POST /api/sire/periodos
Authorization: Bearer TU_API_TOKEN
{ "tipo": "purchase" }
Parámetros: tipo="purchase" (obligatorio).
POST /api/sire/ticket
Authorization: Bearer TU_API_TOKEN
{ "tipo": "purchase", "periodo": "202605" }
Parámetros: tipo="purchase", periodo AAAAMM. Devuelve numTicket.
POST /api/sire/consulta
Authorization: Bearer TU_API_TOKEN
{ "tipo": "purchase", "periodo": "202605", "ticket": "0000000123", "page": 1 }
Parámetros: tipo, periodo, ticket, page. status_code: 01 / 06.
POST /api/sire/aceptar
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605", "tipo": "purchase" }
OJO compras: responde un numTicket → confírmalo con /api/sire/consulta (tipo "purchase") hasta status_code 06.
POST /api/sire/registrar
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605", "tipo": "purchase" }
POST /api/sire/exportar-preliminar
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605" }
POST /api/sire/descargar-registro
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605", "tipo": "purchase" }
POST /api/sire/constancia
Authorization: Bearer TU_API_TOKEN
{ "nom_archivo": "LE...pdf" }
POST /api/sire/conciliacion
Authorization: Bearer TU_API_TOKEN
{ "tipo": "purchase", "periodo": "202605" }
POST /api/sire/historial
Authorization: Bearer TU_API_TOKEN
{}
POST /api/sire/descarga
Authorization: Bearer TU_API_TOKEN
{ "periodo": "202605", "tipo": "purchase", "cod_proceso": "23" }
POST /api/sire/carga-masiva (multipart/form-data) Authorization: Bearer TU_API_TOKEN archivo=@LE...zip periodo=202605 tipo=purchase cod_proceso=61 nom_txt=...
Parámetros: archivo / archivo_base64, periodo, tipo="purchase", cod_proceso, nom_txt.
cod_proceso COMPRAS: 4=Importar CP preliminar · 6=Ajustes posteriores · 54=Complementar propuesta · 55=Incluir/Excluir · 56=No domiciliados · 60=No dom. en ajustes · 61=Reemplazo · 87=Nuevos comprobantes de pago.
POST /api/sire/edicion
Authorization: Bearer TU_API_TOKEN
{ "op": "rce_reintegro_credito_fiscal", "periodo": "202605", "tipo": "purchase",
"body": { "...": "campos del FV0621" } }
| op (COMPRAS) | Qué hace | body (campos SUNAT) |
|---|---|---|
rce_reintegro_credito_fiscal | Reintegro del crédito fiscal | datos FV0621 |
rce_credito_fiscal_especial | Crédito fiscal especial | datos FV0621 |
rce_coeficiente_prorrata | Coeficiente de prorrata | datosFV621.factProrrata |
rce_tipocambio_masivo | Tipo de cambio masivo | mtoTipoCambio |
rce_eliminar_comprobante_propuesta | Eliminar CP de la propuesta | numCDP, codCar, codTipoCDP |
rce_eliminar_comprobante_preliminar | Eliminar CP del preliminar | codCar, codTipoCDP, numCDP |
rce_consultar_fv0621 | Consultar FV0621 | — (GET por periodo) |
SIRE opera siempre contra producción: SUNAT no ofrece un entorno de homologación para los libros electrónicos. Por eso conviene separar las operaciones antes de automatizar: las de lectura (propuesta, consulta, descargas, reportes) se pueden ejecutar sin consecuencias, mientras que las de escritura —aceptar, registrar el preliminar, reemplazar la propuesta o eliminar— tienen efecto fiscal real sobre tu registro.