> ## Documentation Index
> Fetch the complete documentation index at: https://docs.invopop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# TicketBAI Onboarding guide

> Create and register suppliers in Spain with TicketBAI.

## Introduction

The Basque Country's provincial tax authorities (Diputaciones Forales of Álava, Gipuzkoa, and Bizkaia) require that companies and self-employed individuals (autónomos) formally authorize Invopop to issue invoices on their behalf. To comply with this regulation, the company's legal representative or *autónomo* must sign an agreement granting Invopop consent to generate and manage invoices in their name. This signed authorization ensures that all invoicing activities carried out by Invopop are legally valid and recognized by the corresponding tax authority.

For this process, the supplier can sign the agreement PDF with a valid [digital certificate](https://www.sede.fnmt.gob.es/certificados/persona-fisica), such as one issued by the FNMT, or a handwritten signature with a company stamp (*sello de empresa*), in which case the user must provide a valid ID such as DNI, NIE or passport. In the case of self-employed individuals (*autónomos*) a company stamp is not required.

This guide will...

1. Walk you through the process of creating the workflows necessary to onboard yourself and/or your suppliers (in a [white-label setup](https://docs.invopop.com/guides/use-cases/white-label))
2. The process of completing the supplier onboarding wizard,
3. Explaining the approval process and what to do in case of rejection.

## Set-up

<Steps>
  <Step title="Connect the Spain app">
    1. Go to **Configuration** → **Apps** in the [Console](https://console.invopop.com).
    2. Find **Spain** in the app list.
    3. Click **Connect** to activate the app.

    <Frame>
      <img width="600" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-spain-app.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=65c63184ad6201dc7c53f22ec2144486" alt="Spain app connected" data-path="assets/guides/es-spain-app.png" />
    </Frame>
  </Step>

  <Step title="Create a supplier registration workflow">
    Create a new workflow for registering suppliers. Start with the template below:

    <Tabs>
      <Tab title="Template">
        <Card title="TicketBAI supplier registration workflow" icon="code-branch" iconType="duotone" href="https://console.invopop.com/redirect/workflows/new?template=es-ticketbai-supplier-registration" cta="Add to my workspace">
          This workflow will issue a registration request for a supplier to complete.
        </Card>
      </Tab>

      <Tab title="Code">
        Copy and paste into a new [Empty Party workflow](https://console.invopop.com/redirect/workflows/new?template=empty-party) code view.

        ```json Example TicketBAI register supplier workflow theme={"system"}
        {
            "name": "TicketBAI register supplier",
            "description": "Register a supplier with TicketBAI",
            "schema": "org/party",
            "steps": [
                {
                    "id": "554c7040-66d7-11f0-a392-dfb6c99d6698",
                    "name": "Register supplier with TicketBAI",
                    "provider": "gov-es.ticketbai.register"
                },
                {
                    "id": "62148880-66d7-11f0-a392-dfb6c99d6698",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `processing`{.state .processing}",
                    "config": {
                        "state": "processing"
                    }
                },
                {
                    "id": "5b924600-66d7-11f0-a392-dfb6c99d6698",
                    "name": "Wait for TicketBAI supplier agreement upload",
                    "provider": "gov-es.ticketbai.wait.upload"
                },
                {
                    "id": "6bec1080-66d7-11f0-a392-dfb6c99d6698",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `registered`{.state .registered}",
                    "config": {
                        "state": "registered"
                    }
                },
                {
                    "id": "670d1dc0-66d7-11f0-a392-dfb6c99d6698",
                    "name": "Wait for TicketBAI supplier approval",
                    "provider": "gov-es.ticketbai.wait.approval"
                }
            ],
            "rescue": [
                {
                    "id": "76c13260-66d7-11f0-a392-dfb6c99d6698",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```
      </Tab>

      <Tab title="Build from scratch">
        Before starting, review the [workflows guide](/guides/features/workflows) to understand the general setup process.

        In [Console](https://console.invopop.com), create a new workflow and choose [Empty Party workflow](https://console.invopop.com/redirect/workflows/new?template=empty-party) as the base. Then name the workflow with a descriptive label such as "TicketBAI Supplier Registration".

        The new workflow will need to perform the following steps:

        1. **Register supplier** - will generate a unique URL and add it into a `url` key value within the `meta` property. You would add a webhook after this step to notify the supplier.
        2. **Set state** — select "Processing".
        3. **Wait for supplier registration** - waits for the supplier to upload the required documents (signed agreement and ID). The supplier will be entitled to issue invoices through TicketBAI immediately after the documents are uploaded.
        4. **Set state** — select "Registered".
        5. **Wait for supplier approval** - In live environments, Invopop will review the documents provided by the supplier in less than 72 hours. In sandbox, you can configure the workflow step to accept or reject providers. Open rejection the workflow will error with a `KO` and the reason for rejection can be reviewed in the Supplier or in the executed job. The supplier's invoice issuing entitlement will be revoked immediately.
        6. **Set state** — select "Registered"

        Finally, in the Error Handling area, add the following steps:

        1. **Set state** — select `Rejected`.
        2. **Unregister supplier** - will clear the registration attempt allowing you to re-register them later.

        Add any additional steps you may need, and save the new workflow.
      </Tab>
    </Tabs>
  </Step>
</Steps>

### Create a supplier entry

Whether you issue invoices on behalf of third parties ([white label](/guides/use-cases/white-label)) or under your own name, the process is essentially the same.

<Steps>
  <Step title="Upload a supplier">
    Use the [Create an entry](/api-ref/silo/entries/create-an-entry-put) endpoint to upload a new supplier [party](https://docs.gobl.org/draft-0/org/party) (example below). Strictly required fields are company `name` and `tax_id` (the supplier will be able to supplement the information as required by the corresponding Diputación Foral). To reduce user input errors, it's recommended filling the fields as completely as possible:

    <AccordionGroup>
      <Accordion title="Spanish company">
        To register a company supplier in Spain you must provide:

        * **Company information**: name, NIF (tax identification number), and address
        * **Legal representative information**: full name, government ID type and number (DNI, NIE, or passport), and address

        The legal representative is the person authorized to sign the representation agreement on behalf of the company.

        <Note>
          The supplier must be [previously registered](https://docs.invopop.com/guides/es-verifactu-supplier#create-a-supplier-entry) with the tax authority before invoices can be issued on their behalf.
        </Note>

        <CodeGroup>
          ```json Spain supplier example theme={"system"}
          {
            "$schema": "https://gobl.org/draft-0/org/party",
            "name": "Invopop S.L.",
            "tax_id": {
              "country": "ES",
              "code": "B85905495"
            },
              "people": [
                  {
                      "name": {
                          "given": "Juan",
                          "surname": "Pérez González"
                      },
                      "identities": [
                          {
                              "key": "national",
                              "code": "123456789A"
                          }
                      ],
                      "addresses": [
                          {
                              "num": "10",
                              "street": "Calle Ejemplo",
                              "locality": "Madrid",
                              "region": "Madrid",
                              "code": "28020",
                              "country": "ES"
                          }
                      ]
                  }
              ],
            "addresses": [
              {
                "num": "42",
                "street": "Calle Pradillo",
                "locality": "Madrid",
                "region": "Madrid",
                "code": "28002",
                "country": "ES"
              }
            ],
            "emails": [
              {
                "addr": "billing@example.com"
              }
            ]
          }
          ```
        </CodeGroup>
      </Accordion>

      <Accordion title="Spanish autónomo">
        An *autónomo* is self-employed individuals in Spain who operate as sole proprietors. To register them, a NIF (tax id number) with the corresponding full name and address must be provided.

        Unlike company suppliers, autónomos do not require separate legal representative information since the individual is the authorized signatory.

        <Note>
          The supplier must be [previously registered](https://docs.invopop.com/guides/es-verifactu-supplier#create-a-supplier-entry) with the tax authority before invoices can be issued on their behalf.
        </Note>

        <CodeGroup>
          ```json Spain autónomo supplier example theme={"system"}
          {
            "$schema": "https://gobl.org/draft-0/org/party",
            "name": "Juan Pérez González",
            "tax_id": {
              "country": "ES",
              "code": "B85905495"
            },
            "addresses": [
              {
                "num": "42",
                "street": "Calle Pradillo",
                "locality": "Madrid",
                "region": "Madrid",
                "code": "28002",
                "country": "ES"
              }
            ],
            "emails": [
              {
                "addr": "autonomo@example.com"
              }
            ]
          }
          ```
        </CodeGroup>
      </Accordion>
    </AccordionGroup>

    Set the `folder` to `suppliers` to have the party appear in this section. It should appear with an `Empty` status unless set otherwise.

    <Frame caption="Upload supplier to Invopop">
      <img width="600" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-supplier-2.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=f34e1ea314e7df9ce4c5f521c56638d4" alt="Upload supplier to Invopop" data-path="assets/guides/es-ticketbai-supplier-2.png" />
    </Frame>
  </Step>

  <Step title="Send the supplier to the registration workflow">
    * **Via API** - Send the supplier to the registration workflow using the [Create a job](/api-ref/transform/jobs/create-a-job-post) endpoint using the `ID`s of the **silo entry** and **supplier registration workflow**.
    * **Via Console** - From the Silo Entry select "Run workflow" and select the **supplier registration workflow**.

    The supplier's status will change to `Processing` while waiting for supplier registration and verification.
  </Step>

  <Step title="Complete the registration workflow">
    <Tabs>
      <Tab title="Your own company">
        Within the silo entry in console, select **Meta** and then click **ticketbai.invopop.com**. This will launch the registration wizard for your company.

        <Frame>
          <img width="420" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-entry-meta.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=9cc64cb9b77452b06fb3edb015d7af3f" alt="Supplier entry meta" data-path="assets/guides/es-ticketbai-entry-meta.png" />
        </Frame>
      </Tab>

      <Tab title="Third-party companies">
        Add a webhook before the **Wait for supplier registration** step to obtain the registration link. The webhook payload contains the `siloEntryId`, not the `meta` object directly. Use the [Fetch an Entry endpoint](/api-ref/silo/entries/fetch-an-entry) to retrieve the invoice and extract the `meta` object from the response.

        The `meta` object looks like this:

        <Accordion title="Example supplier meta registration link">
          ```
          data: {
            ...
            "meta": [
              {
                "id": "...",
                "created_at": "2025-11-05T15:10:28.132Z",
                "updated_at": "2025-11-14T15:56:53.727Z",
                "owner_id": "...",
                "entry_id": "...",
                "src": "ticketbai",
                "key": "link",
                "ref": "EgDeG3pDBDe",
                "link_url": "https://ticketbai.invopop.com/reg/EgDeG3pDBDe",
                "link_scope": "public",
                "indexed": true,
                "shared": true
              }
            ]
          }
          ```
        </Accordion>

        Forward the `link_url` to your customer.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Wait for approval">
    The supplier will be entitled to issue invoices as soon as they submit their documentation, and will only be revoked if there was a problem with their documentation.

    Invopop's commitment is to review agreement documentation in less than 72 hours. However, in practice this will happen in less than 24 hours if the wizard is completed in workdays.

    Once registration wizard has been completed, the supplier's status will change to `Registered`. If not successful because the supplier did not complete the process or their documentation was rejected, the status will change to `Rejected`, and you can inspect the job history of this document to see the reason.

    <Frame caption="Supplier registered successfully">
      <img width="600" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-supplier-1.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=0a422923f5f8b4c2b7f336f77e2c4313" alt="Supplier registered" data-path="assets/guides/es-ticketbai-supplier-1.png" />
    </Frame>
  </Step>
</Steps>

<Warning>If a supplier's agreement documentation is rejected and you need to onboard them again, follow the instructions in [what happens if a supplier validation is rejected](#what-happens-if-a-supplier-validation-is-rejected)</Warning>

## How TicketBAI supplier registration works

The process is best explained looking at the workflow steps:

<Frame caption="Supplier Registration Workflow">
  <img width="376" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-register-supplier.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=46259a7251910265d33cfed3901917cc" alt="Supplier Registration Workflow" data-path="assets/guides/es-ticketbai-register-supplier.png" />
</Frame>

1. **Register supplier** will generate a unique URL and add it into a `url` key value within the `meta` property. You would add a webhook after this step to notify the supplier.
2. **Set state to Processing** labels the silo entry so you know it's in process of registration.
3. **Wait for supplier registration** waits for the supplier to upload the required documents (signed agreement and ID). The supplier will be entitled to issue invoices through TicketBAI immediately after the documents are uploaded.
4. **Set state to Registered** labels the silo entry so you know registration is complete.
5. **Wait for supplier approval** In live environments, Invopop will review the documents provided by the supplier in less than 72 hours. In sandbox, you can configure the workflow step to accept or reject providers. Open rejection the workflow will error with a `KO` and the reason for rejection can be reviewed in the Supplier or in the executed job. The supplier's invoice issuing entitlement will be revoked immediately.

<Note>In sandbox "Wait for supplier approval" can be configured to accept or reject suppliers.</Note>

**Error flow:** if the supplier's documentation is rejected, or the supplier does not complete the registration within the job's time limit (100 days) a `KO` will be generated, triggering the error flow. Then these steps will be run:

1. **Unregister supplier with TicketBAI** will clean up all registration processes and entitlements. You will be able to re-register the party later.
2. **Set state to Rejected** labels the silo entry so you know the registration was rejected (due to timeout or incorrect documentation).

## Register a supplier

Suppliers need to provide the following documents for Invopop to issue invoices on their behalf:

1. A signed direct representation agreement. If the supplier is a self-employed individual (*autónomo*), stamping is unnecessary.
2. A copy of signatory's fiscal ID (DNI/NIE or passport in the case of non-residents) if the agreement is not signed with a valid [digital certificate](https://www.sede.fnmt.gob.es/certificados/persona-fisica) such as one from the FNMT.

These documents can be collected through a multi-step web form (*wizard*) which is enabled through the *Supplier registration workflow* created during [setup](#set-up).

### Onboard suppliers through the supplier registration wizard

The supplier registration wizard walks you (or your customers) through the necessary legal requirements to issue TicketBAI invoices. Each issuer must submit a signed representation agreement between Invopop and the issuer, along with documentation proving their legal authority to enter into such an agreement.

Once you run the Supplier Registration Workflow, you will find the `link_url` in the `meta` property of the supplier entry. Here is an example API response:

<Accordion title="Example supplier meta registration link">
  ```
  data: {
    ...
    "meta": [
      {
        "id": "...",
        "created_at": "2025-11-05T15:10:28.132Z",
        "updated_at": "2025-11-14T15:56:53.727Z",
        "owner_id": "...",
        "entry_id": "...",
        "src": "ticketbai",
        "key": "link",
        "ref": "EgDeG3pDBDe",
        "link_url": "https://ticketbai.invopop.com/reg/EgDeG3pDBDe",
        "link_scope": "public",
        "indexed": true,
        "shared": true
      }
    ]
  }
  ```
</Accordion>

In console, you will find the link in the `Meta` tab in the right sidebar of the supplier's entry.

This wizard can be embedded as an `iframe` to onboard your customers without leaving your product or platform.

<Steps>
  <Step title="Welcome screen">
    <Frame>
      <img width="400" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-supplier-wizard-1.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=2a4b93424a44f7c646e0312d0097b5a4" alt="Supplier registration wizard" data-path="assets/guides/es-ticketbai-supplier-wizard-1.png" />
    </Frame>

    Your customers will be met with the first page detailing the necessary documentation required for the process.
  </Step>

  <Step title="Information verification">
    <Frame>
      <img width="400" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-supplier-wizard-2.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=0d03c407040a1f92e8ac4cab28f59648" alt="Supplier registration wizard" data-path="assets/guides/es-ticketbai-supplier-wizard-2.png" />
    </Frame>

    The user can edit personal or company information. If the user is a self-employed individual, only the company information block will appear. Such individuals should enter their real name in the "Nombre" field, as this is matched by the corresponding tax authority against their tax id.
  </Step>

  <Step title="Download agreement">
    <Frame>
      <img width="400" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-supplier-wizard-3.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=f446ffb434c25e7269a8e5b7a5b2ad6a" alt="Supplier registration wizard" data-path="assets/guides/es-ticketbai-supplier-wizard-3.png" />
    </Frame>

    On the following page, the issuer can download and sign their agreement. The details from the previous page will auto-populate into the contract.

    The issuer (you, or your customer) will require the following:

    1. **Self-employed individuals (autónomos)**
       * Signed agreement (handwritten signature or e-signature with the [FNMT's Certificado Electrónico de Ciudadano](https://www.sede.fnmt.gob.es/certificados/persona-fisica))
       * National ID (DNI/NIE) if handwritten signature.
    2. **Companies**
       * Signed agreement (handwritten signature or e-signature with the [FNMT's Certificado Electrónico de Representante](https://www.sede.fnmt.gob.es/certificados/certificado-de-representante/persona-juridica))
       * If handwritten signature, legal representative's ID (DNI/NIE/passport) and company stamp.

    Please be advised that only certificates issued by [accepted providers](#legal-information) are valid. Self-signed certificates are not considered valid.
  </Step>

  <Step title="Upload signed agreement">
    <Frame>
      <img width="400" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-supplier-wizard-4.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=990e4605af761eb7c9621509b029e617" alt="Supplier registration wizard" data-path="assets/guides/es-ticketbai-supplier-wizard-4.png" />
    </Frame>

    Issuers select the type of signature they used and upload their document. If digital signature is selected, the following step will be skipped as a signature through a FNMT digital certificate counts as a proof of identification.
  </Step>

  <Step title="Upload ID">
    <Frame>
      <img width="400" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-supplier-wizard-5.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=1f35a37c03bbee29d999e3871e0fa872" alt="Supplier registration wizard" data-path="assets/guides/es-ticketbai-supplier-wizard-5.png" />
    </Frame>

    The legal representative or *autónomo* upload a scan or clear photo of their ID in a valid image format (JPG or PNG). The ID should ideally be a DNI/NIE, as passports are only used when the person is not entitled to have one.

    Both the front and reverse of the ID should be submitted here. If the ID is a passport (only valid for non-Spanish residents who are representatives of a company), they can upload the main page of their passport both times.
  </Step>

  <Step title="Review details">
    <Frame>
      <img width="400" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-supplier-wizard-6.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=34d2f7eba5bec8e5e24c2ed668cdc720" alt="Supplier registration wizard" data-path="assets/guides/es-ticketbai-supplier-wizard-6.png" />
    </Frame>

    This page provides a summary of information so the user can verify they have submitted the correct data. Any corrections can be easily made through the edit function.
  </Step>

  <Step title="Confirmation screen">
    <Frame>
      <img width="400" src="https://mintcdn.com/invopop/OLhWDqggfv_DoyqR/assets/guides/es-ticketbai-supplier-wizard-7.png?fit=max&auto=format&n=OLhWDqggfv_DoyqR&q=85&s=5e3c832c857a3440a66769262351ee76" alt="Supplier registration wizard" data-path="assets/guides/es-ticketbai-supplier-wizard-7.png" />
    </Frame>

    A green checkmark will indicate success, and the supplier will await approval from our team, which will be made in less than 72 hours.
  </Step>
</Steps>

## Unregister a supplier

Unregistering a supplier is essentially revoking their invoice issuing privileges. You might need to unregister an entity because the supplier is no longer your client or because of a change in their Tax ID. To do so, use the following workflow template:

<Tabs>
  <Tab title="Template">
    <Card title="TicketBAI unregister supplier" icon="code-branch" iconType="duotone" href="https://console.invopop.com/redirect/workflows/new?template=es-ticketbai-unregister" cta="Add to my workspace">
      This workflow will revoke invoice issuing privileges for a TicketBAI supplier.
    </Card>
  </Tab>

  <Tab title="Code">
    Copy and paste into a new [Empty Party workflow](https://console.invopop.com/redirect/workflows/new?template=empty-party) code view.

    ```json Example TicketBAI unregister supplier workflow theme={"system"}
    {
        "name": "TicketBAI unregister supplier",
        "description": "Unregister a supplier from TicketBAI",
        "schema": "org/party",
        "steps": [
            {
                "id": "8a613610-67ba-11f0-bcaf-170efff782a9",
                "name": "Unregister supplier from TicketBAI",
                "provider": "gov-es.ticketbai.unregister"
            },
            {
                "id": "96a6b0d0-67ba-11f0-bcaf-170efff782a9",
                "name": "Set state",
                "provider": "silo.state",
                "summary": "Set state to `void`{.state .void}",
                "config": {
                    "state": "void"
                }
            }
        ],
        "rescue": [
            {
                "id": "e8d2a6b0-67bb-11f0-bcaf-170efff782a9",
                "name": "Set state",
                "provider": "silo.state",
                "summary": "Set state to `error`{.state .error}",
                "config": {
                    "state": "error"
                }
            }
        ]
    }
    ```
  </Tab>

  <Tab title="Build from scratch">
    In [Console](https://console.invopop.com) create a new workflow and select [Empty Party workflow](https://console.invopop.com/redirect/workflows/new?template=empty-party) in the template selector, then add the following steps:

    1. **Unregister supplier** - Revokes invoice issuing authorization by the corresponding Basque tax authority.
    2. **Set state** - Select `void` to label the supplier accordingly.

    In the Error Handling section, add the **Set state** action and select `Error`.
  </Tab>
</Tabs>

## Legal information

<AccordionGroup>
  <Accordion title="TicketBAI representation agreement">
    The Basque provincial tax authorities require that invoicing software providers acting on behalf of third parties have a signed representation agreement. This agreement authorizes Invopop to generate and submit invoices to the corresponding Diputación Foral on behalf of the supplier.
  </Accordion>

  <Accordion title="Valid digital signatures for the TicketBAI Supplier Agreement PDF">
    Digital signatures rely on certificates, but not all certificates serve as proof of identity. The Basque provincial tax authorities accept only qualified certificates—those issued by an authority that has verified the holder's identity in advance.

    For individuals, this means using an official certificate from an accredited provider such as the FNMT. Obtaining that certificate requires submitting your ID and completing identity verification. Because this process already confirms who you are, the tax authority treats the resulting digital signature as legally binding identification. As a result, no additional identity check is needed during registration.

    In contrast, certificates generated directly by applications like Adobe Acrobat do not involve any identity verification. They are self-signed and therefore cannot be used for official submissions or as valid digital signatures in government procedures.

    If you wish to obtain a certificate that is valid for most (if not all) Spanish government procedures, you can do so by following the procedure on [certificates page of the FNMT](https://www.sede.fnmt.gob.es/certificados/persona-fisica). For instructions on how to make it available in Acrobat Reader to sign official documents, consult [this PDF](https://www.sede.fnmt.gob.es/documents/10445900/10528353/Firmar_documento_PDF_Adobe_Acrobat_Reader_DC.pdf).

    Otherwise, we require the secondary procedure of signing the document by handwritten signature, and an official ID as proof of identity as required by the tax authority.

    The following certificate providers are accepted:

    * AC ABOGACÍA
    * ANF AC
    * ANF CA
    * BEWOR
    * CAMERFIRMA
    * CENTRO TECNOLÓGICO DEL NOTARIADO
    * CERES FÁBRICA NACIONAL DE MONEDA Y TIMBRE - REAL CASA DE LA MONEDA, E.P.E, M.P. (FNMT-RCM)
    * CONSORCI AOC (CATCERT)
    * DEH ONLINE
    * DIGITEL TS
    * DIRECCIÓN GENERAL DE LA POLICÍA
    * DOCUTEN
    * EADTRUST
    * EDICOM
    * ESFIRMA
    * FIRMAFY
    * FIRMAPROFESIONAL, S.A.
    * INDIZE
    * IZENPE, S.A.
    * LLEIDANET PKI
    * LOGALTY SERVICIOS DE TERCERO DE CONFIANZA S.L.
    * MINISTERIO DE DEFENSA DE ESPAÑA
    * PERMISSO
    * REGISTRADORES DE ESPAÑA
    * SECTIGO
    * SIA
    * SIGNATURIT- IVNOSYS
    * SIGNE AUTORIDAD DE CERTIFICACIÓN
    * SIGNICAT SPAIN
    * UANATACA
    * VALIDATED ID
    * VINTEGRIS
  </Accordion>
</AccordionGroup>

## FAQ

<AccordionGroup>
  <Accordion title="What are the most common reasons for failing supplier approval?">
    We reject agreements when:

    * The uploaded document is not signed (they upload the unsigned template).
    * Users upload a handwritten signature without and ID.
    * The electronic signature is made with an FNMT certificate.
    * The agreement is missing a date or location.
    * The name is entered as an email address.

    The job will state the reason for rejection.
  </Accordion>

  <Accordion title="What happens if a supplier does not complete their registration within the allotted wait time?">
    A KO will be triggered and the supplier will be labelled with the `Error` state. We currently recommend sending a reminder to the supplier through a webhook.

    The registration link will not expire and the entity will still be able to upload their registration documents which will be validated. Should you choose to run this workflow again using this supplier, the supplier will be accepted or rejected immediately because the required documentation has already been provided and validated.
  </Accordion>

  <Accordion title="What happens if a supplier validation is rejected?">
    If the uploaded agreement documents were rejected, a KO will be triggered and the supplier will be labelled with the `Error` state. We currently recommend sending a notification to the supplier through a webhook within the **Error Handling** section.

    Afterwards, if you wish to re-register the supplier with new documents, you must:

    1. Unregister the supplier using the **Unregister Supplier workflow**.
    2. Re-run the Register supplier workflow.

    This will restart the entire registration process. When uploading documents, the previously submitted agreement will appear selected by default. Simply choose a new file and click `Continue` to override the old one. See the image below for reference:

    <Frame caption="Overriding the previously submitted agreement">
      <img width="600" src="https://mintcdn.com/invopop/fWniCD0icTwRKXxR/assets/guides/es-verifactu-update-agreement.png?fit=max&auto=format&n=fWniCD0icTwRKXxR&q=85&s=a20bb8dd02df632d114e0519f4d34899" alt="Overriding the previously submitted agreement" data-path="assets/guides/es-verifactu-update-agreement.png" />
    </Frame>
  </Accordion>

  <Accordion title="What is the minimum information required to register a supplier?">
    In order to complete the representation agreement you will need to provide the following information:

    **Company**

    1. Name
    2. NIF
    3. Address

    **Legal representative**

    1. Full name
    2. Government ID type and number
    3. Address

    ```json Spain supplier example theme={"system"}
    {
      "$schema": "https://gobl.org/draft-0/org/party",
      "name": "Invopop S.L.",
      "tax_id": {
        "country": "ES",
        "code": "B85905495"
      },
        "people": [
            {
                "name": {
                    "given": "Juan",
                    "surname": "Pérez González"
                },
                "identities": [
                    {
                        "key": "national",
                        "code": "123456789A"
                    }
                ],
                "addresses": [
                    {
                        "num": "10",
                        "street": "Calle Ejemplo",
                        "locality": "Madrid",
                        "region": "Madrid",
                        "code": "28020",
                        "country": "ES"
                    }
                ]
            }
        ],
      "addresses": [
        {
          "num": "42",
          "street": "Calle Pradillo",
          "locality": "Madrid",
          "region": "Madrid",
          "code": "28002",
          "country": "ES"
        }
      ],
      "emails": [
        {
          "addr": "billing@example.com"
        }
      ]
    }
    ```

    If the entity is an self-employed individual (*autónomo*), only the information requested in in the **Legal representative** section is required.

    ```json Spain autónomo supplier example theme={"system"}
    {
      "$schema": "https://gobl.org/draft-0/org/party",
      "name": "Juan Pérez González",
      "tax_id": {
        "country": "ES",
        "code": "B85905495"
      },
      "addresses": [
        {
          "num": "42",
          "street": "Calle Pradillo",
          "locality": "Madrid",
          "region": "Madrid",
          "code": "28002",
          "country": "ES"
        }
      ],
      "emails": [
        {
          "addr": "autonomo@example.com"
        }
      ]
    }
    ```
  </Accordion>

  <Accordion title="What methods are available to sign the PDF supplier agreements?">
    The supplier can add their electronic signature to the PDF document ([instructions](https://helpx.adobe.com/acrobat/using/signing-pdfs.html)), or sign with a handwritten signature (we recommend using [Adobe's online service](https://www.adobe.com/acrobat/online/sign-pdf.html).
  </Accordion>

  <Accordion title="What is the file size limit for the documents provided in the supplier registration flow">
    Individual documents are limited to a maximum size of 10MB. Uploads exceeding this size will result in an error.
  </Accordion>

  <Accordion title="How do I register a supplier with TicketBAI?">
    Run the TicketBAI Register Supplier workflow. The legal representative signs the agreement (electronic or handwritten + ID); the supplier's foral territory determines which Diputación Foral endpoint Invopop will submit to.
  </Accordion>

  <Accordion title="What certificates does TicketBAI require to authenticate a supplier?">
    None — Invopop uses its own *certificado sello de empresa* (one of the three TicketBAI-permitted types). Suppliers do not need to register with the foral tax authority or upload any certificate.
  </Accordion>
</AccordionGroup>

More available in our [Spain FAQ](/faq/spain) section

***

<AccordionGroup>
  <Accordion title="🇪🇸 Invopop resources for Spain">
    |            |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
    | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | Compliance | <Icon icon="https://assets.invopop.com/flags/es.svg" /> [Invoicing compliance in Spain](/compliance/spain)<br /> <Icon icon="timeline" /> [Compliance timeline](/timelines/spain)                                                                                                                                                                                                                                                                                                                   |
    | Apps       | <Icon icon="https://assets.invopop.com/apps/gov-es/icon.svg" /> [Spain](/apps/spain)<br /> <Icon icon="https://assets.invopop.com/apps/verifactu/icon.svg" /> [VERI\*FACTU Spain](/apps/verifactu-spain)<br /><Icon icon="https://assets.invopop.com/apps/ticketbai/icon.svg" /> [TicketBAI Spain](/apps/ticketbai-spain)                                                                                                                                                                           |
    | Guides     | <Icon icon="book" /> [Facturae Guide](/guides/es-facturae)<br /><Icon icon="book" /> [VERI\*FACTU Invoicing Guide](/guides/es-verifactu)<br /><Icon icon="book" /> [VERI\*FACTU Supplier Onboarding](/guides/es-verifactu-supplier)<br /><Icon icon="book" /> [SII Invoicing Guide](/guides/es-sii)<br /><Icon icon="book" /> [SII Supplier Onboarding](/guides/es-sii-supplier)<br /><Icon icon="book" /> [TicketBAI Guide](/guides/es-ticketbai)                                                  |
    | FAQ        | <Icon icon="square-question" /> [Spain FAQ](/faq/spain)                                                                                                                                                                                                                                                                                                                                                                                                                                             |
    | GOBL       | <Icon icon="https://assets.invopop.com/icons/gobl.svg" />  [Spain Tax Regime](https://docs.gobl.org/regimes/es)<br /> <Icon icon="https://assets.invopop.com/icons/gobl.svg" /> [VERI\*FACTU Addon](https://docs.gobl.org/addons/es-verifactu-v1)<br /> <Icon icon="https://assets.invopop.com/icons/gobl.svg" /> [Facturae Addon](https://docs.gobl.org/addons/es-facturae-v3)<br /> <Icon icon="https://assets.invopop.com/icons/gobl.svg" /> [SII Addon](https://docs.gobl.org/addons/es-sii-v1) |
    | GitHub     | <Icon icon="github" /> [gobl.facturae](https://github.com/invopop/gobl.facturae)<br /><Icon icon="github" /> [gobl.verifactu](https://github.com/invopop/gobl.verifactu)<br /> <Icon icon="github" /> [gobl.ticketbai](https://github.com/invopop/gobl.ticketbai)                                                                                                                                                                                                                                   |
  </Accordion>
</AccordionGroup>

<Card title="Participate in our community" icon="forumbee" href="https://community.invopop.com" arrow="true" horizontal>
  Ask and answer questions about invoicing in Spain →
</Card>
