Beglaubigt.de API

UG / GmbH

Create a tax registration for a UG or GmbH. Generates the ELSTER Kapitalgesellschaft form.

POST https://api.beglaubigt.de/v1/tax-registration

Authorization

Include an Authorization header with a Bearer token:

Authorization: Bearer <token>

Example: Bearer sk-123e4567-e89b-12d3-a456-426614174000

Environment

The environment comes from the company your API key belongs to, not from the request. A sandbox company's key creates sandbox registrations, filed against the ELSTER test environment; a production company's key creates live ones. To test, use the API key of your sandbox company.

The example tax ID 09481663279 is ELSTER's test IdNr: the sandbox accepts it, and production rejects it with 400 VALIDATION_ERROR. A production registration needs each person's real tax ID.

Idempotency

To retry a request safely after a timeout or a 5xx, send an Idempotency-Key header and reuse the same key on every retry. A retry then gets the first response back instead of creating a second case. See Idempotency.

Idempotency-Key: 5b0c8e8a-7d2f-4d0e-9a51-1f0b6a4c2e11

Request

Core

company_idstring

The UUID of the client company the tax registration belongs to. A company holds at most one tax registration and one trade registration, so use the same company_id on both endpoints to keep a client's registrations together, in parallel or in any order.

  • A UUID that does not exist yet: the company is created under that id. You can choose the id yourself.
  • An existing company of yours: the registration is added to it. If it already has a tax registration, the request returns 409 COMPANY_ALREADY_REGISTERED. If it is in another environment than your API key's company (see Environment), it returns 409 ENVIRONMENT_MISMATCH.
  • A company created by another account: 404 COMPANY_NOT_FOUND.
  • Omitted: a new company is created and its id returned as company_id.

Example: 9b2e4c7a-1d3f-4a8b-9c6e-2f5a7b8c1d0e

business_addressobject

Billing address of the client company created for you. Only applies when company_id is omitted; it is rejected if sent together with company_id.

legal_formstringrequired

The legal form of the company.
Possible values: ug or gmbh

packagestringrequired

The service package.
Possible values: self or assisted (guided is still accepted as a deprecated alias of assisted)

signature_pathstringrequired

The client's signature as an SVG path string.
Example: M 10 10 L 90 90 M 90 10 L 10 90

client_referencestring

A custom reference string for your own tracking.
Example: REF-2025-001

Company & Founding

namestringrequired

Registered company name including the legal-form suffix. Max 120 characters.
Example: Muster Handels GmbH

purposestringrequired

Description of the business activity. Max 200 characters.
Example: Softwareentwicklung und IT-Beratung.

notarization_datestringrequired

Date of the notarial formation deed (Gründungsurkunde).
Example: 2025-01-15

operational_activity_start_datestringrequired

The date the business begins operating. Must not be before notarization_date. Format: YYYY-MM-DD.
Example: 2025-02-01

fiscal_year_deviates_from_calendarbooleanrequired

Whether the fiscal year differs from the calendar year.
Possible values: true or false

fiscal_year_deviating_start_datestring

Start of the deviating fiscal year. Required when fiscal_year_deviates_from_calendar = true. Must not be before notarization_date, and cannot be 1 January: a fiscal year starting then is the calendar year, so send fiscal_year_deviates_from_calendar = false instead. Format: YYYY-MM-DD.
Example: 2025-04-01

capitalnumberrequired

Share capital in euros, a whole number. A UG must be between 1 and 24999; a GmbH must be at least 25000.
Example: 25000

paid_in_capitalnumberrequired

Amount of the share capital already paid in. Cannot exceed capital.
Example: 25000

formation_typestringrequired

How the company was founded: cash for a cash contribution (Bargründung), in-kind for a contribution in kind (Sachgründung), or conversion when it results from converting an existing business (Umwandlung).
Possible values: cash, in-kind or conversion

conversion_typestring

The kind of conversion. Required when formation_type = conversion, and only allowed then: merger for a merger (Verschmelzung), division for a split (Spaltung), form-change for a change of legal form (Formwechsel), or asset-transfer for a transfer of assets (Vermögensübertragung).
Possible values: merger, division, form-change or asset-transfer

is_holdingboolean

Whether the company only manages its own assets.
Possible values: true or false

