API > Documento de representación - Enviar documento
Documento de representación - Enviar documento
POST https://{entorno}.ticketbaiws.eus/doc-representante/
Sube el documento de representación (Verifactu, Bizkaia o Gipuzkoa) firmado digitalmente. Para personas físicas, lo firma el titular; para personas jurídicas, el representante legal indicado al descargar el modelo. Hay que usar un certificado reconocido (FNMT, Izenpe…). Se comprueba que el NIF de la firma coincide con el de la empresa o el del representante.
La petición se envía como multipart/form-data, no como JSON.
Empresas de Araba: este método no está disponible, porque en Araba la autorización es el registro del certificado de dispositivo (ver instrucciones). Devuelve un error:
{"result": "ERROR", "return": null, "msg": "El documento de representación no está disponible para empresas de Araba. Registra el certificado de dispositivo de Ticketbai WS en la sede de la Diputación Foral de Álava."}PARÁMETROS
| file fichero obligatorio PDF del documento de representación firmado digitalmente, enviado como campo multipart/form-data. | documento.pdf |
POST https://api.ticketbaiws.eus/doc-representante/
$ curl --request POST \
--url https://api.ticketbaiws.eus/doc-representante/ \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Token: xxx' \
--header 'Nif: 00000014Z'
--form 'file=@"/ruta/documento-firmado.pdf"'
$ composer require guzzlehttp/guzzle
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.ticketbaiws.eus/doc-representante/', [
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Token' => 'xxx',
'Nif' => '00000014Z'
],
'multipart' => [
[
'name' => 'file',
'contents' => fopen('/ruta/documento-firmado.pdf', 'r'),
'filename' => 'documento-firmado.pdf'
]
]
]);
echo $response->getBody();
$ python -m pip install requests
import requests
url = "https://api.ticketbaiws.eus/doc-representante/"
headers = {"Accept": "application/json", "Token" : "xxx", "Nif" : "00000014Z"}
files = {
"file": ("document-firmado.pdf", open("/ruta/documento-firmado.pdf", "rb"), "application/pdf")
}
response = requests.post(url, headers=headers, files=files)
print(response.text)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.ticketbaiws.eus/doc-representante/");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
// -------------------------
// FORMULARIO MULTIPART
// -------------------------
curl_mime *mime;
curl_mimepart *part;
mime = curl_mime_init(hnd);
// Campo "filename"
part = curl_mime_addpart(mime);
curl_mime_name(part, "filename");
curl_mime_data(part, "documento-firmado.pdf", CURL_ZERO_TERMINATED);
// Campo "file" → fichero real
part = curl_mime_addpart(mime);
curl_mime_name(part, "file");
curl_mime_filedata(part, "/ruta/documento-firmado.pdf");
// Asignar formulario al handle
curl_easy_setopt(hnd, CURLOPT_MIMEPOST, mime);
CURLcode ret = curl_easy_perform(hnd);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
// Archivo a enviar
File file = new File("/ruta/documento-firmado.pdf");
// Construimos el body multipart
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
// Campo "file"
.addFormDataPart(
"file", // nombre del campo
file.getName(), // nombre del archivo
RequestBody.create(file, MediaType.parse("application/pdf"))
)
// Puedes agregar más campos si el endpoint lo requiere
.addFormDataPart("filename", file.getName())
.build();
Request request = new Request.Builder()
.url("https://api.ticketbaiws.eus/doc-representante/")
.post(RequestBody)
.addHeader("Accept", "application/json")
.addHeader("Token", "xxx")
.addHeader("Nif", "00000014Z")
.build();
Response response = client.newCall(request).execute();
{ } Response JSON
HTTP/1.1 200 OK
{
"result": "OK",
"return": "Documento procesado correctamente",
"msg": null
}
Métodos TicketBAI / Verifactu
- POST Nueva factura / subsanación (zuzendu) TicketBAI / Verifactu
- POST Completar factura simplificada
- GET Consulta factura TicketBAI / Verifactu
- GET Listado facturas TicketBAI / Verifactu
- GET Descarga XML TicketBAI / Verifactu
- GET Descarga factura en formato FacturaE
- GET Descarga factura en PDF
- GET Estado sistema
- DEL Anular factura TicketBAI / Verifactu
- PUT Forzar reenvío TicketBAI / Verifactu
- POST Validar NIF en la AEAT
- POST Validar NIF en el VIES
Documento representación
- GET Documento Representación - Descargar modelo
- POST Documento Representación - Enviar documento
- GET Documento Representación - Descargar documento cargado
- DELETE Documento Representación - Revocar documento cargado
Métodos específicos para BATUZ BIZKAIA
- GET Listado de epígrafes
- POST LROE - Facturas recibidas - Envío (BATUZ)
- PUT LROE - Facturas recibidas - Modificar (BATUZ)
- GET LROE - Facturas recibidas - Consulta (BATUZ)
- DEL LROE - Facturas recibidas - Anular (BATUZ)
- POST LROE - Criterio Caja COBROS - Envío (BATUZ)
- PUT LROE - Criterio Caja COBROS - Modificar (BATUZ)
- GET LROE - Criterio Caja COBROS - Consulta (BATUZ)
- DEL LROE - Criterio Caja COBROS - Anular (BATUZ)
- POST LROE - Criterio Caja PAGOS - Envío (BATUZ)
- PUT LROE - Criterio Caja PAGOS - Modificar (BATUZ)
- GET LROE - Criterio Caja PAGOS - Consulta (BATUZ)
- DEL LROE - Criterio Caja PAGOS - Anular (BATUZ)
Factura electrónica B2B - SPFE (Ley Crea y Crece)
- POST SPFE - Comunicar pago, cobro, rechazo o impago
- GET SPFE - Consulta de pagos, cobros, rechazos e impagos
- GET SPFE - Facturas recibidas
