GbR / eGbR
Create a tax registration for a GbR or eGbR (Personengesellschaft). Generates the ELSTER FsE_PersG form.
POST https://api.beglaubigt.de/v1/tax-registration
The request for a GbR or eGbR (Personengesellschaft). legal_form is gbr or egbr, which maps
to the ELSTER FsE_PersG form. An eGbR is a GbR entered in the company register
(Gesellschaftsregister); express it via the register fields below.
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_idstringThe 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 returns409 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_addressobjectBilling address of the client company created for you. Only applies when company_id is omitted; 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: gbr or egbr
packagestringrequiredThe service package the client selected.
Possible values: self or assisted (guided is still accepted as a deprecated alias of assisted)
signature_pathstringrequiredThe client's signature as an SVG path string (the drawn signature).
Example: M 10 10 L 90 90 M 90 10 L 10 90
client_referencestringA custom reference string for your own tracking.
Example: REF-2025-001
Company & Founding
namestringrequiredPartnership name (Firmenname). Max 120 characters.
Example: Muster & Partner GbR
purposestringrequiredDescription of the business activity. Max 200 characters.
Example: Grafikdesign und Beratung
operational_activity_start_datestringrequiredThe date the business begins operating. Must not be before founding_date. Format: YYYY-MM-DD.
Example: 2025-03-01
founding_datestringrequiredDate the partnership was formed. Format: YYYY-MM-DD.
Example: 2025-03-01
founding_kindstringrequiredHow the partnership came about: 1 new formation (Neugründung), 2 relocation (Verlegung), 3 takeover (Übernahme), 4 conversion (Umwandlung).
Possible values: 1, 2, 3 or 4
accounting_profit_methodstringrequiredMethod used to determine taxable profit: 01 cash accounting (EÜR), 02 double-entry (Bilanz), 03 standard rates (Durchschnittssätze), 04 other (Sonstige).
Possible values: 01, 02, 03 or 04
addressobjectrequiredRegistered business address (see the Address object).
Partners
directorsarrayrequiredRepresentatives (Vertreter). 1–99 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 representative's address (see the Address object).
shareholdersobjectrequiredPartners (Beteiligte), split into two arrays: individuals (natural persons) and entities (legal
entities). At least 2 and at most 99 across both, and the share_percentage values must sum to 100.
individualsarrayNatural-person partners.
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: 50
entitiesarrayLegal-entity partners.
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: 50
Company Register
For an eGbR that is entered, intends to register, or has applied, supply the register state.
register_intendedbooleanWhether entry in the company register is intended (this is what turns a GbR into an eGbR).
Possible values: true or false
registration_numberstringThe register number, present once the eGbR has been entered.
Example: 12345
registration_datestringDate of entry in the register. Format: YYYY-MM-DD.
Example: 2025-03-20
registration_application_filedbooleanWhether the registration application has been filed while the entry is still pending.
Possible values: true or false
registration_application_datestringDate the registration application was filed. ELSTER needs it when registration_application_filed is
true: without it ELSTER refuses the registration, and the request fails with 422 ELSTER_PLAUSIBILITY_ERROR. Format: YYYY-MM-DD.
Example: 2025-03-10
courtstringRegistering court. Required with a registration_number. ELSTER also needs it when
registration_application_filed is true: without it ELSTER refuses the registration, and the request fails with 422 ELSTER_PLAUSIBILITY_ERROR.
Example: Frankfurt am Main
Bank Account
ibanstringThe company's bank account IBAN. For a non-German IBAN you must also supply bic.
Example: DE89370400440532013000
bicstringThe bank identifier (BIC/SWIFT) for the account, 8 to 11 characters. Required for non-German IBANs.
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: 40000
profit_amountnumberrequiredEstimated taxable profit.
Example: 30000
following_yearobjectrequiredEstimates for the year after the formation year.
revenue_amountnumberrequiredEstimated revenue. Cannot be lower than profit_amount.
Example: 60000
profit_amountnumberrequiredEstimated taxable profit.
Example: 50000
VAT
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; the following-year estimate does not affect it). Above €25,000 the partnership
is on the regular VAT regime regardless: omit the field or send standard. small-business is accepted there
but rules out the VAT-calculation fields below, which ELSTER then needs, so the registration cannot be filed.
Possible values: small-business or standard
accounting_methodstringWhen you owe the VAT you've charged: with accrual (Sollversteuerung) the VAT is due as soon as you issue the
invoice, even if the customer hasn't paid yet; with cash (Istversteuerung) it's due only once the customer
actually pays. Omit for small businesses (Kleinunternehmer). ELSTER needs it for any other partnership:
without it ELSTER refuses the registration, and the request fails with 422 ELSTER_PLAUSIBILITY_ERROR.
Possible values: accrual or cash
cash_accounting_reasonstringThe legal ground for choosing cash-basis VAT, only when vat.accounting_method = cash: revenue (turnover below the
§20 UStG limit), section-148-ao (exempt from bookkeeping under §148 AO) or liberal-profession (§18 EStG).
Possible values: revenue, section-148-ao or liberal-profession
estimated_balance_typestringWhether you expect to owe VAT to the tax office (payable, Zahllast) or receive a refund (refundable, Überschuss).
ELSTER needs it from €25,000 founding-year revenue, unless the partnership is a small business (Kleinunternehmer).
Possible values: payable or refundable
estimated_balance_amountnumberEstimated net VAT amount for the year, either payable or refunded. Send it with estimated_balance_type.
Example: 4000
return_frequencystringHow often VAT returns are filed. Required for an input-VAT surplus (Vorsteuerüberschuss,
estimated_balance_type = refundable) greater than €9,000, where only monthly is valid; quarterly is the tax office's default.
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 fields below are all required.
Possible values: true or false
employee_countnumberNumber of employees. Required when has_employees = true.
Example: 4
shareholder_employee_countnumberNumber of employees who are also partners. Required when has_employees = true.
Example: 1
payroll_start_datestringStart of wage payments. Must not be before operational_activity_start_date. Required when
has_employees = true. Format: YYYY-MM-DD.
Example: 2025-05-01
estimated_annual_wage_taxnumberEstimated annual wage tax (Lohnsteuer). Required when has_employees = true.
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
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.
resultstringOutcome of the request.
Possible values: success or error
messagestringHuman-readable outcome message.
Example: Tax registration filed with ELSTER.
company_idstringUUID 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_idstringUUID of the tax registration case. Use it with the GET endpoint.
Example: 450506c1-d1a7-46e2-aca6-41a816805595
statusstringHow far the registration got.
Possible values:
submitted: filed with ELSTER.transfer_ticketanddocumentsare set.validated: anassistedregistration, 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; thetax-registration.completedwebhook and the GET endpoint report the result. Nothing to resend.
tax_officeobjectThe tax office (Finanzamt) the registration is filed with, resolved from the address.
numberstringThe tax office's four-digit number.
Example: 2614
namestringThe tax office's name.
Example: Frankfurt am Main
transfer_ticketstringELSTER's receipt for the filing, present when status is submitted.
Example: et1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d
documentsobjectDownload links for the filing's PDFs, present when status is submitted. Each link is valid for
24 hours; the GET endpoint returns fresh ones.
questionnaire_urlstringThe tax registration questionnaire as filed. null if it could not be generated; GET returns it
once it is.
confirmation_urlstringELSTER's confirmation of the filing, with the transfer ticket. null if it could not be generated;
GET returns it once it is.
timestampstringISO 8601 timestamp of the response.
Example: 2025-02-01T07:19:30.443Z
Errors
| Status | error_code | When | Created |
|---|---|---|---|
400 | VALIDATION_ERROR | A 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 |
404 | COMPANY_NOT_FOUND | The company_id you passed belongs to another account. | Nothing |
409 | COMPANY_ALREADY_REGISTERED | The company_id you passed already has a tax registration. | Nothing |
409 | ENVIRONMENT_MISMATCH | The company_id you passed belongs to a different environment than your API key. | Nothing |
422 | FINANZAMT_NOT_FOUND / VALIDATION_ERROR | No tax office matches the address, or the dates are out of order. | Nothing |
409 | IDEMPOTENCY_REQUEST_IN_PROGRESS | A request with the same Idempotency-Key is still running. Retry with the same key. | Nothing |
422 | IDEMPOTENCY_KEY_REUSED | The Idempotency-Key was already used with a different request body. | Nothing |
422 | ELSTER_PLAUSIBILITY_ERROR | ELSTER refuses the registration. details names each field to fix and what ELSTER needs. | Nothing |
500 | PROCESSING_ERROR | An error on our side. Contact support with the timestamp. | Nothing |
Example
{
"legal_form": "gbr",
"package": "self",
"signature_path": "M 10 10 L 90 90 M 90 10 L 10 90",
"name": "Muster & Partner GbR",
"purpose": "Grafikdesign und Beratung",
"operational_activity_start_date": "2025-03-01",
"founding_date": "2025-03-01",
"founding_kind": "1",
"accounting_profit_method": "01",
"address": {
"street": "Berger Strasse 45",
"street_second_line": "2. Etage",
"zip": "60316",
"city": "Frankfurt am Main",
"country": "de"
},
"directors": [
{
"first_name": "Max",
"middle_name": "Karl",
"last_name": "Mustermann",
"dob": "1985-07-10",
"address": {
"street": "Berger Strasse 45",
"zip": "60316",
"city": "Frankfurt am Main",
"country": "de"
}
}
],
"shareholders": {
"individuals": [
{
"first_name": "Max",
"last_name": "Mustermann",
"dob": "1985-07-10",
"address": {
"street": "Berger Strasse 45",
"zip": "60316",
"city": "Frankfurt am Main",
"country": "de"
},
"share_percentage": 50
},
{
"first_name": "Erika",
"last_name": "Musterfrau",
"dob": "1990-03-22",
"address": {
"street": "Berger Strasse 45",
"zip": "60316",
"city": "Frankfurt am Main",
"country": "de"
},
"share_percentage": 50
}
],
"entities": []
},
"vat": {
"accounting_method": "accrual",
"estimated_balance_type": "payable",
"estimated_balance_amount": 3000
},
"financial_estimates": {
"formation_year": { "revenue_amount": 40000, "profit_amount": 30000 },
"following_year": { "revenue_amount": 60000, "profit_amount": 50000 }
}
}{
"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"
}
}