NewStripe: a buyer with a NIF always gets a standard invoice, and the simplified threshold is deprecated
BeeL
Get startedMulti-NIFVeriFactuRulesStripeAPI referenceChangelog
VeriFactu Configuration

Update VeriFactu configuration (deprecated)

Scopeconfiguration:write

Deprecated. Use PUT /v1/companies/{company_id}/verifactu-configuration, which behaves identically.

Updates the VeriFactu configuration of the company in focus.

  • Writable fields: only enabled. The rest of the returned configuration (status, signed, activated, nif_status) is resolved server-side.
  • Full replacement: enabled is required — this PUT replaces the whole state, it is not a partial merge, so omitting it is a client error and not a silent false.
  • Turning it on registers the NIF for VeriFactu submission in the same call, atomically: if the registration is refused nothing is persisted and the response carries the reason. In Live it requires a signed and validated AEAT representation first, or 422 VERIFACTU_REPRESENTATION_REQUIRED.
  • Sandbox is always on: enabled: false there answers 422 VERIFACTU_ALWAYS_ON_IN_SANDBOX.

Turning it off

Setting enabled to false stops sending invoices to the AEAT and starts deregistering the NIF from VeriFactu submission. It does not deactivate the NIF: the activation is a fact of its own for the (company, environment) pair, so issuing carries on and issuing-readiness stays ready. Releasing the NIF is always DELETE /v1/companies/{company_id}/activations, with its own guarantees.

Retires on 9 December 2026. See the migration guide for what moved where and what changes when you switch.


PUT
/v1/configuration/verifactu
AuthorizationBearer <token>

Keys are prefixed beel_sk_, and each one carries the scopes it was created with: a key short of the scope an operation needs is answered 403. The scope an operation requires is shown next to its title, and the full catalogue lives in the Scopes reference.

Keys are created from the BeeL dashboard. They are secret credentials: do not share them or commit them to source control.

In: header

enabledboolean

Whether this tax ID is under the VeriFactu regime in the environment of the request.

It is a fact about the taxpayer, not about a document: while it is on, every invoice of this tax ID is registered with the AEAT; while it is off, none is. There is no per-invoice choice.

Turning it on registers the tax ID for VeriFactu submission in the same call, atomically: if the registration is refused, nothing is persisted and the response carries the reason. In Live it requires a signed and validated AEAT representation first (VERIFACTU_REPRESENTATION_REQUIRED).

In sandbox VeriFactu is always on and cannot be turned off (VERIFACTU_ALWAYS_ON_IN_SANDBOX): nothing there reaches the real AEAT.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PUT "https://app.beel.es/api/v1/configuration/verifactu" \  -H "Content-Type: application/json" \  -d '{    "enabled": true  }'
{
  "success": true,
  "data": {
    "enabled": true,
    "nif_status": "ACTIVATED",
    "nif_registered_at": "2019-08-24T14:15:22Z",
    "status": "DISABLED",
    "signed": true,
    "activated": true,
    "pdf_generated": true
  },
  "meta": {
    "timestamp": "2025-01-15T10:30:00Z",
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}
{
  "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 is required to access this resource"
  },
  "meta": {
    "timestamp": "2025-01-15T10:30:00Z",
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}
{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "You do not have permission to access this resource"
  },
  "meta": {
    "timestamp": "2025-01-15T10:30:00Z",
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "The provided data is not valid.",
    "details": {
      "legal_name": "The field 'legal_name' cannot be empty",
      "recipient.address.postal_code": "Contains invalid characters."
    }
  },
  "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"
  }
}
{
  "success": false,
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Unsupported media type: text/plain. Supported: application/json"
  },
  "meta": {
    "timestamp": "2025-01-15T10:30:00Z",
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}