NewTell a voided invoice from a totally rectified one, without a second call
BeeL
Get StartedMulti-NIFVeriFactuStripeAPI ReferenceChangelog
Accounts

Change your management access over an account you provisioned

Scopeaccounts:write

Updates the access you hold over an account you provisioned: NONE (you keep paying for their subscription but cannot see their data), VIEW (read their data) or OPERATE (issue and edit invoices for them). Issuing on their behalf also requires a signed fiscal representation from the account holder. Privileged: requires the accounts:write scope. A 403 is returned when the account was not provisioned by you, when it does not exist (existence is not disclosed), and when you try to RAISE the access level after the account holder has taken ownership of the account — once claimed, only the holder can raise it; you may keep it or lower it.


PATCH
/v1/accounts/{account_id}/access-level
AuthorizationBearer <token>

API Key authentication.

Format: Authorization: Bearer beel_sk_<key>

Scopes: API Keys use the same scopes as OAuth2 tokens. Each key is created with specific scopes that limit which endpoints it can access. The required scope for each endpoint is documented in the operation's security section under OAuth2.

Obtaining Keys: API Keys are managed from the BeeL dashboard

Security: API Keys are secret credentials. Do not share them or store them in source code

In: header

Path Parameters

account_idstring
Formatuuid
access_levelstring

How much access an actor has to an account or a company (NIF). The same three values are used everywhere access is granted or reported — whether the actor is a member of the account or a provisioner managing it on someone's behalf.

NONE — no access to the data. VIEW — read invoices, customers, products, series and fiscal data. OPERATE — everything in VIEW, plus creating and editing them. Issuing invoices for an account you manage additionally requires a signed fiscal representation from the account holder (see /v1/accounts/{account_id}/companies/{company_id}/representation).

Access level never affects billing: whoever provisioned an account pays for its subscription regardless of the level they keep over it.

Value in"NONE" | "VIEW" | "OPERATE"

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://app.beel.es/api/v1/accounts/497f6eca-6276-4993-bfeb-53cbbbba6f08/access-level" \  -H "Content-Type: application/json" \  -d '{    "access_level": "NONE"  }'
Empty
{
  "success": false,
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid request"
  },
  "meta": {
    "timestamp": "2025-01-15T10:30:00Z",
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  },
  "meta": {
    "timestamp": "2025-01-15T10:30:00Z",
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}
{
  "success": false,
  "error": {
    "code": "LIVE_CREDENTIAL_REQUIRED",
    "message": "This operation changes the real account; it requires a live API key or a dashboard session."
  },
  "meta": {
    "timestamp": "2025-01-15T10:30:00Z",
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests. Please try again in 60 seconds."
  },
  "meta": {
    "timestamp": "2025-01-15T10:30:00Z",
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}
{
  "success": false,
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal server error"
  },
  "meta": {
    "timestamp": "2025-01-15T10:30:00Z",
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}

Provisioning usage of your own account GET

Returns how many accounts you have provisioned and how many NIFs (companies) they hold — the billable figure for your offline B2B invoice. Requires the `accounts:read` scope. `account_id` is **your own account**: usage is a property of the provisioner, not of each provisioned account. Any other id — an account you provisioned, one belonging to someone else, or one that does not exist — returns the same `404`, so the endpoint cannot be used to probe which accounts exist.

End your management of an account you provisioned DELETE

Ends the management relationship over an account you provisioned: you lose access to it and its NIFs stop counting towards your billable usage from the next billing cycle. The account holder keeps the account, its NIFs and its invoices, and becomes responsible for their own subscription; nothing is deleted or anonymised. Privileged: requires the `accounts:write` scope. A `403` is returned when the account was not provisioned by you, when it does not exist (existence is not disclosed) and when its management has already ended. **Reversible only while the account stays unclaimed.** If the holder has not claimed the account, provisioning the same email again reactivates it (see `POST /v1/accounts`). Once they claim it, the account is theirs and provisioning returns `409 PROVISIONING_ACCOUNT_CLAIMED`: getting the management back then requires their consent, not just their email address. Only the manager who ended the relationship can reactivate it.