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

Documento representación

Métodos específicos para BATUZ BIZKAIA

Factura electrónica B2B - SPFE (Ley Crea y Crece)

Otros métodos