addressobjectrequired

Registered business address (see the Address object).

Directors & Shareholders

directorsarrayrequired

Managing directors. 1–9 entries.

shareholdersobjectrequired

Shareholders, split into two arrays: individuals (natural persons) and entities (legal entities). At least 1 and at most 99 across both, and the share_percentage values must sum to exactly 100.

individualsarray

Natural-person shareholders.

entitiesarray

Legal-entity shareholders.

notaryobject

The founding notary (Gründungsnotar). Optional; when present, all sub-fields are required.

Commercial Register

The company's Handelsregister state, grouped under commercial_register. status says where the company stands, and drives which of the other fields are required.

commercial_registerobject

The register state. Omit it entirely for a company that has not applied yet (same as status: not-applied).

Bank Account

ibanstring

The company's bank account IBAN.
Example: DE89370400440532013000

bicstring

The bank identifier (BIC/SWIFT), 8 to 11 characters. Required when iban is a non-German IBAN.
Example: COBADEFFXXX

Revenue & Profit Estimates

financial_estimatesobjectrequired

Estimated revenue and taxable profit for the formation year and the following year. All amounts are whole euros.

formation_yearobjectrequired

Estimates for the formation year (the year the business starts operating).

following_yearobjectrequired

Estimates for the year after the formation year.

VAT

What is considered a small business (Kleinunternehmer)?

It uses the VAT exemption under § 19 UStG: it does not charge VAT on its invoices and files no VAT returns.

  • Founding year: qualifies when founding-year revenue is ≤ €25,000.
  • Later years: stays a Kleinunternehmer while the previous year was ≤ €25,000 and the current year does not exceed €100,000.

To use it, set vat.regime to small-business. The VAT-calculation fields (vat.accounting_method, vat.estimated_balance_type, vat.estimated_balance_amount and vat.return_frequency) then do not apply and are rejected if sent.

Setting vat.regime to standard opts the client out of the small-business regime, so they charge VAT on invoices and file VAT returns.

vatobjectrequired

The company's VAT setup.

Employees & Payroll

has_employeesboolean

Whether there are employees. Enables the payroll block. When true, the nested fields are all required.
Possible values: true or false

employee_countnumberrequired

Number of employees.
Example: 4

shareholder_employee_countnumberrequired

Number of employees who are also shareholders.
Example: 1

payroll_start_datestringrequired

Start of wage payments. Must not be before operational_activity_start_date. Format: YYYY-MM-DD.
Example: 2025-05-01

estimated_annual_wage_taxnumberrequired

Estimated annual wage tax.
Example: 20000

Shared Objects

Addressobject

Response

A self registration is filed with ELSTER within the request. A request that fails validation, or that ELSTER refuses, is an error and creates nothing. An assisted one is reviewed by a lawyer before it is filed.

resultstring

Outcome of the request.
Possible values: success or error

messagestring

Human-readable outcome message.
Example: Tax registration filed with ELSTER.

company_idstring

UUID of the client company the case belongs to: the company_id you sent, or the one created for you when you omitted it. Pass it as company_id to the trade registration endpoint to register the same company there.
Example: 9b2e4c7a-1d3f-4a8b-9c6e-2f5a7b8c1d0e

tax_registration_idstring

UUID of the tax registration case. Use it with the GET endpoint.
Example: 450506c1-d1a7-46e2-aca6-41a816805595

statusstring

How far the registration got.
Possible values:

  • submitted: filed with ELSTER. transfer_ticket and documents are set.
  • validated: an assisted registration, waiting for the lawyer's review before it is filed.
  • blocked: rare. The filing failed in a way that may have reached ELSTER, so the case is kept and our team checks it with ELSTER and finishes it; the tax-registration.completed webhook and the GET endpoint report the result. Nothing to resend.
tax_officeobject

The tax office (Finanzamt) the registration is filed with, resolved from the address.

transfer_ticketstring

ELSTER's receipt for the filing, present when status is submitted.
Example: et1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d

documentsobject

Download links for the filing's PDFs, present when status is submitted. Each link is valid for 24 hours; the GET endpoint returns fresh ones.

timestampstring

ISO 8601 timestamp of the response.
Example: 2025-02-01T07:19:30.443Z

Errors

