## Documentation Index Access the complete documentation index at: https://www.zoho.com/en-fr/books/help/llms.txt Use this file to discover all available documentation pages before proceeding. # VeriFactu in Zoho Books Spain is introducing mandatory VeriFactu compliance for all transactions. All VAT-registered businesses that pay Corporate Income Tax in Spain and are not subject to the SII Reporting mandate will be required to adapt VeriFactu system for all their domestic transactions starting 1 January 2026. Self-employed individuals, freelancers, and smaller enterprises are required to adapt VeriFactu starting 1 July 2026. ## How does VeriFactu work in Zoho Books? **1\. Overview** B2Brouter is a certified e-invoicing service provider that facilitates the exchange of electronic documents such as invoices. Zoho Books uses B2Brouter as the authorized service provider for sending invoices to AEAT. **2\. Send Invoices** * You have to create a B2Brouter account to push invoices to AEAT from Zoho Books. * After you enable VeriFactu in Zoho Books, the invoices can only be created in _Draft_ status. * You can then verify the details and push it to AEAT. * B2Brouter checks the invoices and transmits them to AEAT securely. * Once validated by AEAT, a QR code will be added to the invoice, and a notification is sent to your system with the invoice status. * You can then share this invoice with your customers through your preferred communication channel. **Note:** Zoho Books does not charge for pushing invoices to B2Brouter. The number of invoices you can send depends on your B2Brouter plan. Any addons should also be purchased directly from B2Brouter. **3\. Handle Failed Invoices** * If an invoice is failed to be pushed to AEAT, you will receive a notification that includes the reason for rejection. * You can edit the invoice and push it to AEAT again. **4\. Make Changes to Pushed Invoices** * You cannot edit or delete an invoice once it is pushed to AEAT. * If you have pushed an incorrect invoice, you can cancel it Zoho Books. The invoice will be marked as _Cancelled_ and get cancelled in AEAT through B2Brouter. * If you had already cancelled the invoice in AEAT through B2Brouter, you can mark the invoice as cancelled in Zoho Books. * You can create a new invoice again and push it to AEAT. ## Set Up VeriFactu in Zoho Books To set up VeriFactu in Zoho Books, you should have a B2Brouter account. If you don’t have an account already, you can create one and proceed with the setup. **Note:** * B2Brouter offers special pricing for Zoho customers. To access this pricing, please contact our support team at [](mailto:support@eu.zohobooks.com)[support@eu.zohobooks.com](mailto:support@eu.zohobooks.com). * If you already have a B2Brouter account, make sure you are subscribed to their **eDocExchange**. An eDocExchange subscription is required to access their _Developers_ module. While setting up VeriFactu in Zoho Books, you will have to enter the Project Identifier, API Key, and Signature Key that can be found in your B2Brouter account. Here’s how to find them: * Log in to your _B2Brouter_ account. * Go to **Settings**. * Select **VeriFactu** under _Taxes_. * Enter the required details and click **Save** to enable VeriFactu in B2Brouter. * To copy the Project Identifier, * Go to **Developers** and click the **Edit** icon next to the Groups dropdown. * Copy the **Account Identifier** next to the account name. * To copy the API Key, * Under **Developers**, navigate to the **API Key** tab. * Click **Show API Key** and copy the key that appears. * To copy the Signature Key, * Under **Developers**, navigate to the **Webhooks** tab. * Click **Add webhook** and paste the webhook URL that you have to copy from Zoho Books. * Mark **Changes in tax return status** under _Events_. * Mark **Show Key** under _Signature Key_ and copy the key that appears. * Click **Save**. Let’s see how you can set up VeriFactu in Zoho Books. **Prerequisite:** You can set up VeriFactu only if you’ve enabled taxes in your Zoho Books organisation. Make sure to enter your tax registration number with **“ES”** as the label. * Go to **Settings**. * Select **VeriFactu** under _Taxes & Compliance_ in the _Organization Settings_ pane.. * Click **Connect to B2Brouter**. * Enter the required details that are copied from your B2Brouter account. * Click **Copy Webhook URL**, which you can use when configuring your B2Brouter account. * Click **Finish** to complete the setup. ## Push Invoices via B2Brouter To push invoices to AEAT through B2Brouter: * Go to **Sales** on the left sidebar and select [Invoices](/books/help/invoice/#create-invoice). * Enter the required details. * Click **Save as Draft**. * Click **Push Invoice** at the top of the Invoice’s _Details_ page. The invoice push to AEAT will be initiated. Once the invoice is successfully pushed to AEAT, a QR code will be displayed on the invoice, and a notification is sent to your system about the status of the invoice. You can now send the invoice to your customer by clicking **Send Invoice**. **Note:** * Once an invoice is pushed to AEAT, it cannot be edited or deleted. * Child invoices generated from recurring invoices will be sent automatically to AEAT through B2Brouter. If there are any errors while pushing an invoice, you will be notified both in the app and by email. * You can push credit notes to AEAT only if they are created from an invoice, such as a cancellation invoice. Also, the invoice from which the credit note is created must also be pushed. ## Statuses of Invoices in VeriFactu The status of each invoice will be displayed in the invoice overview page. The statuses of the invoices in VeriFactu are: Status Description Yet To Be Pushed When you create an invoice and save it as a draft, the status of the invoice will be _Yet To Be Pushed_. Initiated When you send the invoice to AEAT, the status of the invoice will be _Initiated_. Pushed When the invoice is successfully pushed to AEAT and it is sent to your customer, then the status of the invoice will be changed to _Pushed_. Failed If there are any errors while pushing the invoice to AEAT, the invoice will not be sent and its status will be changed to _Failed_. You can correct the errors and try again. If an error occurs after the invoice has been pushed to AEAT, the status will also be changed to _Failed_, and you will need to create a [correction invoice](/en-fr/books/help/e-invoicing/spain.html#correction-invoice) to rectify the error. Cancel Initiated When you initiate cancellation of an invoice in Zoho Books, the status of the invoice will be changed to _Cancel Initiated_. Canceled When the invoice is successfully cancelled in AEAT, the status of the invoice will be changed to _Canceled_. Marked as Canceled If the invoice was already cancelled in AEAT through B2Brouter and you mark it as canceled in Zoho Books, the status of the invoice will be changed to _Marked as Canceled_. You can filter invoices based on these statuses by clicking the **All Invoices** dropdown at the top and then selecting the desired e-invoice status. If you want to filter invoices using your own criteria, you can create a custom view with these statuses. ## Cancel Pushed Invoices After you create and push an invoice to AEAT, you may want to cancel the invoice due to reasons like order cancellation or incorrect entries. If the invoice is in the _Draft_ status and is yet to be sent to customer, you can cancel the invoice by following the below steps: * Go to _Sales_ on the left sidebar and select **Invoices**. * Select the invoice which you want to cancel. * Click **Cancel** next to _VeriFactu Status_. * Select a reason and a description on why you’re cancelling the invoice in the popup that appears. * Click **Cancel**. The system will initiate the cancellation of the invoice, and its status will change to _Cancel Initiated_. Once the invoice is successfully canceled in AEAT, the status will update to _Canceled_. The invoice status will also be automatically updated to Canceled in B2Brouter. If you had already cancelled the invoice in AEAT through B2Brouter, you can mark the invoice as cancelled in Zoho Books. Here’s how: * Go to _Sales_ on the left sidebar and select **Invoices**. * Select the invoice that you want to mark as cancelled. * Click the **More** icon and select **Mark as Canceled**. * Enter the reason and again click **Mark as Canceled** in the popup that appears. If the pushed invoice is already sent to your customers, you can cancel it by following the below steps: * Go to _Sales_ on the left sidebar and select **Invoices**. * Select the invoice which you want to cancel. * Click the **More** icon and select **Cancel**. A cancellation invoice will now be created automatically in the _Credit Notes_ module. You can send the cancellation invoice to AEAT. Then, you can create a correction invoice for the cancelled invoice. **Note:** Once an invoice is cancelled, the action cannot be reversed. Any associated transactions will be dissociated and excluded from your organisation’s accounts and won’t be displayed in journals. ## Correction Invoices Here’s how to create a correction invoice: * Go to _Sales_ on the left sidebar and select **Invoices**. * Select the invoice for which you want to create a correction invoice. * Click the **More** icon and select **Create Correction Invoice**. * Make the necessary changes. * Click **Save as Draft**. Now, a new invoice with the corrected details will be created. The invoice for which you created a correction invoice will be shown in the invoice PDF as _Preceding Invoice#_. You can then send this invoice to AEAT. ## Disable VeriFactu in Zoho Books **Note:** Once enabled, an organization should remain in VeriFactu for the rest of the calendar year. However, you can disable VeriFactu in Zoho Books if you are migrating to another application. Here’s how you can disable VeriFactu in Zoho Books: * Go to _Settings_. * Select **VeriFactu** under _Taxes & Compliance_ in the _Organization Settings_ pane. * Slide the toggle near _Push Transactions to AEAT_ to **Disabled** if you don’t want to send invoices to your customers through AEAT. You can enable them anytime by sliding the toggle to **Enabled**.