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
Request
Core
company_idstringAssign the tax registration to a specific existing company. The company must not already have a tax
registration; if it does, the request returns 409 COMPANY_ALREADY_REGISTERED. The environment must
match the company: a sandbox registration cannot be assigned to a production company (or the reverse),
which returns 409 ENVIRONMENT_MISMATCH. An unknown company_id returns 404 COMPANY_NOT_FOUND. Omit it to have a new company created and linked automatically.
Example: 9b2e4c7a-1d3f-4a8b-9c6e-2f5a7b8c1d0e
business_addressobjectBusiness address for the client company, stored on the company that gets created. Only applies when a
new company is created (omit company_id); it is rejected if sent together with company_id.
streetstringrequiredStreet and house number.
Example: Torstraße 1
zipstringrequiredPostal code.
Example: 10119
citystringrequiredCity.
Example: Berlin
countrystringrequiredCountry as an ISO 3166-1 alpha-2 code.
Example: de
street_second_linestringA second address line (c/o, suite, …).
Example: c/o Muster
statestringState or region.
Example: Berlin
legal_formstringrequiredThe legal form of the company.
Possible values: ug or gmbh
packagestringrequiredThe service package.
Possible values: self or guided
signature_pathstringrequiredThe client's signature as an SVG path string.
Example: M 10 10 L 90 90 M 90 10 L 10 90
environmentstringdefault: productionThe ELSTER environment to file against. It also sets the created company's type: sandbox creates a
staging company and files against test ELSTER; production creates a live company.
Possible values: sandbox or production
client_referencestringA custom reference string for your own tracking.
Example: REF-2025-001
Company & Founding
namestringrequiredRegistered company name including the legal-form suffix. Max 120 characters.
Example: Muster Handels GmbH
purposestringrequiredDescription of the business activity. Max 200 characters.
Example: Softwareentwicklung und IT-Beratung.
notarization_datestringrequiredDate of the notarial formation deed (Gründungsurkunde).
Example: 2025-01-15
operational_activity_start_datestringrequiredThe date the business begins operating. Must not be before notarization_date. Format: YYYY-MM-DD.
Example: 2025-02-01
fiscal_year_deviates_from_calendarbooleanrequiredWhether the fiscal year differs from the calendar year.
Possible values: true or false
fiscal_year_deviating_start_datestringStart of the deviating fiscal year. Required when fiscal_year_deviates_from_calendar = true.
Format: YYYY-MM-DD.
Example: 2025-04-01
capitalnumberrequiredShare 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_capitalnumberrequiredAmount of the share capital already paid in. Cannot exceed capital.
Example: 25000
formation_typestringrequiredHow 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_typestringThe 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_holdingbooleanWhether the company only manages its own assets.
Possible values: true or false
addressobjectrequiredRegistered business address (see the Address object).
Directors & Shareholders
directorsarrayrequiredManaging directors. 1–9 entries.
first_namestringrequiredFirst name. Max 72 characters.
Example: Max
middle_namestringMiddle name. Appended to the first name in the ELSTER filing. Max 72 characters.
Example: Karl
last_namestringrequiredLast name. Max 72 characters.
Example: Mustermann
emailstringContact email, kept for follow-up, not part of the ELSTER filing.
Example: max.mustermann@example.com
phonestringContact phone, kept for follow-up, not part of the ELSTER filing.
Example: +491701234567
dobstringrequiredDate of birth. Format: YYYY-MM-DD.
Example: 1985-07-10
tax_identification_numberstringGerman tax ID (Steuer-Identifikationsnummer): 11 digits, validated with the ISO 7064 (Mod 11,10) checksum.
Example: 09481663279
addressobjectrequiredThe director's address (see the Address object).
shareholdersobjectrequiredShareholders, 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.
individualsarrayNatural-person shareholders.
first_namestringrequiredFirst name. Max 72 characters.
Example: Max
last_namestringrequiredLast name. Max 72 characters.
Example: Mustermann
dobstringrequiredDate of birth. Format: YYYY-MM-DD.
Example: 1985-07-10
tax_identification_numberstringGerman tax ID (Steuer-Identifikationsnummer): 11 digits, validated with the ISO 7064 (Mod 11,10) checksum.
Example: 09481663279
addressobjectrequiredAddress (see the Address object).
share_percentagenumberrequiredOwnership share in percent, up to 100 (2 to 4 decimal places allowed).
Example: 100
entitiesarrayLegal-entity shareholders.
namestringrequiredCompany name. Max 120 characters.
Example: Beispiel Holding GmbH
addressobjectrequiredAddress (see the Address object).
share_percentagenumberrequiredOwnership share in percent, up to 100 (2 to 4 decimal places allowed).
Example: 0
notaryobjectThe founding notary (Gründungsnotar). Optional; when present, all sub-fields are required.
first_namestringFirst name. Max 72 characters.
Example: Julia
last_namestringLast name. Max 72 characters.
Example: Notarin
addressobjectThe notary's office address (see the Address object).
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_registerobjectThe register state. Omit it entirely for a company that has not applied yet (same as status: not-applied).
statusstringrequiredWhere the company stands in the register.
not-applied: no register application yet. Carries no other fields.application-filed: the application is filed but the entry is still pending. Requiresregistration_application_date.registered: the company is entered. Requiresregistration_number,registration_dateandregistration_court.
Possible values: not-applied, application-filed or registered
registration_numberstringThe Handelsregister number, once the company has been entered. Send the number only; a leading HRB
is optional and dropped (a GmbH/UG is always Abteilung B). A suffix is kept with its space removed
(12345 B becomes 12345B). Required when status is registered.
Example: 12345
registration_datestringDate the company was entered in the register. Required when status is registered. Format: YYYY-MM-DD.
Example: 2025-01-20
registration_application_datestringDate the registration application was filed. Required when status is application-filed. Format: YYYY-MM-DD.
Example: 2025-01-10
registration_courtstringRegistering court. Required when status is registered.
Example: Charlottenburg
Bank Account
ibanstringThe company's bank account IBAN.
Example: DE89370400440532013000
bicstringThe bank identifier (BIC/SWIFT), 8 to 11 characters. Required when iban is a non-German IBAN.
Example: COBADEFFXXX
Revenue & Profit Estimates
financial_estimatesobjectrequiredEstimated revenue and taxable profit for the formation year and the following year. All amounts are whole euros.
formation_yearobjectrequiredEstimates for the formation year (the year the business starts operating).
revenue_amountnumberrequiredEstimated revenue. Cannot be lower than profit_amount.
Example: 60000
profit_amountnumberrequiredEstimated taxable profit.
Example: 20000
following_yearobjectrequiredEstimates for the year after the formation year.
revenue_amountnumberrequiredEstimated revenue. Cannot be lower than profit_amount.
Example: 90000
profit_amountnumberrequiredEstimated taxable profit.
Example: 40000
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.
vatobjectrequiredThe company's VAT setup.
regimestringThe VAT regime the company elects. small-business elects the small-business exemption (Kleinunternehmer,
§ 19 UStG); standard is the regular VAT regime (Regelbesteuerung). Required when the election is available
(founding-year revenue ≤ €25,000 and following-year ≤ €100,000). Above €25,000 the company is on the regular
VAT regime regardless, so the field has no effect there.
Possible values: small-business or standard
accounting_methodstringWhen you owe the VAT you've charged:
accrual(Sollversteuerung): the VAT is due as soon as you issue the invoice, even if the customer hasn't paid yet.cash(Istversteuerung): the VAT is due only once the customer actually pays.
A KapG can choose cash only when founding-year revenue is ≤ €800,000; above that, accrual is required.
Required unless the company is a small business (Kleinunternehmer), where it does not apply.
Possible values: accrual or cash
estimated_balance_typestringWhether you expect to owe VAT to the tax office (payable, Zahllast) or receive a refund (refundable, Überschuss).
Required unless the company is a small business (Kleinunternehmer): that is, when vat.regime is standard, or founding-year revenue is more than €25,000.
Possible values: payable or refundable
estimated_balance_amountnumberEstimated net VAT amount for the year, either payable or refunded. Required unless the company is a small business (Kleinunternehmer)
(see estimated_balance_type).
Example: 4000
return_frequencystringHow often VAT returns are filed. quarterly is the default. You can choose monthly (for faster
input-VAT refunds) only when you expect a refund (estimated_balance_type = refundable) of more than €9,000,
and the field is required in that case.
Possible values: monthly or quarterly
request_vat_idbooleanWhether to request an EU VAT identification number (USt-IdNr), used for cross-border B2B trade.
Possible values: true or false
sells_via_online_marketplacesbooleanWhether the company sells through online marketplaces such as Amazon or Etsy (§ 25e UStG record-keeping).
Possible values: true or false
request_reverse_charge_certificatebooleanWhether to apply for the reverse-charge certificate for construction and building-cleaning services
(USt 1 TG, § 13b UStG). When true, reverse_charge_service_type is required.
Possible values: true or false
reverse_charge_service_typestringThe type of service the reverse-charge certificate covers. Required when request_reverse_charge_certificate is true.
Possible values: construction, building-cleaning or both
Employees & Payroll
has_employeesbooleanWhether there are employees. Enables the payroll block. When true, the nested fields are all required.
Possible values: true or false
employee_countnumberrequiredNumber of employees.
Example: 4
shareholder_employee_countnumberrequiredNumber of employees who are also shareholders.
Example: 1
payroll_start_datestringrequiredStart of wage payments. Must not be before operational_activity_start_date. Format: YYYY-MM-DD.
Example: 2025-05-01
estimated_annual_wage_taxnumberrequiredEstimated annual wage tax.
Example: 20000
Shared Objects
AddressobjectstreetstringrequiredStreet including the house number, which must be present, e.g. Hauptstraße 12 or Hauptstraße 12a. Max 72 characters.
Example: Torstraße 1
street_second_linestringAdditional address line (floor, c/o, …), kept as supplementary information.
Example: 2. Etage
zipstringrequiredPostal code. A German address must be a 5-digit code.
Example: 60311
citystringrequiredCity. Max 72 characters, no digits.
Example: Frankfurt am Main
statestringFederal state (Bundesland).
Example: Hessen
countrystringrequiredISO 3166-1 alpha-2 country code. de is domestic; any other value marks the address as abroad.
Example: de
Response
resultstringOutcome of the request.
Possible values: success or error
messagestringHuman-readable outcome message.
Example: Tax registration XML generated and stored. Awaiting manual ELSTER submission.
tax_registration_idstringUUID of the tax registration case (equal to the id you supplied, if any). Use it with the GET endpoint.
Example: 450506c1-d1a7-46e2-aca6-41a816805595
statusstringThe case status once the XML passed schema and XSD checks.
Possible values: validated
timestampstringISO 8601 timestamp of the response.
Example: 2025-02-01T07:19:30.443Z
Example
{
"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": {
"estimated_balance_type": "payable",
"estimated_balance_amount": 8000
},
"commercial_register": {
"status": "registered",
"registration_number": "12345",
"registration_date": "2025-01-20",
"registration_court": "Charlottenburg"
},
"environment": "sandbox",
"client_reference": "REF-2025-001"
}{
"response": {
"result": "success",
"message": "Tax registration XML generated and stored. Awaiting manual ELSTER submission.",
"tax_registration_id": "450506c1-d1a7-46e2-aca6-41a816805595",
"status": "validated",
"timestamp": "2025-02-01T07:19:30.443Z"
}
}POSTOverview
Submit a company's details to start its tax registration. An ELSTER XML document will be generated and sent the tax office, which reviews and files the registration. If ELSTER rejects it for any reason, one of our managers handles it and resends it.
GbR / eGbR
Create a tax registration for a GbR or eGbR (Personengesellschaft). Generates the ELSTER FsE_PersG form.