# Poland Supplier Risk & VAT Registry Checker (`registry-tools/poland-supplier-risk-check`) Actor

Verify Polish companies and suppliers using official KRS and VAT registry data. Check NIP, KRS, REGON, VAT status, company details, identifiers, and optional bank-account assignment. Returns structured JSON with clear risk signals.

- **URL**: https://apify.com/registry-tools/poland-supplier-risk-check.md
- **Developed by:** [Alex](https://apify.com/registry-tools) (community)
- **Categories:** Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Poland Supplier Risk & VAT Registry Checker

Verify a Polish company or supplier against official public registers in a single run.

The Actor checks identity data across the Polish National Court Register (KRS) and the Ministry of Finance VAT Whitelist, then returns a structured JSON report with clear verification signals and source evidence.

### What this Actor checks

- current VAT status
- NIP, REGON, and KRS consistency across supplied input and official sources
- company name and addresses
- legal form and registration details from KRS
- date of the latest KRS entry
- representation method and available representative records
- optional bank-account assignment in the VAT Whitelist for a selected date
- official request IDs and source-level errors for audit and troubleshooting

### Common use cases

- supplier and contractor onboarding
- vendor master-data validation
- procurement due diligence
- payment pre-checks
- counterparty verification workflows
- API-based company-data enrichment

### Input

Provide at least one Polish company identifier:

- `nip` — 10 digits
- `krs` — up to 10 digits; leading zeros are added automatically
- `regon` — 9 or 14 digits

Optional fields:

- `bankAccount` — Polish account number or IBAN; spaces and the `PL` prefix are accepted
- `checkDate` — verification date in `YYYY-MM-DD` format; defaults to today
- `language` — `en` or `pl` for the summary
- `includeRawData` — include full official API responses in the output

Bank-account verification requires `nip` or `regon` in the same run.

#### Example input

```json
{
  "nip": "5252674798",
  "krs": "0000635012",
  "regon": "365331553",
  "language": "en",
  "includeRawData": false
}
```

### Output

Each successful run writes one report to the default dataset and stores the same report as `OUTPUT` in the default key-value store.

Main fields:

- `verificationStatus`
- `summary`
- `checkedAtDate`
- `input`
- `company`
- `bankAccountVerification`
- `riskSignals`
- `evidence`
- `disclaimer`

#### Verification statuses

- `verified` — no material warning signal was detected in the checked fields
- `manual_review` — official data was missing, incomplete, or ambiguous
- `high_attention` — a material mismatch or adverse registry signal was detected

#### Example result

```json
{
  "verificationStatus": "verified",
  "summary": "ALLEGRO SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ: verification completed without material warning signals. High-severity signals: 0; medium-severity signals: 0.",
  "company": {
    "name": "ALLEGRO SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
    "nip": "5252674798",
    "regon": "365331553",
    "krs": "0000635012",
    "vatStatus": "Czynny"
  },
  "riskSignals": [
    {
      "severity": "info",
      "code": "VAT_ACTIVE",
      "message": "Entity is shown as an active VAT taxpayer."
    },
    {
      "severity": "info",
      "code": "KRS_FOUND",
      "message": "A current KRS extract was returned."
    }
  ]
}
```

### Risk signals

The Actor uses deterministic rules rather than an opaque score. Examples include:

- `VAT_ACTIVE`
- `VAT_STATUS_ALERT`
- `VAT_ENTITY_NOT_FOUND`
- `KRS_FOUND`
- `KRS_NOT_FOUND`
- `NIP_MISMATCH`
- `REGON_MISMATCH`
- `KRS_MISMATCH`
- `BANK_ACCOUNT_MATCH`
- `BANK_ACCOUNT_MISMATCH`
- `BANK_ACCOUNT_UNVERIFIED`

Every signal includes a severity, code, and readable message.

### Official data sources

- Polish Ministry of Justice — National Court Register current extract API
- Polish Ministry of Finance — VAT Whitelist API

No external API key is required.

### Important limitations

This Actor provides automated public-registry verification signals. It is not a credit score and does not replace legal, tax, accounting, AML, sanctions, or procurement review.

KRS details are available only for entities registered in KRS. Sole traders or other entities outside KRS may return partial company information. Results also depend on the availability and freshness of the official source systems at the time of the run.

Review the official source records before making consequential decisions.

# Actor input Schema

## `nip` (type: `string`):

Polish tax identification number. Spaces and punctuation are removed automatically.

## `krs` (type: `string`):

Polish National Court Register number. It is normalized to 10 digits.

## `regon` (type: `string`):

Polish statistical business identifier.

## `bankAccount` (type: `string`):

Optional Polish bank account. PL prefix, spaces, and punctuation are removed automatically.

## `checkDate` (type: `string`):

Date used for the VAT Whitelist check. Defaults to today's date.

## `language` (type: `string`):

Language used for the short human-readable summary.

## `includeRawData` (type: `boolean`):

Include full KRS and VAT API responses in the output for audit and debugging.

## Actor input object example

```json
{
  "nip": "5272710534",
  "krs": "0000500605",
  "language": "en",
  "includeRawData": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("registry-tools/poland-supplier-risk-check").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("registry-tools/poland-supplier-risk-check").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call registry-tools/poland-supplier-risk-check --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=registry-tools/poland-supplier-risk-check",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/kJg1o8Nm8PC4HUyf8/builds/kboADbjdrWL20JqK7/openapi.json
