Recursos
Cada recurso lleva object con su tipo. Los importes son texto decimal ("118.00"), las fechas YYYY-MM-DD en hora de Lima y los instantes ISO 8601 en UTC. Los nombres son los mismos que el SDK exporta como tipos.
Customer
document_typetextoCatálogo 06 de SUNAT.
document_numbertextonametextoaddresstextopuede faltarcountry_codetextopuede faltaremailtextopuede faltar
Document
idtextoobject"document"livemodebooleanotype"20"·"31"·"40"·"01"·"03"·"07"·"08"·"09"Catálogo 01 de SUNAT.
seriestextonumberenterostatus"pending"·"accepted"·"observed"·"rejected"·"voided"issue_datetextoformato date
currencytexto o nullISO 4217; null en un comprobante sin importes, como una guía de remisión.
totaltexto o nullTexto decimal; null en un comprobante sin importes.
amountsobjeto o nullLo que Emitay calculó para el comprobante, por tipo de operación y tributo, como texto decimal; null en un comprobante que no es una venta (guías, retenciones, percepciones).
totales el importe a pagar.taxedtextoOperaciones gravadas: la base imponible, con IGV o IVAP.
exempttextoOperaciones exoneradas.
unaffectedtextoOperaciones inafectas.
igvtextoIGV del comprobante.
exportedtextopuede faltarExportación; presente solo cuando el comprobante la tiene.
freetextopuede faltarValor referencial de las operaciones gratuitas; presente solo cuando las hay.
isctextopuede faltarISC; presente solo cuando el comprobante lo tiene.
ivaptextopuede faltarIVAP; presente solo cuando el comprobante lo tiene.
icbpertextopuede faltarICBPER; presente solo cuando el comprobante lo tiene.
customerCustomerhashtextoResumen de la firma: el hash que se imprime en el comprobante.
qrtexto o nullTexto del QR de la representación impresa; null mientras no exista.
linksobjetoEnlaces públicos, que sirven sin llave de API;
cdres null hasta que SUNAT devuelve uno.pdftextoformato uri
xmltextoformato uri
cdrtexto o nullformato uri
sunatobjeto o nullcodetextodescriptiontextonoteslista de textossimulatedbooleanoTrue cuando no existe un ambiente de SUNAT contra el que probar y la respuesta es de Emitay.
voidobjeto o nullstatus"pending"·"accepted"·"rejected"reasontextorequested_attextoformato date-time
sunatobjeto o nullRespuesta de SUNAT a la baja, el resumen o la reversión; null mientras no haya respondido.
codetextodescriptiontexto
last_errortexto o nullPor qué falló el último intento de obtener la respuesta de SUNAT, mientras el comprobante está
pending; en uno ya resuelto, lo que Emitay tiene que decir de cómo se resolvió: que el plazo de SUNAT venció sin respuesta, o que no se pudo recuperar su CDR.metadataobjetoPares clave-valor libres que se guardan con el recurso y vuelven en sus respuestas, eventos y webhooks; Emitay nunca los lee. Hasta 50 claves de 40 caracteres, con valores de hasta 500.
created_attextoformato date-time
updated_attextoformato date-time
idtextoobject"email"livemodebooleanodocument_idtextotolista de textoscclista de textossubjecttexto o nullmessagetexto o nullstatus"queued"·"sent"·"failed"attemptsentero0 o más
message_idtexto o nullId que el servidor SMTP dio al mensaje al aceptarlo.
last_errortexto o nullsent_attexto o nullformato date-time
created_attextoformato date-time
updated_attextoformato date-time
Event
idtextoobject"event"type"document.accepted"·"document.observed"·"document.rejected"·"document.voided"·"document.void_failed"·"email.sent"·"email.failed"created_attextoformato date-time
livemodebooleanodataobjeto
WebhookEndpoint
idtextoobject"webhook_endpoint"livemodebooleanourltextodescriptiontexto o nulleventslista de"*"·"document.accepted"·"document.observed"·"document.rejected"·"document.voided"·"document.void_failed"·"email.sent"·"email.failed"de 1 a 8 elementos
enabledbooleanocreated_attextoformato date-time
updated_attextoformato date-time
WebhookEndpointWithSecret
idtextoobject"webhook_endpoint"livemodebooleanourltextodescriptiontexto o nulleventslista de"*"·"document.accepted"·"document.observed"·"document.rejected"·"document.voided"·"document.void_failed"·"email.sent"·"email.failed"de 1 a 8 elementos
enabledbooleanocreated_attextoformato date-time
updated_attextoformato date-time
secrettextowhsec_<base64>, la clave de la firma Standard Webhooks.
WebhookDelivery
idtextoobject"webhook_delivery"livemodebooleanoendpoint_idtextoevent_idtextostatus"pending"·"succeeded"·"failed"attemptsentero0 o más
next_attempt_attexto o nullCuándo toca el siguiente intento; null cuando ya tuvo éxito o agotó sus reintentos.
formato date-time
response_statusentero o nullEstado HTTP del último intento, cuando el endpoint respondió.
response_bodytexto o nullPrimeros 2 KB del cuerpo de la última respuesta.
duration_msentero o null0 o más
last_errortexto o nullcreated_attextoformato date-time
updated_attextoformato date-time
Layout
idtextoobject"layout"nametextoformat"a4"·"ticket80"·"ticket58"is_defaultbooleanoversionenteroVersión vigente; un comprobante recuerda aquella con la que se imprimió por primera vez.
mayor que 0
templateobjetocreated_attextoformato date-time
updated_attextoformato date-time
Company
idtextoobject"company"organization_idtexto o nullOrganización dueña de la empresa; null cuando se creó sin el panel.
ructextolegal_nametextotrade_nametexto o nulladdressobjetoubigeotextoCódigo INEI de 6 dígitos.
linetextode 1 a 200 caracteres
districttextode 1 a 100 caracteres
provincetextode 1 a 100 caracteres
departmenttextode 1 a 100 caracteres
urbanizationtextopuede faltarde 1 a 100 caracteres
establishment_codetextopuede faltarCódigo de establecimiento de SUNAT (código de local anexo); "0000" si se omite.
country_codetextopuede faltarISO 3166-1 alfa-2; "PE" si se omite.
emailtexto o nullphonetexto o nulllogo_urltexto o nullDe dónde lee el panel el logo con su sesión; null si no hay logo.
certificateobjeto o nullsubjecttextonot_aftertextoformato date-time
sol_credentialsobjeto o nullusertexto
gre_credentialsobjeto o nullclient_idtexto
smtpobjeto o nullhosttextoportenterousertextofromtexto
settingsobjetoauto_emailbooleanoEnvía un correo al cliente cuando SUNAT acepta un comprobante que trae su correo.
email_subjecttexto o nullNull usa la redacción por defecto de Emitay.
de 1 a 200 caracteres
email_messagetexto o nullde 1 a 5000 caracteres
created_attextoformato date-time
updated_attextoformato date-time
Series
object"series"livemodebooleanotype"20"·"31"·"40"·"01"·"03"·"07"·"08"·"09"seriestextonext_numberenteroNúmero que toma el siguiente comprobante de la serie cuando la petición no trae uno.
mayor que 0
RequestLog
idtextoobject"request_log"livemodebooleanoapi_key_idtexto o nullNull cuando la petición vino de una sesión del panel y no de una llave.
methodtextopathtextostatusenteroduration_msentero0 o más
request_idtexto o nullidempotency_keytexto o nullerror_typetexto o nulltypedel documento del problema, cuando la petición falló.created_attextoformato date-time
Problem
typetextotitletextostatusenterodetailtextopuede faltarerrorslista de objetospuede faltarfieldtextomessagetexto
Lo que recibe un webhook
POSTla URL de tu endpoint
Lo que Emitay envía a cada endpoint de webhook habilitado que escucha el tipo del evento. Sigue Standard Webhooks: verifica webhook-signature (HMAC-SHA256 de {webhook-id}.{webhook-timestamp}.{cuerpo} con el secreto del endpoint) antes de confiar en el cuerpo. Responde 2xx en menos de 10 segundos; cualquier otra cosa se reintenta, hasta 8 intentos, con el mismo webhook-id.
Cabeceras
webhook-idtextoobligatorioId del evento; el mismo en cada reintento.
webhook-timestamptextoobligatorioHora Unix, en segundos, de este intento.
webhook-signaturetextoobligatoriov1,<base64 del HMAC-SHA256>.
Cuerpo application/json
idtextoobligatorioobject"event"obligatoriotype"document.accepted"·"document.observed"·"document.rejected"·"document.voided"·"document.void_failed"·"email.sent"·"email.failed"obligatoriocreated_attextoobligatorioformato date-time
livemodebooleanoobligatoriodataobjetoobligatorio
Respuestas
200Recibido