---
title: "Submit invoice to TicketBAI (Bizkaia BATUZ)"
method: POST
path: "/v1/invoices/{invoiceId}/ticketbai/submit"
tags: ["E-Invoicing"]
---

# Submit invoice to TicketBAI (Bizkaia BATUZ)

`POST /v1/invoices/{invoiceId}/ticketbai/submit`

## Request

- Base URL: `https://api.frihet.io`
- URL: `https://api.frihet.io/v1/invoices/{invoiceId}/ticketbai/submit`
- Auth: API key in header `X-API-Key`

Submit a signed TicketBAI XML to the Bizkaia BATUZ tax authority.

Pipeline: fetch BYOC cert → compute hash chain → build TicketBAI XML →
sign with XAdES-BES → submit to BATUZ → generate QR code.
Result persisted to `invoices/{id}/tbai/submission` subdoc.

**Idempotent**: if the invoice was already accepted, returns the prior result
with `idempotent: true` — does not resubmit.

**Trust Area: COMPLIANCE** — Requires owner role or API key with `einvoice:*` scope.
Requires a TicketBAI BYOC certificate uploaded in Settings > Integrations > TicketBAI.

## Path parameters

- `invoiceId` string, required

## Request body

- object
  - `sandbox` boolean: Override to sandbox mode (default from user integration config).

## Response `200`

TicketBAI submission accepted

- object
  - `data` object
    - `accepted` boolean
    - `csv` string: CSV de verificación (never fabricated)
    - `tbaiIdentifier` string: TicketBAI identifier string
    - `qrUrl` string: QR code URL for invoice printing
    - `idempotent` boolean: Present and true when returning a prior accepted submission

## Other responses

- `400`: Bad request - invalid parameters or request body
- `401`: Authentication required or invalid API key
- `403`: Insufficient permissions
- `404`: Resource not found
- `422`: TicketBAI rejection, certificate missing, or chain broken
- `429`: Rate limit exceeded (100 requests per minute)
- `500`: Internal server error

---

[API](https://skmtc.dev/frihet/apis/frihet-api.md) · [All operations](https://skmtc.dev/frihet/apis/frihet-api/llms.txt) · [OpenAPI document](https://skmtc.dev/frihet/apis/frihet-api/revisions/3dd37f6a72d1?raw)
