Rejestry API to część platformy DebtStrike — sprawdzania kontrahentów i windykacji.Sprawdź firmę bez integracji →

Rejestry API → CRBR API

CRBR API

GET /v1/crbr/{nip}

Beneficjenci rzeczywiści z oficjalnej bramki SOAP Ministerstwa Finansów — nie z nieoficjalnego backendu portalu.

RODO — ograniczenie u źródła. Z numeru PESEL beneficjenta wyprowadzamy wyłącznie rok urodzenia. Samego numeru nie zwracamy, nie logujemy i nie przechowujemy — dotyczy to także surowej odpowiedzi zapisywanej jako dowód w certyfikacie. Maskowanie dzieje się w warstwie pobrania, więc PESEL nie istnieje nigdzie poza pamięcią procesu w chwili parsowania.

not_found tu znaczy coś innego niż gdzie indziej. Oznacza brak wpisu w rejestrze, a nie brak podmiotu. Z obowiązku zgłoszenia zwolnione są m.in. spółki publiczne, a jednoosobowe działalności w CRBR w ogóle nie figurują. Nie interpretuj tego jako „spółka ukrywa beneficjentów”.

CRBR jest świadomie poza agregatem /v1/subjects — dane o osobach fizycznych pobieramy tylko wtedy, gdy o nie wprost poprosisz. Agregat mówi o tym jawnie w polu notIncluded.

Przykład zapytania i odpowiedzi

Beneficjenci rzeczywiści podmiotu po NIP-ie. Klucz testowy zwraca wyłącznie beneficjenta syntetycznego, bo piaskownica nie dotyka rejestru z danymi osobowymi.

curl -s https://api.debtstrike.eu/v1/crbr/7740001454 \
  -H "Authorization: Bearer ds_test_TWOJ_KLUCZ"

Zapytanie działa z kluczem testowym ds_test_. Taki klucz zwraca stałe, syntetyczne dane podmiotu testowego (NIP 7740001454, KRS 0000028860, REGON 610188201), nie dotyka rejestrów i nie zdejmuje ani jednej jednostki pakietu ("billed": 0). Każdy inny numer zwraca status: not_found, więc przećwiczysz też tę ścieżkę. Z kluczem ds_live_ zmienia się tylko klucz, a dane są prawdziwe.

{
  "status": "found",
  "data": {
    "nip": "7740001454",
    "krs": "0000028860",
    "name": "PODMIOT TESTOWY SPÓŁKA AKCYJNA (SANDBOX)",
    "legalFormCode": "SA",
    "legalForm": "SPÓŁKA AKCYJNA",
    "address": { "city": "PŁOCK", "postalCode": "09-411", "building": "7",
                 "flat": null, "commune": "M. PŁOCK", "county": "M. PŁOCK" },
    "beneficiaries": [
      {
        "firstName": "JAN",
        "lastName": "KOWALSKI",
        "birthYear": 1985,
        "citizenship": ["PL"],
        "countryOfResidence": "PL",
        "role": "UDZIAŁOWIEC BEZPOŚREDNI",
        "shares": [ { "amount": "51", "unit": "PROCENT", "privilege": null } ]
      }
    ],
    "reportedAt": "2020-01-13",
    "referenceNumber": "SANDBOX-0001"
  },
  "meta": { "billed": 0 }
}

Dane beneficjenta w przykładzie są wymyślone i nie dotyczą żadnej prawdziwej osoby. Fragment odpowiedzi: koperta jest opisana na stronie przeglądowej.

Pola odpowiedzi w data

Pole Typ Znaczenie
nip, krs, name string albo null Identyfikatory i nazwa podmiotu, którego dotyczy zgłoszenie.
legalFormCode, legalForm string albo null Kod i nazwa formy prawnej.
address object Adres podmiotu: city, postalCode, building, flat, commune, county.
beneficiaries[] array Lista beneficjentów rzeczywistych ze zgłoszenia.
beneficiaries[].firstName, lastName string Imię i nazwisko beneficjenta.
beneficiaries[].birthYear number Rok urodzenia. To jedyna dana wyprowadzona z numeru PESEL, samego numeru nie zwracamy ani nie przechowujemy.
beneficiaries[].citizenship string[] Obywatelstwa (kody państw).
beneficiaries[].countryOfResidence string Kraj zamieszkania (kod państwa).
beneficiaries[].role string Charakter uprawnień beneficjenta, np. UDZIAŁOWIEC BEZPOŚREDNI.
beneficiaries[].shares[] array Udziały: amount (tekst), unit (np. PROCENT) i privilege (uprzywilejowanie lub null).
reportedAt, referenceNumber string Data zgłoszenia do CRBR i numer referencyjny zgłoszenia.

Odpowiedzi i błędy tego endpointu

HTTP Kod lub status Kiedy
200 found W CRBR jest zgłoszenie podmiotu.
200 not_found Brak wpisu w CRBR. Nie znaczy to, że podmiot ukrywa beneficjentów: z obowiązku zgłoszenia zwolnione są m.in. spółki publiczne, a jednoosobowych działalności w CRBR w ogóle nie ma.
200 unavailable Bramka MF nie odpowiedziała. To brak wiedzy, nie dowód braku wpisu.
400 invalid_identifier NIP bez 10 cyfr lub z błędną sumą kontrolną.
403 source_not_in_plan Klucz nie ma zakresu crbr.

Pozostałe kody (401, 429, 500) są wspólne dla wszystkich źródeł i opisane w tabeli błędów. Błędy mają format application/problem+json (RFC 9457) z polami code i requestId.

Pozostałe rejestry w tym samym API

Wszystkie źródła mają tę samą kopertę, ten sam sposób uwierzytelniania i te same kody błędów:

Zanim wyślesz pierwsze zapytanie

Zasady wspólne dla wszystkich źródeł opisuje strona przeglądowa: uwierzytelnianie kluczem, koperta odpowiedzi, różnica między not_found a unavailable, rozliczenie zapytań i limity. Pełny kontrakt: /v1/openapi.json.

Uzyskaj dostęp do API →