1 Método POST - Registro de facturas TicketBAI
Mediante una llamada POST a la API https://mydeister.com/service/rest/{database}/tbai/v1/api/register se pueden crear documentos TBAI a partir de un JSON de entrada, y generar ficheros XML firmados electrónicamente.
La firma será de tipo avanzado XADES y los registros se preservaran con marca de tiempo.
1.1 Parámetros
El argumento que recibe el método es una cadena de caracteres en formato JSON, que incluye los campos pertenecientes a:
- Cabecera y datos de la factura: identificación de la factura (número, serie, fecha...), detalles y desglose.
- Sujetos de la factura: información sobre emisor y destinatario.
- Datos de las líneas: las líneas de cada factura se proporcionan como un conjunto, junto con los otros datos de la factura.
Los datos de la Huella TBAI y la firma electrónica se generan posteriormente, cuando creamos el mensaje XML firmado que se envía a la administración. Por lo tanto, no hay que introducirlos manualmente.
https://mydeister.com/service/rest/{database}/tbai/v1/api/register |
---|
Creación de una factura TBAI y el fichero XML firmado para el envío a la administración, y encadenamiento con la última factura enviada. Parámetros:
Resultado: Si es correcto, se devolverán los siguientes valores:
No obstante, si el resultado es incorrecto, la API devolverá el error sucedido en la ejecución. |
1.2 Campos Factura
Campo | Formato | Obligatorio | Descripción |
---|---|---|---|
emis_nif | varchar(24) | √ | Emisor, Nif o Id Fiscal |
emis_nombre | varchar(60) | √ | Emisor, nombre o razón |
emis_typ | char(2) | √ | Emisor, tipo de ident fiscal 02=NIF 03=pasaporte |
emis_pais | char(2) | √ | Emisor, jurisdicion del id. fiscal |
emis_zona | char(6) | √ | Emisor, zona fiscal |
dest_nif | char(20) | Destinatario, Nif o Id Fiscal | |
dest_nombre | varchar(60) | Destinatario, nombre o razón | |
dest_type | char(2) | Destinatario, tipo de ident fiscal | |
dest_pais | char(2) | √ | Destinatario, jurisdicion del id. fiscal |
dest_zona | char(6) | √ | Destinatario, zona fiscal |
dest_codpos | varchar(20) | Destinatario, Codigo postal | |
dest_direcc | varchar(250) | Destinatario, Direccion | |
dest_varios | char(1) | Varios destinatarios | |
dest_expter | char(1) | Expedida por tercero | |
nifrepresenta | char(9) | Nif presentador | |
niftitular | char(9) | Nif titular | |
empcode | char(4) | √ | Empresa |
agetrib | char(2) | √ | Agencia tributaria |
libro | char(2) | √ | Libro Tiquet emitido FE= Emitidas FE= Recibidas |
ejercicio | integer | √ | Ejercicio YEAR(emision) en ventas |
periodo | char(2) | √ | Periodo MONTH(emisión) en ventas |
seriefactura | varchar(20) | Serie | |
numfactura | varchar(20) | √ | Número |
fechafactura | date | √ | Fecha |
horafactura | datetime (hour to second) | √ | Hora minuto segundo |
simplificada | char(1) | Simplificada o completa | |
sustitutiva | char(1) | Sustitutiva de simplificada | |
rectificacion | char(2) | Rectificacion, Codigo R1 a R5 | |
tiporectif | char(1) | S o I Sustitucion o diferencia | |
baserec | decimal(12,2) | Base de factura rectificada | |
cuotarec | decimal(12,2) | Cuota de factura rectificada | |
recarrec | decimal(12,2) | Recargo factura rectificada | |
serrec | varchar(20) | Serie de factura rectificada | |
docrec | varchar(60) | Numero de factura rectificada | |
fecrec | date | Fecha de factura rectificada | |
fecope | date | Fecha de la operación (sólo si diferente de la fecha de expedición) | |
descoperacion | varchar(250) | √ | Descripción general operaciones |
importetotal | decimal(12,2) | √ | Importe total factura |
retencion | decimal(12,2) | Retención soportada | |
basecoste | decimal(12,2) | Base imponible a coste | |
claveoperacion | char(2) | √ | ClaveRegimenIvaOpTrascendencia 1 |
claveoperaciona1 | char(2) | ClaveRegimenIvaOpTrascendencia 2 | |
claveoperaciona2 | char(2) | ClaveRegimenIvaOpTrascendencia 3 | |
desglose | char(1) | Desglose F=Factura O=Operacion | |
taiter | smallint | √ | TAI 0=No 1=Si 2=Canarias 3 ... |
numseriedisp | char(30) | Identificador del dispositivo origen |
1.3 Campos de Líneas
Campo | Formato | Obligatorio | Descripción |
---|---|---|---|
line_type | char(1) | √ | N=normal, R=retencion, E=Recargo equivalencia |
line_nature | char(1) | √ | Clasificacion B Bienes/S Servicios |
line_nosujeta | char(2) | Operación no sujeta / no por OT / no por RL | |
line_exenta | char(2) | Causa exención null o E1 a E6 | |
line_isp | char(2) | √ | Es inversión de sujeto pasivo ISP (S1 No / S2 Si) |
line_detalle | varchar(250) | Descripción detalle de la línea de factura | |
line_cantidad | decimal(12,2) | √ | Cantidad línea de factura |
line_uniprecio | decimal(12,8) | √ | Importe unitario sin IVA de la línea |
line_descuento | decimal(12,2)n | Importe euros descuento línea de factura | |
line_basimp | decimal(14,2) | √ | Base fiscalmente imponible |
line_basimp_noex | decimal(14,2) | √ | Base fiscalmente imponible, no exenta |
line_imp_porcen | decimal(6,3) | √ | Porcentaje aplicable impuesto |
line_imp_cuoded | decimal(14,2) | √ | Cuota deducible impuesto |
line_imp_cuonded | decimal(14,2) | Cuota no deducible impuesto | |
line_equi_porcen | decimal(6,3) | Porcentaje aplicable recargo de equivalencia | |
line_equi_cuoded | decimal(14,2) | Cuota deducible recargo de equivalencia | |
line_importe | decimal(14,2) | √ | Importe neto con IVA de la línea de factura |
2 Ejemplos
Llamada a la API desde la línea de comandos de la terminal.
curl -u username:password -X POST -H "Accept: */*" -L "https://www.mydeister.com/service/rest/junit_icon/tbai/v1/api/register" -F json_data='{ "nifrepresenta" : "B62928809", "niftitular" : "B62928809", "empcode" : "GUI", "agetrib" : "03", "libro" : "FE", "descoperacion" : "Varios", "ejercicio" : 2021, "periodo" : "07", "emis_nif" : "B62928809", "emis_nombre" : "Triathlon [GUI] S.L.", "emis_type" : "02", "emis_pais" : "ES", "emis_zona" : "ESGU", "dest_nif" : "B03930393", "dest_nombre" : "ALBIR SPORT", "dest_type" : "02", "dest_pais" : "ES", "dest_zona" : "ESCO", "dest_codpos" : "03581", "dest_direcc" : "Avenida del Albir 34", "dest_varios" : "N", "dest_expter" : "N", "numfactura" : "FVNGUI21-000002", "fechafactura" : "19-07-2021", "horafactura" : "02:00:00", "sustitutiva" : "N", "fecope" : "19-07-2021", "importetotal" : 1210, "claveoperacion" : "01", "desglose" : "O", "taiter" : 1, "tipocomunicacion" : "A0", "erp_estado" : "P", "lines" : [{ "line_type" : "N", "line_nature" : "B", "line_isp" : 0, "line_detalle" : "Varios", "line_cantidad" : 1, "line_uniprecio" : 1000, "line_descuento" : 0, "line_basimp" : 1000, "line_basimp_noex" : 0, "line_imp_porcen" : 21, "line_imp_cuoded" : 210, "line_imp_cuonded" : 0, "line_equi_porcen" : 0, "line_equi_cuoded" : 0, "line_importe" : 1000 }, { "line_type" : "N", "line_nature" : "B", "line_isp" : 0, "line_detalle" : " ", "line_cantidad" : 1, "line_uniprecio" : 1000, "line_descuento" : 0, "line_basimp" : 1000, "line_basimp_noex" : 0, "line_imp_porcen" : 10, "line_imp_cuoded" : 100, "line_imp_cuonded" : 0, "line_equi_porcen" : 0, "line_equi_cuoded" : 0, "line_importe" : 1000 }] }'
Llamada a la API en JavaScript.
var json_data = { "nifrepresenta" : "B62928809", "niftitular" : "B62928809", "empcode" : "GUI", "agetrib" : "03", "libro" : "FE", "descoperacion" : "Varios", "ejercicio" : 2021, "periodo" : "07", "emis_nif" : "B62928809", "emis_nombre" : "Triathlon [GUI] S.L.", "emis_type" : "02", "emis_pais" : "ES", "emis_zona" : "ESGU", "dest_nif" : "B03930393", "dest_nombre" : "ALBIR SPORT", "dest_type" : "02", "dest_pais" : "ES", "dest_zona" : "ESCO", "dest_codpos" : "03581", "dest_direcc" : "Avenida del Albir 34", "dest_varios" : "N", "dest_expter" : "N", "numfactura" : "FVNGUI21-000002", "fechafactura" : "19-07-2021", "horafactura" : "02:00:00", "sustitutiva" : "N", "fecope" : "19-07-2021", "importetotal" : 1210, "claveoperacion" : "01", "desglose" : "O", "taiter" : 1, "tipocomunicacion" : "A0", "erp_estado" : "P", "lines" : [{ "line_type" : "N", "line_nature" : "B", "line_isp" : 0, "line_detalle" : "Varios", "line_cantidad" : 1, "line_uniprecio" : 1000, "line_descuento" : 0, "line_basimp" : 1000, "line_basimp_noex" : 0, "line_imp_porcen" : 21, "line_imp_cuoded" : 210, "line_imp_cuonded" : 0, "line_equi_porcen" : 0, "line_equi_cuoded" : 0, "line_importe" : 1000 }, { "line_type" : "N", "line_nature" : "B", "line_isp" : 0, "line_detalle" : " ", "line_cantidad" : 1, "line_uniprecio" : 1000, "line_descuento" : 0, "line_basimp" : 1000, "line_basimp_noex" : 0, "line_imp_porcen" : 10, "line_imp_cuoded" : 100, "line_imp_cuonded" : 0, "line_equi_porcen" : 0, "line_equi_cuoded" : 0, "line_importe" : 1000 }] }' let str = JSON.stringify(json_data) let url = 'tbai/v1/api/register'; let result = new Ax.net.HttpClient() .setBasicAuthorization('username','password') .post("https://mydeister.com/service/rest/junit_icon/" + url) .header("Content-Type", "application/json") .body(str) .ensureSuccess() .asJsonObject() .getBody() .toMap(); return result;