Eurodebt API (1.0.1 beta)

Download OpenAPI specification:Download

Eurodebt Support: support@eurodebt.eu URL: https://eurodebt.eu License: Proprietary

Eurodebt API provides company and carrier verification services for European businesses.

Base URL

https://api.eurodebt.eu/api/{version}
Version Status URL
v1.0.1 beta Current https://api.eurodebt.eu/api/v1.0

Getting Started

  1. Obtain an API key from your Eurodebt dashboard. Navigate to Management > Settings > API Keys and click on "Create API Key".
  2. Include the API key in all requests via the x-api-key header
  3. Submit verification requests and receive results via webhooks or polling

Authentication

All 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:

  • read: Access to retrieve verification requests, reports, and usage data
  • write: Ability to submit new verification requests

Rate Limiting

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 window
  • RateLimit-Remaining: Remaining requests in current window
  • RateLimit-Reset: Time when the rate limit resets (Unix timestamp)

Webhooks

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.

How Webhooks Work

  1. Configure: Provide a webhookUrl when submitting a request (e.g., verification request, PDF generation)
  2. Event occurs: When the operation completes or fails, Eurodebt sends a POST request to your URL
  3. Process: Your server receives the payload, verifies the signature, and processes the data
  4. Acknowledge: Return a 2xx status code within 10 seconds to confirm receipt

Webhook Security (Signature Verification)

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);

Webhook Headers

Each webhook request includes the following headers:

Header Value
Content-Type application/json
User-Agent Eurodebt-Webhook/1.0
X-Eurodebt-Signature sha256=<signature>

Webhook Retry Policy

If webhook delivery fails, the system implements an automatic retry mechanism:

  1. Immediate retries: Up to 3 attempts with delays of 1s, 5s, and 30s
  2. Scheduled retries: If immediate retries fail, the webhook is scheduled for background retries at increasing intervals:
    • 5 minutes, 15 minutes, 30 minutes, 1 hour, 2 hours, 4 hours, 8 hours
  3. Maximum retries: After 10 total attempts, the webhook is marked as failed

Retryable errors:

  • Network timeouts and connection errors
  • HTTP 5xx server errors

Non-retryable errors (no further attempts):

  • HTTP 4xx client errors (except 429)

Webhook Delivery Status

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

Important Notes

  • Respond quickly: Return a 2xx status within 10 seconds to acknowledge receipt
  • Verify signatures: Always validate the X-Eurodebt-Signature header

Verification Flow

  1. Submit requestPOST /verification/submit returns requestId
  2. Processing → Verification is processed
  3. Completion → Webhook is sent (if configured) with status: "completed" or status: "rejected"
  4. Retrieve report → Use verificationId from webhook or poll GET /verification/request/{id}

Languages

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

Error Handling

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

Verification

Endpoints for submitting and retrieving verification requests and reports

Submit a verification request

Submit a new company or carrier verification request.

This endpoint requires the write permission on your API key.

Processing Time

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.

Webhook Notifications

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 records
  • verificationId: 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.

Alternative: Polling

If you don't use webhooks, you can poll GET /verification/request/{id} to check the status.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
Example
{}

Response samples

Content type
application/json
{
  • "requestId": "507f1f77bcf86cd799439011"
}

Get a verification request

Retrieve details of a specific verification request by its ID.

This endpoint requires the read permission on your API key.

Authorizations:
ApiKeyAuth
path Parameters
id
required
string^[a-f\d]{24}$
Example: 507f1f77bcf86cd799439011

Id of the verification request

query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "request": {
    }
}

List verification requests

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).

Authorizations:
ApiKeyAuth
query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "requests": [
    ],
  • "total": 42
}

Get a verification report

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.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer
Example: 12345

Numeric ID of the verification report

query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "report": {
    }
}

Request verification report PDF generation

Request async generation of a verification report as a PDF document.

This endpoint requires the read permission on your API key.

Async Webhook Delivery

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.

Rate Limiting

PDF generation is resource-intensive and has separate rate limiting (default: 1 request per minute per API key).

Webhook Payload

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.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer
Example: 12345

Numeric ID of the verification report

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
Example
{}

Response samples

Content type
application/json
{
  • "requestId": "507f1f77bcf86cd799439011",
  • "status": "queued"
}

List verification reports

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.

Authorizations:
ApiKeyAuth
query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "reports": [
    ],
  • "total": 156
}

Usage

Endpoints for monitoring account usage and quotas

Get account usage information

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.

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "usage": {
    }
}

Webhooks

Webhook callbacks sent by Eurodebt when operations complete. Each webhook type has its own payload structure documented below.

Verification completed callback Webhook

This webhook is sent to your configured webhookUrl when a verification request completes or is rejected.

Important: Your endpoint should:

  • Return a 2xx status code within 10 seconds
  • Verify the signature using the X-Eurodebt-Signature header

The webhook will be retried automatically on failure (see Webhook Retry Policy in the main description).

Payload Structure

{
  "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"
}

Payload Fields

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
Authorizations:
ApiKeyAuth
Request Body schema: application/json
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 status is completed (verification completed successfully). Use this ID with GET /verification/report/{id} to retrieve the full report.

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:

  • pending: Verification is in progress
  • completed: Verification completed successfully
  • rejected: Verification was rejected (see rejectReason for details)
rejectReason
string or null

Human-readable rejection reason, translated to the requested language. Present only when status is rejected.

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

Responses

Request samples

Content type
application/json
Example
{
  • "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"
}