Statuserror_codeWhenCreated
400VALIDATION_ERRORA field is missing or invalid. details lists each field with its problem.Nothing
401(none)The API key is missing or invalid. The body is { "error": "Unauthorized: Missing or invalid token" }.Nothing
404COMPANY_NOT_FOUNDThe company_id you passed belongs to another account.Nothing
409COMPANY_ALREADY_REGISTEREDThe company_id you passed already has a tax registration.Nothing
409ENVIRONMENT_MISMATCHThe company_id you passed belongs to a different environment than your API key.Nothing
422FINANZAMT_NOT_FOUND / VALIDATION_ERRORNo tax office matches the address, or the dates are out of order.Nothing
409IDEMPOTENCY_REQUEST_IN_PROGRESSA request with the same Idempotency-Key is still running. Retry with the same key.Nothing
422IDEMPOTENCY_KEY_REUSEDThe Idempotency-Key was already used with a different request body.Nothing
422ELSTER_PLAUSIBILITY_ERRORELSTER refuses the registration. details names each field to fix and what ELSTER needs.Nothing
500PROCESSING_ERRORAn error on our side. Contact support with the timestamp.Nothing

Example

Request
{
  "legal_form": "gmbh",
  "name": "Muster Handels GmbH",
  "purpose": "Handel mit Elektronikwaren",
  "package": "self",
  "signature_path": "M 10 10 L 90 90 M 90 10 L 10 90",
  "notarization_date": "2025-01-15",
  "operational_activity_start_date": "2025-02-01",
  "fiscal_year_deviates_from_calendar": false,
  "capital": 25000,
  "paid_in_capital": 25000,
  "formation_type": "cash",
  "address": {
    "street": "Hauptstrasse 12",
    "street_second_line": "2. Etage",
    "zip": "60311",
    "city": "Frankfurt am Main",
    "country": "de"
  },
  "directors": [
    {
      "first_name": "Max",
      "middle_name": "Karl",
      "last_name": "Mustermann",
      "email": "max.mustermann@example.com",
      "phone": "+491701234567",
      "dob": "1985-07-10",
      "tax_identification_number": "09481663279",
      "address": {
        "street": "Hauptstrasse 12",
        "zip": "60311",
        "city": "Frankfurt am Main",
        "country": "de"
      }
    }
  ],
  "shareholders": {
    "individuals": [
      {
        "first_name": "Max",
        "last_name": "Mustermann",
        "dob": "1985-07-10",
        "tax_identification_number": "09481663279",
        "address": {
          "street": "Hauptstrasse 12",
          "zip": "60311",
          "city": "Frankfurt am Main",
          "country": "de"
        },
        "share_percentage": 100
      }
    ],
    "entities": []
  },
  "financial_estimates": {
    "formation_year": {
      "revenue_amount": 60000,
      "profit_amount": 20000
    },
    "following_year": {
      "revenue_amount": 90000,
      "profit_amount": 40000
    }
  },
  "vat": {
    "accounting_method": "accrual",
    "estimated_balance_type": "payable",
    "estimated_balance_amount": 8000
  },
  "commercial_register": {
    "status": "registered",
    "registration_number": "12345",
    "registration_date": "2025-01-20",
    "registration_court": "Frankfurt am Main"
  },
  "client_reference": "REF-2025-001"
}
Response
{
  "response": {
    "result": "success",
    "message": "Tax registration filed with ELSTER.",
    "company_id": "9b2e4c7a-1d3f-4a8b-9c6e-2f5a7b8c1d0e",
    "tax_registration_id": "450506c1-d1a7-46e2-aca6-41a816805595",
    "status": "submitted",
    "tax_office": { "number": "2614", "name": "Frankfurt am Main" },
    "transfer_ticket": "et1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d",
    "documents": {
      "questionnaire_url": "https://app.beglaubigt.de/download?bucket=company-documents&id=3f1c2b9e-7d4a-4c1e-9b2f-5a8d6e7f9c0b&token=a1H...To5",
      "confirmation_url": "https://app.beglaubigt.de/download?bucket=company-documents&id=8a2d4e6f-1b3c-4d5e-8f9a-0b1c2d3e4f5a&token=b2J...Up6"
    },
    "timestamp": "2025-02-01T07:19:30.443Z"
  }
}

On this page