The Spanish Tax Agency (AEAT) requires 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 AEAT.For this process, the supplier can sign the agreement PDF with a valid digital certificate, 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…
Walk you through the process of creating the workflows necessary to onboard yourself and/or your suppliers (in a white-label setup)
The process of completing the supplier onboarding wizard,
Explaining the approval process and what to do in case of rejection.
-
Sandbox
Live
Supplier registration
Required (automated acceptance/rejection)
Required (documents reviewed in less than 72 hours)
{ "name": "VERI*FACTU supplier registration", "description": "Enables suppliers to register for VERI*FACTU invoice generation", "schema": "org/party", "steps": [ { "id": "74b9cf20-da92-11f0-864b-8d842f7d4ab2", "name": "Verify Spanish Tax ID (NIF/CIF)", "provider": "gov-es.lookup.verify" }, { "id": "554c7040-66d7-11f0-a392-dfb6c99d6698", "name": "Register with VERI*FACTU", "provider": "verifactu.register", "next": [], "notes": "Register a party before issuing invoices" }, { "id": "62148880-66d7-11f0-a392-dfb6c99d6698", "name": "Set State", "provider": "silo.state", "summary": "Set state to `processing`{.state .processing}", "config": { "state": "processing" }, "next": [], "notes": "Label the silo entry as 'Processing'" }, { "id": "5b924600-66d7-11f0-a392-dfb6c99d6698", "name": "Wait for Upload VERI*FACTU", "provider": "verifactu.wait.upload", "next": [], "notes": "Block the job while waiting for the end-user to complete their registration steps." }, { "id": "6bec1080-66d7-11f0-a392-dfb6c99d6698", "name": "Set State", "provider": "silo.state", "summary": "Set state to `registered`{.state .registered}", "config": { "state": "registered" }, "next": [], "notes": "The party has issuing entitlement, so label as 'Registered'" }, { "id": "670d1dc0-66d7-11f0-a392-dfb6c99d6698", "name": "Wait for Approval VERI*FACTU", "provider": "verifactu.wait.approval", "next": [], "notes": "Pending verification of uploaded documentation" } ], "rescue": [ { "id": "4be625f0-da6d-11f0-864b-8d842f7d4ab2", "name": "Unregister VERI*FACTU", "provider": "verifactu.unregister", "notes": "Disables a previously registered party from issuing invoices." }, { "id": "535bf030-da6d-11f0-864b-8d842f7d4ab2", "name": "Set State", "provider": "silo.state", "summary": "Set state to `rejected`{.state .rejected}", "config": { "state": "rejected" }, "notes": "Label the silo entry as 'Rejected'" } ]}
Before starting, review the workflows guide to understand the general setup process.In Console, create a new workflow and choose Empty Party workflow as the base. Then name the workflow with a descriptive label such as “VERI*FACTU Supplier Registration”.The new workflow will need to perform the following steps:
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.
Set State — select “Processing”.
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 VERI*FACTU immediately after the documents are uploaded.
Set State — select “Registered”.
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.
Set State — select “Registered”
Finally, in the Error Handling area, add the following steps:
Set State — select Rejected.
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.
Whether you issue invoices on behalf of third parties (white label) or under your own name, the process is essentially the same.
1
Upload a supplier
Use the Create an entry endpoint to upload a new supplier 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 AEAT). To reduce user input errors, it’s recommended filling the fields as required by the AEAT:
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.
The supplier must be previously registered with the tax authority before invoices can be issued on their behalf.
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.
The supplier must be previously registered with the tax authority before invoices can be issued on their behalf.
Set the folder to suppliers to have the party appear in this section. It should appear with an Empty status unless set otherwise.
2
Send the supplier to the registration workflow
Via API - Send the supplier to the registration workflow using the Create a job endpoint using the IDs 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.
3
Complete the registration workflow
Your own company
Third-party companies
Within the silo entry in console, select Meta and then click verifactu.invopop.com. This will launch the registration wizard for your company.
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 to retrieve the invoice and extract the meta object from the response.The meta object looks like this:
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.
The process is best explained looking at the workflow steps:
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.
Set State to Processing labels the silo entry so you know it’s in process of registration.
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 VERI*FACTU immediately after the documents are uploaded.
Set State to Registered labels the silo entry so you know registration is complete.
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.
In sandbox “Wait for supplier approval” can be configured to accept or reject suppliers.
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:
Unregister VERI*FACTU will clean up all registration processes and entitlements. You will be able to re-register the party later.
Set State to Rejected labels the silo entry so you know the registration was rejected (due to timeout or incorrect documentation).
Suppliers need to provide the following documents for Invopop to issue invoices on their behalf:
A signed direct representation agreement. If the supplier is a self-employed individual (autónomo), stamping is unnecessary.
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 such as one from the FNMT.
These documents can be collected through a multi-step web form (wizard) which enabled through the Supplier registration workflow created during setup or sent via the API if you wish to have control over the process.
Onboard suppliers through the supplier registration wizard
The supplier registration wizard walks you (or your customers) through the necessary legal requirements to issue VERI*FACTU 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:
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.
1
Welcome screen
Your customers will be met with the first page detailing the necessary documentation required for the process.
2
Information verification
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 AEAT against their tax id.
3
Download agreement
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:
If handwritten signature, legal representative’s ID (DNI/NIE/passport) and company stamp.
Please be advised that only certificates issued by accepted providers are valid. Self-signed certificates are not considered valid.
4
Upload signed agreement
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.
5
Upload ID
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.
6
Review details
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.
7
Confirmation screen
A green checkmark will indicate success, and the supplier will await approval from our team, which will be made in less than 72 hours.
If you have special needs regarding the onboarding of suppliers for VERI*FACTU (such as using third party identity verification services), it’s possible to implement your own onboarding process through the API. The process would be the following:
Create a supplier entry/silo/v1/entries/{id}
Besides the supplier’s basic information, the entry should contain a people object containing a person who will act as the legal representative of the supplier.
Create a job/transform/v1/jobs/{id}
Using the supplier registration workflow ID and Silo Entry ID.
Generate agreement PDF/apps/verifactu/v1/entry/{silo_entry_id}/agreement
The agreement file will be created with the supplier’s data.
Upload agreement PDF/apps/verifactu/v1/entry/{silo_entry_id}/agreement
Upload the agreement into the supplier’s silo entry.
Upload identity images/apps/verifactu/v1/entry/{silo_entry_id}/identity
Upload the ID into the supplier’s silo entry (can be DNI, NIE or Passport).
Confirm upload/apps/verifactu/v1/entry/{silo_entry_id}/confirm
Call this endpoint to confirm that everything has been prepared correctly and the supplier is ready to start operating.
Unregistering a supplier is essentially revoking their invoice issuing priviledges. 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:
Template
Code
Build from scratch
VERI*FACTU unregister supplier
This workflow will revoke invoice issuing privileges for a VERI*FACTU supplier.
There is no official certification for VERI*FACTU from the AEAT (the Spanish tax agency). Instead, each developer, company, or provider that implements an invoicing software must provide an electronically signed declaration where they certify that their system meets all the requirements established in the regulations. This document is binding and must be kept available for the Tax Authority.The AEAT requires that this declaration be available and always visible within the system itself, and it must include certain control elements such as the installation number, issuer data, software version, and system ID.If you are a white label user of Invopop (you issue invoices in the name of third parties), you are required to display a link to this “declaración responsable” in your software. Here is the template from the AEAT, and our own for your reference: Declaración responsable VERI*FACTU - Invopop. Some of our customers have asked us if it is necessary to mention Invopop in their declaración responable. It is not required, but we appreciate it.
Valid digital signatures for the VERI*FACTU's Supplier Agreement PDF
Digital signatures rely on certificates, but not all certificates serve as proof of identity. The Spanish Tax Agency (AEAT) accepts 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 AEAT 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 AEAT or 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. For instructions on how to make it available in Acrobat Reader to sign official documents, consult this 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 AEAT.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)