Download OpenAPI specification:Download
Eurodebt API provides company and carrier verification services for European businesses.
https://api.eurodebt.eu/api/{version}
| Version | Status | URL |
|---|---|---|
| v1.0.1 beta | Current | https://api.eurodebt.eu/api/v1.0 |
x-api-key headerAll API requests require authentication using an API key. Include your API key in the x-api-key header.
x-api-key: your-api-key-here
API keys have permissions that control access to different endpoints:
The API is rate-limited to 100 requests per minute per API key
When rate limited, you will receive a 429 Too Many Requests response.
Rate limit headers are included in all responses:
RateLimit-Limit: Maximum requests per windowRateLimit-Remaining: Remaining requests in current windowRateLimit-Reset: Time when the rate limit resets (Unix timestamp)Webhooks allow you to receive real-time notifications when events occur in your account. Instead of polling the API for updates, you provide a URL and Eurodebt will send HTTP POST requests to that URL when relevant events happen.
webhookUrl when submitting a request (e.g., verification request, PDF generation)All webhook requests are signed using HMAC-SHA256 with your API key's webhook secret.
The signature is included in the X-Eurodebt-Signature header.
Header format: sha256=<hex-encoded-signature>
Node.js / Express:
const crypto = require('crypto');
app.post('/webhook', (req, res) => {
const signature = req.headers['x-eurodebt-signature'];
const expected = 'sha256=' + crypto
.createHmac('sha256', WEBHOOK_SECRET)
.update(JSON.stringify(req.body))
.digest('hex');
if (signature !== expected) {
return res.status(401).send('Invalid signature');
}
res.status(200).send('OK');
});
Python / Flask:
import hmac, hashlib
@app.route('/webhook', methods=['POST'])
def webhook():
signature = request.headers.get('X-Eurodebt-Signature', '')
expected = 'sha256=' + hmac.new(WEBHOOK_SECRET.encode(), request.data, hashlib.sha256).hexdigest()
if not hmac.compare_digest(signature, expected):
return 'Invalid signature', 401
return 'OK', 200
PHP:
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_EURODEBT_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $payload, WEBHOOK_SECRET);
if (!hash_equals($expected, $signature)) {
http_response_code(401);
exit('Invalid signature');
}
http_response_code(200);
Each webhook request includes the following headers:
| Header | Value |
|---|---|
Content-Type |
application/json |
User-Agent |
Eurodebt-Webhook/1.0 |
X-Eurodebt-Signature |
sha256=<signature> |
If webhook delivery fails, the system implements an automatic retry mechanism:
Retryable errors:
Non-retryable errors (no further attempts):
You can check webhook delivery status by retrieving the verification request:
| Status | Description |
|---|---|
pending |
Webhook is queued or awaiting retry |
delivered |
Webhook was successfully delivered |
failed |
All retry attempts exhausted |
X-Eurodebt-Signature headerPOST /verification/submit returns requestIdstatus: "completed" or status: "rejected"verificationId from webhook or poll GET /verification/request/{id}Several endpoints support a language parameter for translatable fields.
🇧🇬 bg Bulgarian |
🇨🇿 cs Czech |
🏴 cy Welsh |
🇩🇰 da Danish |
🇩🇪 de German |
🇬🇷 el Greek |
🇬🇧 en English |
🇪🇸 es Spanish |
🇪🇪 et Estonian |
🇫🇮 fi Finnish |
🇫🇷 fr French |
🇮🇪 ga Irish |
🇭🇷 hr Croatian |
🇭🇺 hu Hungarian |
🇮🇸 is Icelandic |
🇮🇹 it Italian |
🇱🇹 lt Lithuanian |
🇱🇻 lv Latvian |
🇲🇹 mt Maltese |
🇳🇱 nl Dutch |
🇵🇱 pl Polish |
🇵🇹 pt Portuguese |
🇷🇴 ro Romanian |
🇷🇺 ru Russian |
🇸🇰 sk Slovak |
🇸🇮 sl Slovenian |
🇸🇪 sv Swedish |
🇹🇷 tr Turkish |
🇺🇦 uk Ukrainian |
All errors return a consistent JSON structure:
{
"error": {
"type": "ERROR_TYPE",
"message": "Human-readable error description"
}
}
| HTTP Status | Error Type | Description |
|---|---|---|
| 400 | BAD_REQUEST |
Invalid request parameters |
| 401 | UNAUTHORIZED |
Missing, invalid, or expired API key |
| 402 | PAYMENT_REQUIRED |
Insufficient funds or credits |
| 403 | FORBIDDEN |
API key lacks required permission |
| 404 | NOT_FOUND |
Resource not found |
| 429 | TOO_MANY_REQUESTS |
Rate limit exceeded |
| 500 | INTERNAL_SERVER_ERROR |
Server error |
Submit a new company or carrier verification request.
This endpoint requires the write permission on your API key.
Business Hours Processing:
Requests submitted during our business hours (Monday-Friday, 7:00-18:00 CET) are typically processed within minutes.
After-Hours Processing:
Requests submitted outside of business hours may be queued for processing on the next business day. However, our automated systems continue to process requests 24/7 whenever possible, so you may still receive results outside of standard hours.
If a webhookUrl is provided, a notification will be sent when the verification completes or is rejected.
The webhook payload includes:
requestId: Use to correlate with your recordsverificationId: Use to fetch the full report (only if completed successfully)status: Request status (pending, completed, or rejected)rejectReason: Human-readable rejection reason (translated to requested language)See the Webhooks section for payload format, signature verification, and retry policy.
If you don't use webhooks, you can poll GET /verification/request/{id} to check the status.
| type required | string Enum: "company" "carrier" Type of verification to perform |
| countryCode required | string = 2 characters ISO 3166-1 alpha-2 country code |
| vatNumber required | string [ 1 .. 18 ] characters VAT number without country code prefix |
| companyName | string <= 256 characters Optional company name for reference |
| webhookUrl | string <uri> URL to receive webhook notification when verification is complete. Must be a valid HTTP or HTTPS URL. HTTPS is strongly recommended for production. See the Webhooks section for payload format and security details. |
{- "type": "company",
- "countryCode": "PL",
- "vatNumber": "1234567890",
- "companyName": "Przykładowa Firma Sp. z o.o.",
}{- "requestId": "507f1f77bcf86cd799439011"
}Retrieve details of a specific verification request by its ID.
This endpoint requires the read permission on your API key.
| id required | string^[a-f\d]{24}$ Example: 507f1f77bcf86cd799439011 Id of the verification request |
| language | string Default: "en" Enum: "bg" "cs" "cy" "da" "de" "el" "en" "es" "et" "fi" "fr" "ga" "hr" "hu" "is" "it" "lt" "lv" "mt" "nl" "pl" "pt" "ro" "ru" "sk" "sl" "sv" "tr" "uk" Example: language=en Language code for translatable fields |
{- "request": {
- "id": "507f1f77bcf86cd799439011",
- "type": "company",
- "dateCreated": "2024-01-15T10:30:00.000Z",
- "dateCompleted": "2024-01-15T14:45:00.000Z",
- "countryCode": "PL",
- "vatNumber": "1234567890",
- "companyName": "Example Company Sp. z o.o.",
- "status": "pending",
- "verificationId": 12345,
- "rejectReason": null,
}
}Retrieve a paginated list of all verification requests for your company.
This endpoint requires the read permission on your API key.
Results are sorted by creation date in descending order (newest first).
| type | string Default: "any" Enum: "company" "carrier" "any" Filter requests by verification type |
| limit | integer [ 1 .. 25 ] Default: 10 Maximum number of requests to return (1-25) |
| offset | integer >= 0 Default: 0 Number of requests to skip for pagination |
| language | string Default: "en" Enum: "bg" "cs" "cy" "da" "de" "el" "en" "es" "et" "fi" "fr" "ga" "hr" "hu" "is" "it" "lt" "lv" "mt" "nl" "pl" "pt" "ro" "ru" "sk" "sl" "sv" "tr" "uk" Example: language=en Language code for translatable fields |
{- "requests": [
- {
- "id": "507f1f77bcf86cd799439011",
- "type": "company",
- "dateCreated": "2024-01-15T10:30:00.000Z",
- "dateCompleted": "2024-01-15T14:45:00.000Z",
- "countryCode": "PL",
- "vatNumber": "1234567890",
- "companyName": "Example Company Sp. z o.o.",
- "status": "pending",
- "verificationId": 12345,
- "rejectReason": null,
}
], - "total": 42
}Retrieve a completed verification report by its numeric ID.
This endpoint requires the read permission on your API key.
The report contains detailed verification results including company information, financial data, risk indicators, and more depending on the verification type.
| id required | integer Example: 12345 Numeric ID of the verification report |
| language | string Default: "en" Enum: "bg" "cs" "cy" "da" "de" "el" "en" "es" "et" "fi" "fr" "ga" "hr" "hu" "is" "it" "lt" "lv" "mt" "nl" "pl" "pt" "ro" "ru" "sk" "sl" "sv" "tr" "uk" Example: language=en Language code for translatable fields |
{- "report": {
- "id": 12345,
- "type": "company",
- "dateCreated": "2024-01-15T14:45:00.000Z",
- "companyName": "Example Company Sp. z o.o.",
- "address": "ul. Przykładowa 123, 00-001 Warszawa",
- "postCode": "00-001",
- "countryCode": "PL",
- "vatNumber": "1234567890",
- "city": "Warszawa",
- "street": "Przykładowa",
- "houseNumber": "123",
- "apartmentNumber": "4A",
- "region": "Mazowieckie",
- "viesStatus": "true",
- "dateFounded": "2010-05-15T00:00:00.000Z",
- "dateTerminated": null,
- "employeesTotal": 25,
- "activityCodes": [
- {
- "code": "49.41.Z",
- "description": "Road freight transport"
}
], - "financialReportsStatus": "true",
- "turnover": 5000000,
- "estimatedTurnover": null,
- "profit": 500000,
- "estimatedProfit": null,
- "assetsTotal": 2500000,
- "estimatedAssetsTotal": 0,
- "assetsLiquid": 0,
- "estimatedAssetsLiquid": 0,
- "assetsFixed": 0,
- "estimatedAssetsFixed": 0,
- "workingCapital": 0,
- "estimatedWorkingCapital": 0,
- "cashInHand": 0,
- "estimatedCashInHand": 0,
- "equity": 0,
- "estimatedEquity": 0,
- "meansOfTransport": 0,
- "estimatedMeansOfTransport": 0,
- "currency": "PLN",
- "dateFinancialReport": "2019-08-24T14:15:22Z",
- "isDateFinancialReportYearOnly": true,
- "financialReportPeriodStart": "2019-08-24T14:15:22Z",
- "financialReportPeriodEnd": "2019-08-24T14:15:22Z",
- "vatWhitelist": {
- "status": "string",
- "ibans": [
- "string"
], - "dateRegistration": "2019-08-24T14:15:22Z",
- "dateRemoved": "2019-08-24T14:15:22Z",
- "dateRestoration": "2019-08-24T14:15:22Z",
- "hasVirtualAccounts": true
}, - "socialMedia": {
- "website": "string",
- "facebook": "string",
- "twitter": "string",
- "linkedIn": "string",
- "googleID": "string"
}, - "eurodebtCollectionListed": true,
- "debtCollectionListed": true,
- "eurodebtBlacklisted": true,
- "virtualOffice": "true",
- "lastYearNameChanged": "true",
- "lastYearBoardChanged": "true",
- "taxDebt": "true",
- "courtProceedingsListed": "true",
- "restructuringProceedingsListed": "true",
- "bunkrupcyProceedingsListed": "true",
- "isInSolventCapitalGroup": "true",
- "paymentDelay": "none",
- "score": 85,
- "subject": {
- "color": "string",
- "text": "string"
}, - "creditLimitFrom": 0,
- "creditLimitTo": 0,
- "comments": "string",
- "highlights": "string",
- "precautions": "string",
- "relatedCompanies": [
- {
- "countryCode": "string",
- "vatNumber": "string",
- "id": "string",
- "name": "string"
}
], - "companyRegisterChanges": {
- "hasChanges": true,
- "dateCaptured": "2019-08-24T14:15:22Z",
- "events": [
- {
- "date": "2019-08-24T14:15:22Z",
- "type": "registration",
- "event": "company.events.company.name.changed",
- "eventParams": {
- "oldName": "Old Company Name Sp. z o.o.",
- "newName": "New Company Name Sp. z o.o."
}, - "sourceRegister": "KRS",
- "sourceReference": "0000123456"
}
]
}, - "verdict": "true",
- "transportManagersDetails": [
- {
- "firstName": "string",
- "lastName": "string",
- "certificateNumber": "string",
- "certificateType": "string",
- "certificateIssuanceDate": "2019-08-24T14:15:22Z",
- "certificateIssuingCountry": "string"
}
], - "permits": [
- {
- "scope": "string",
- "id": "string",
- "status": "string",
- "issuingAuthority": "string",
- "issueDate": "2019-08-24T14:15:22Z",
- "statusChangeDate": "2019-08-24T14:15:22Z",
- "vehicleCount": 0,
- "expirationDate": "2019-08-24T14:15:22Z",
- "revocationDate": "2019-08-24T14:15:22Z",
- "suspensionDate": "2019-08-24T14:15:22Z",
- "suspensionLiftDate": "2019-08-24T14:15:22Z",
- "suspensionOrRevocationReason": "string"
}
], - "licenses": [
- {
- "id": "string",
- "scope": "string",
- "status": "string",
- "validityStartDate": "2019-08-24T14:15:22Z",
- "validityEndDate": "2019-08-24T14:15:22Z",
- "vehicleCount": 0,
- "expirationDate": "2019-08-24T14:15:22Z",
- "revocationDate": "2019-08-24T14:15:22Z",
- "suspensionDate": "2019-08-24T14:15:22Z",
- "suspensionLiftDate": "2019-08-24T14:15:22Z",
- "suspensionOrWithdrawalReason": "string"
}
], - "permitExtracts": [
- {
- "scope": "string",
- "id": "string",
- "status": "string"
}
], - "licenseExtracts": [
- {
- "id": "string",
- "type": "string",
- "scope": "string",
- "status": "string",
- "revocationDate": "2019-08-24T14:15:22Z",
- "revocationExpirationDate": "2019-08-24T14:15:22Z"
}
], - "legalRepresentatives": [
- {
- "firstName": "string",
- "lastName": "string"
}
], - "vehiclesNumber": 0
}
}Request async generation of a verification report as a PDF document.
This endpoint requires the read permission on your API key.
PDF generation is performed asynchronously. When complete, a webhook is sent to your
provided webhookUrl with a temporary download link. The URL is valid for 1 hour.
The endpoint returns immediately with a requestId to track the generation.
PDF generation is resource-intensive and has separate rate limiting (default: 1 request per minute per API key).
On success:
{
"requestId": "507f1f77bcf86cd799439011",
"verificationId": 12345,
"status": "completed",
"downloadUrl": "https://...",
"dateExpires": "2024-01-15T15:45:00.000Z",
"fileName": "EURODEBT.eu - PL1234567890 - ABC12XYZ.pdf"
}
On failure:
{
"requestId": "507f1f77bcf86cd799439011",
"verificationId": 12345,
"status": "failed"
}
The webhook is signed with the same X-Eurodebt-Signature header as other webhooks.
| id required | integer Example: 12345 Numeric ID of the verification report |
| language | string Default: "en" Enum: "bg" "cs" "cy" "da" "de" "el" "en" "es" "et" "fi" "fr" "ga" "hr" "hu" "is" "it" "lt" "lv" "mt" "nl" "pl" "pt" "ro" "ru" "sk" "sl" "sv" "tr" "uk" Language code for translated fields in the PDF |
| webhookUrl required | string <uri> URL to receive webhook notification when PDF is ready. Must be a valid HTTP or HTTPS URL. HTTPS is strongly recommended. |
{- "language": "en",
}{- "requestId": "507f1f77bcf86cd799439011",
- "status": "queued"
}Retrieve a paginated list of all completed verification reports for your company.
This endpoint requires the read permission on your API key.
Results are sorted by creation date in descending order (newest first). Returns a summarized version of reports suitable for listings.
| type | string Default: "any" Enum: "company" "carrier" "any" Filter reports by verification type |
| limit | integer [ 1 .. 25 ] Default: 10 Maximum number of reports to return (1-25) |
| offset | integer >= 0 Default: 0 Number of reports to skip for pagination |
| countryCode | string = 2 characters Example: countryCode=PL Filter by ISO 3166-1 alpha-2 country code (e.g., PL, DE) |
| vatNumber | string [ 1 .. 32 ] characters Example: vatNumber=123456 Filter by VAT number |
| search | string [ 2 .. 128 ] characters Example: search=Transport Search in company name |
{- "reports": [
- {
- "id": 12345,
- "type": "company",
- "dateAdded": "2024-01-15T14:45:00.000Z",
- "companyName": "Example Company Sp. z o.o.",
- "address": "ul. Przykładowa 123, 00-001 Warszawa",
- "countryCode": "PL",
- "vatNumber": "1234567890",
- "score": 85,
- "verdict": "true"
}
], - "total": 156
}Retrieve current usage information for your account, including points balance, package quotas, and active subscriptions.
This endpoint requires the read permission on your API key.
{- "usage": {
- "points": 1500,
- "packages": [
- {
- "service": "verification",
- "used": 45,
- "limit": 100,
- "isOverageEnabled": true,
- "dateActiveUntil": "2024-12-31T23:59:59.000Z",
- "autoRenewal": true
}
], - "subscriptions": [
- {
- "service": "blacklist",
- "dateActiveUntil": "2024-12-31T23:59:59.000Z",
- "autoRenewal": true
}
]
}
}Webhook callbacks sent by Eurodebt when operations complete. Each webhook type has its own payload structure documented below.
This webhook is sent to your configured webhookUrl when a verification request completes or is rejected.
Important: Your endpoint should:
X-Eurodebt-Signature headerThe webhook will be retried automatically on failure (see Webhook Retry Policy in the main description).
{
"apiVersion": "1.0",
"requestId": "507f1f77bcf86cd799439011",
"verificationId": 12345,
"countryCode": "PL",
"vatNumber": "1234567890",
"companyName": "Przykładowa Firma Sp. z o.o.",
"type": "company",
"status": "completed",
"rejectReason": null,
"dateCreated": "2024-01-15T10:30:00.000Z",
"dateCompleted": "2024-01-15T14:45:00.000Z"
}
| Field | Type | Description |
|---|---|---|
apiVersion |
string | API version that created the request |
requestId |
string | Id of the verification request |
verificationId |
integer | Numeric ID of the completed verification report (only if completed successfully) |
countryCode |
string | ISO 3166-1 alpha-2 country code |
vatNumber |
string | VAT number that was verified |
companyName |
string | Company name (if provided during submission) |
type |
string | Verification type: company or carrier |
status |
string | Request status: pending, completed, or rejected |
rejectReason |
string | Reason for rejection (if rejected) |
dateCreated |
string | ISO 8601 timestamp when request was submitted |
dateCompleted |
string | ISO 8601 timestamp when verification completed |
| apiVersion required | string API version that created the verification request |
| requestId required | string^[a-f\d]{24}$ Id of the verification request |
| verificationId | integer Numeric ID of the completed verification report.
Only present when |
| countryCode required | string ISO 3166-1 alpha-2 country code |
| vatNumber required | string VAT number that was verified |
| companyName | string Company name |
| type required | string Enum: "company" "carrier" Type of verification performed |
| status required | string (VerificationRequestStatus) Enum: "pending" "completed" "rejected" Status of a verification request:
|
| rejectReason | string or null Human-readable rejection reason, translated to the requested language.
Present only when status is |
| dateCreated required | string <date-time> ISO 8601 timestamp when the request was submitted |
| dateCompleted | string <date-time> ISO 8601 timestamp when the verification completed or was rejected |
{- "apiVersion": "1.0",
- "requestId": "507f1f77bcf86cd799439011",
- "verificationId": 12345,
- "countryCode": "PL",
- "vatNumber": "1234567890",
- "companyName": "Example Company Sp. z o.o.",
- "type": "company",
- "status": "completed",
- "dateCreated": "2024-01-15T10:30:00.000Z",
- "dateCompleted": "2024-01-15T14:45:00.000Z"
}