Overview
Submit a company's details to register it for tax. A self registration is filed with ELSTER within the request, and the response carries ELSTER's transfer ticket and the filing's documents. If the filing does not go through, one of our managers resolves it and files it.
POST https://api.beglaubigt.de/v1/tax-registration
This endpoint creates a tax registration for one of the supported German legal forms. The legal_form field selects the
shape of the request, and each legal form maps to a distinct ELSTER form with its own fields and rules.
Pick the page for your legal form, each one is a complete reference:
- UG / GmbH: the corporation form (Kapitalgesellschaft).
- GbR / eGbR: the partnership form (Personengesellschaft).
- Freiberufler / Einzelunternehmen: the sole-proprietor form.
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.
How It Works
- You submit the company's details for a given
legal_form. - The API validates the payload, generates the matching ELSTER XML form, and checks it against ELSTER's own rules. If any of these fails, the response is an error naming what to fix, and nothing is created: correct the request and send it again.
- The case is created, and a
selfregistration is filed with ELSTER within the same request. The response hasstatus: submitted, ELSTER'stransfer_ticket, the tax office, and links to the questionnaire and to ELSTER's confirmation. If ELSTER still refuses the filing, the case is removed and the response is the same error as in step 2. - An
assistedregistration is reviewed by a lawyer before it is filed, so its response hasstatus: validated. - Only if the filing fails in a way that may have reached ELSTER is the case kept, with
status: blocked: a manager checks it with ELSTER and finishes it, and thetax-registration.completedwebhook tells you when it is done.
Authorization
To authenticate requests, include an Authorization header with a Bearer token:
Authorization: Bearer <token>
Example: Bearer sk-123e4567-e89b-12d3-a456-426614174000