Factuarea APIDevelopers
Contract

Provisioning preview and account details

One new operation, the preview of what a new managed account would cost, new fields on companies, tax ID transfers, managed accounts, plan changes, bulk imports and the consolidated workforce, and a voucher expiry that is now always returned on reissue.

13 October 2026

When you run accounts for your clients, you want to know what a step will cost before you take it, and to read the same dates and amounts the app shows. This release adds both. Everything on this page is additive: we removed nothing. The only existing value that changes is the expires_at of the voucher reissue, which is now always a date; it is described in Managed accounts.

See the cost before you provision

GET /v1/accounts/provisioning-preview (scope accounts:read) shows what provisioning a new managed account would charge your account, without writing anything. Pass the plan you are thinking about (emprendedor, empresario or integral) and you get what is charged today (amount_cents, tax_amount_cents, total_cents and tax_rate), the date of the next invoice and the joint monthly fee that follows, in the recurring_* fields. All amounts are integer cents.

It applies the same rules as the provisioning itself, so it answers the same errors before you commit: 422 managed_account_plan_not_self_serve for enterprise, 422 managed_account_provider_in_trial while your account is in trial and 422 managed_accounts_limit_reached at your limit. With a test key every amount is 0. If we cannot resolve the price at that moment it answers 503: retry later, an unavailable amount is never a free purchase. It needs no Idempotency-Key, because nothing is charged or created. The MCP tool is preview_managed_account_provisioning.

The VAT can come back empty. When something is charged but the payment gateway returns no VAT rate, we could not compute the VAT: tax_rate, tax_amount_cents, total_cents and recurring_total_cents are then null. amount_cents is the taxable base, not what is charged, so do not show it to your client as the total: say that the total could not be computed and try again later. When there is nothing to charge (a test key, or a base of 0) they stay at 0. The same applies to the MCP tool.

It has its own quota. The preview belongs to the read family with a limit of its own: 10 requests per minute, counted per credential and effective company. If you exceed it you get 429 with Retry-After.

Companies: since when, and where

Every company operation (list, retrieve, create, update, activate, deactivate and activate in batch) now returns:

  • status_since: when the tax ID entered its current inactive or archived status. It is null for an active tax ID and for one whose change predates this record: we never invent the date.
  • country: the country of the fiscal domicile as it appears in the company profile, or null if it was not set.

Tax ID transfers: the dates

The four transfer operations (issue, list, accept and revoke) now return issued_at, consumed_at and revoked_at. consumed_at tells when the transfer was accepted, not which account accepted it.

Managed accounts: voucher and payment

The managed account operations (list, retrieve, provision, change the access level, end the management and change the plan) now return:

  • claim: the pending claim voucher without its secret, with status (valid or expired), issued_at, expires_at, ttl_days, sent_by_email and masked_email. It is null once the holder claimed the account, for a test account or when there is no pending voucher. The secret and the link are still returned once, by the provisioning and the reissue.
  • payment_assumed_at: when the holder took over the payment, or null while your account still pays.
  • plan_renews_at: the end of the current billing period of the plan, or null when the account is not charged to yours.

Provisioning also returns claim_expires_at, which carries the date also when the link goes by email (the expiry is not a secret), and reactivated, which is true when the call brought back a management that had ended before the holder claimed the account.

The reissue of the voucher (POST /v1/accounts/{account}/claim-tokens, and the MCP tool reissue_managed_account_claim) changes one value: expires_at, the expiry of the new voucher, used to be null when the voucher was emailed (send_email: true) and now is always an ISO 8601 date, because a reissue always issues a new voucher and its expiry is not a secret. claim_token and claim_url do not change: they stay null with send_email: true and in an idempotent replay. If your code treated a null expires_at as "sent by email", read sent_by_email in claim instead.

Plan change: renewal and what it turns off

The plan change preview now returns renews_at, the end of the current billing period, also for an upgrade. For a downgrade, deactivates lists the additional tax IDs (id, name and tax_id) that the change would deactivate, so you can warn the client before it happens.

Bulk import: VAT, totals and error codes

The import preview returns cost with VAT and the monthly fee for each mode and in total, and the executed import returns stats with VAT and the total charged at once. Both are additive: they do not appear in the reports of imports saved earlier. Each row now carries name and, for own_nif rows, the company_id of the tax ID it registered or reconciled.

Each row also carries error_codes, the stable code of every error of errors, with the same keys: {"tax_id": "required"} next to the Spanish message of tax_id. Use the code, not the message, to react to or translate an error. The message does not change: errors stays exactly as it was. error_codes is always an object, {} when the row has no errors, in imports saved earlier too, and in a BLOCKED row, whose reason is code. The codes are a closed list, in the bulk import guide. It is on POST /v1/accounts/imports/preview and on POST /v1/accounts/imports.

Consolidated workforce: whose tax ID it is

Each row of the consolidated workforce summary now says which account the tax ID belongs to (account, with id and name), how it reaches you (relation_origin: granted or provisioned) and the level you hold on it (access_level: view or operate).

New endpoints1

EndpointDescription
GET/v1/accounts/provisioning-previewPreview the provisioning of a managed account

Updated endpoints22

EndpointDescription
GET/v1/accounts/{account}/companiesList the tax IDs of your account
GET/v1/accounts/{account}/companies/{company}Retrieve a tax ID of the account
POST/v1/accounts/{account}/companiesRegister a tax ID in the account
PATCH/v1/accounts/{account}/companies/{company}Update a tax ID of the account
POST/v1/accounts/{account}/companies/{company}/activateActivate a tax ID of the account
POST/v1/accounts/{account}/companies/{company}/deactivateDeactivate a tax ID of the account
POST/v1/accounts/{account}/companies/activateActivate several tax IDs of the account
POST/v1/accounts/{account}/nif-transfersIssue a tax ID transfer
GET/v1/accounts/{account}/nif-transfersList issued tax ID transfers
POST/v1/accounts/{account}/nif-transfers/acceptAccept a tax ID transfer
POST/v1/accounts/{account}/nif-transfers/{nif_transfer}/revokeRevoke a tax ID transfer
GET/v1/accountsList managed accounts
GET/v1/accounts/{account}Retrieve a managed account
POST/v1/accountsProvision a managed account
POST/v1/accounts/{account}/claim-tokensReissue the claim voucher of a managed account
PATCH/v1/accounts/{account}/access-levelChange the access level on a managed account
DEL/v1/accounts/{account}/managementEnd the management of an account
PATCH/v1/accounts/{account}/planChange the plan of a managed account
GET/v1/accounts/{account}/plan/previewPreview a managed account plan change
POST/v1/accounts/imports/previewPreview a bulk import of managed accounts
POST/v1/accounts/importsApply a bulk import of managed accounts
GET/v1/accounts/{account}/gestoria/workforce-summaryRetrieve the consolidated workforce compliance overview
UsersRound Wallet FileUp

On this page

Need a hand?Contact support