registercheckby openlaw group
Guides

Check a customer

Compare what a customer told you with the register, and ask one question about a company.

Two operations answer onboarding questions in one call each: POST /companies/verify compares a customer's details with the register, and POST /answers answers one question about one company. Neither answer is stored: each has an id for your records, and asking again produces a new answer and a new charge. The question you send to POST /answers is kept with your workspace for 90 days and then deleted, as Teil G of our Datenschutzhinweise describes.

Verify what a customer told you

Send the details as one line, the way a customer types them, and name the risk checks to run:

curl -X POST "https://api.registercheck.de/v1/companies/verify" \
  -H "Authorization: Bearer $REGISTERCHECK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Enduro Reise & Training GmbH, HRB 13557, In der Paint 14, 87730 Bad Grönenbach",
    "checks": ["status", "insolvency"]
  }'

The company is found by the register identity in the text (with its court, when the text names one), else by its name. Instead of text you can send the same details as fields in company (name, register, address, each a string). Send one of the two.

The answer:

  • result — passed, passed_with_warnings (a minor mismatch, or an unknown somewhere) or failed (a field mismatch or a risk fail).
  • company — the company record it compared with.
  • fields — one row per detail: name, register, address and signatory, each match, mismatch_minor (a spelling, the same town on another street, or the address before the last registered change, with registered_since), mismatch, not_provided, or unknown (a signatory the company's privacy rules keep us from checking).
  • risk — one row per check: pass, fail or unknown. unknown means the data to judge it is missing; it is never a silent pass. status always runs; insolvency (read from the register's own entries), sanctions and ubo (the computed beneficial owners) run when you ask for them.
  • summary — how many fields were checked, matched, warned or failed, and how many risk flags were raised.

Add "signatory": "<name>" to check that a person is a current representative: match when one of that name is registered, mismatch when none is. When the company's privacy rules withheld someone, the answer is unknown: a restricted person is never confirmed or denied.

Price: 4 credits, plus 8 when checks includes ubo. A company the details do not match answers 404, and details that match more than one company answer 409 register_identity_ambiguous with the candidates (up to 100); neither is charged.

Ask one question

curl -X POST "https://api.registercheck.de/v1/answers" \
  -H "Authorization: Bearer $REGISTERCHECK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question": "Wo hat die Enduro Reise & Training GmbH ihren Sitz?"}'

The question names the company by its name or its register identity (HRB 13557), and it is found the way verify finds it. Six kinds of question are answered, and type says which one this was: representation (may a named person represent the company alone), beneficial_owner, officers, shareholders, seat and status. A language model only reads the question — its kind, the company and the person — and the answer is composed from register data by rules.

The answer carries summary (one German sentence; for this question on 6 November 2026, "Enduro Reise & Training GmbH hat ihren Sitz in Bad Grönenbach."), details (German lines saying what it was read from), result (the answer as data, one shape per type), confidence (high or medium) and sources.

Price: 8 credits. A question outside the six kinds, or one that names no company, answers 422 question_not_supported; that, a company that is not found (404) or ambiguous (409), and a read that fails are not charged.

On this page