REST API

Integrate debt collection into your systems in a few lines of code

GetBill is a SaaS platform for amicable debt collection powered by artificial intelligence. Its REST API allows your technical teams to connect debt collection directly to your systems. Create cases, track their status in real time, receive payment notifications. 40% of cases are resolved without human intervention.

For technical teams, software publishers, integrators.

REST standard API
OAuth2 authentication
Real time webhooks
CSV/XLSX bulk import
Endpoints

Create a debt collection case in one request

The POST /external-api/v1/debts endpoint creates a complete case: debtor details, amount, reference, due date, follow up scenario. GetBill automatically triggers reminders according to the chosen scenario. Here is a concrete example in three languages.

cURL
# Créer un dossier de recouvrement
curl -X POST https://getbill.io/external-api/v1/debts \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "debtor": {
      "name": "Jean Dupont",
      "email": "jean.dupont@email.com",
      "phone": "+33612345678"
    },
    "amount": 2340.00,
    "currency": "EUR",
    "reference": "F-2024-0847",
    "due_date": "2024-01-15",
    "scenario": "standard_3_waves"
  }'
Python
import requests

# Créer un dossier de recouvrement
response = requests.post(
    "https://getbill.io/external-api/v1/debts",
    headers={"Authorization": "Bearer YOUR_TOKEN"},
    json={
        "debtor": {
            "name": "Jean Dupont",
            "email": "jean.dupont@email.com",
            "phone": "+33612345678"
        },
        "amount": 2340.00,
        "currency": "EUR",
        "reference": "F-2024-0847",
        "due_date": "2024-01-15",
        "scenario": "standard_3_waves"
    }
)

debt = response.json()
print(f"Dossier créé : {debt['id']}")
Node.js
// Créer un dossier de recouvrement
const response = await fetch('https://getbill.io/external-api/v1/debts', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    debtor: {
      name: 'Jean Dupont',
      email: 'jean.dupont@email.com',
      phone: '+33612345678'
    },
    amount: 2340.00,
    currency: 'EUR',
    reference: 'F-2024-0847',
    due_date: '2024-01-15',
    scenario: 'standard_3_waves'
  })
});

const debt = await response.json();
console.log(`Dossier créé : ${debt.id}`);

Each case created via the API receives a unique identifier. Track its progress with GET /external-api/v1/debts/{id}, list your cases with GET /external-api/v1/debts (pagination included), or update information with PUT /external-api/v1/debts/{id}. Available filters: status, date, amount, scenario. JSON responses with standard HTTP codes.

Other available endpoints

GET /external-api/v1/debts

List and filter your cases. Pagination, sort by date, filter by status and amount.

GET /external-api/v1/followups

Follow up history: AI calls, SMS, emails, letters. Timestamps and channel used.

GET /external-api/v1/reports

Collection statistics: resolution rate, amounts recovered, average delay.

Webhooks

Receive events in real time

GetBill webhooks notify your system as soon as an event occurs on a debt collection case. No more polling: your ERP, CRM or billing tool is updated instantly. Each webhook contains all the data needed to update your system without additional requests.

  • debt.created: a new case is created
  • debt.contacted: the debtor has been successfully contacted
  • debt.payment_received: a payment has been received
  • debt.resolved: the case is fully resolved
  • debt.escalated: the case has been escalated to legal
  • followup.completed: a follow up has been completed (with details)
Webhook payload
{
  "event": "debt.payment_received",
  "timestamp": "2024-03-15T14:32:07Z",
  "data": {
    "debt_id": "debt_a1b2c3d4",
    "reference": "F-2024-0847",
    "payment": {
      "amount": 2340.00,
      "currency": "EUR",
      "method": "card",
      "stripe_payment_id": "pi_3Ox..."
    },
    "debtor": {
      "name": "Jean Dupont",
      "email": "jean.dupont@email.com"
    },
    "status": "resolved",
    "resolved_at": "2024-03-15T14:32:07Z"
  },
  "webhook_id": "wh_x9y8z7"
}

Each webhook is signed with HMAC-SHA256 to guarantee authenticity. In case of delivery failure, GetBill automatically retries up to 5 times with exponential backoff.

Import

Import thousands of cases in one click

Don't have an API integration yet? No problem. Bulk import lets you load your CSV or XLSX files directly into GetBill. Column mapping is intelligent: it automatically recognizes standard fields (name, email, phone, amount, date). Built in validation checks each row before import and generates a detailed error report.

  • CSV and XLSX formats natively supported
  • Automatic column mapping via intelligent detection
  • Data validation before processing (email, phone, amount format)
  • Detailed error report with line number and suggested correction
  • Recurring import via SFTP for complete automation
Import API
# Import masse via l'endpoint batch
curl -X POST https://getbill.io/external-api/v1/debts/batch \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "debts": [ ... ] }'

# Réponse
{
  "batch_id": "batch_k4m5n6",
  "status": "processing",
  "total": 1847,
  "created": 1823,
  "errors": 24
}

For recurring SFTP imports, drop your files in the dedicated directory and GetBill processes them automatically every hour. Ideal for daily exports from your ERP.

Authentication

OAuth2 and API keys for secure access

The GetBill collection API uses the OAuth2 protocol for production authentication. Get an access token with your client credentials, then include it in the Authorization header of each request. Tokens expire after 1 hour and can be renewed via the refresh token.

For the sandbox environment, static API keys are provided upon registration. No OAuth2 configuration is needed to start testing. You can generate and revoke your sandbox keys from the developer dashboard at any time.

OAuth2
# Étape 1 : Obtenir un access token (OAuth 2.0)
curl -X POST https://getbill.io/external-api/v1/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET"

# Réponse
{
  "access_token": "eyJhbGciOiJSUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 3600
}

# Étape 2 : Utiliser le token
curl https://getbill.io/external-api/v1/debts \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..."

Granular scopes

Precisely control the permissions of each token: read, write, webhook management, analytics access.

Automatic rotation

Refresh tokens allow seamless renewal, without service interruption or manual re authentication.

Instant sandbox

Static API key provided upon registration. Start testing in under 2 minutes, without OAuth2 configuration.

Use cases

The collection API that adapts to your architecture

Whatever your tech stack, the GetBill REST API integrates natively. Three use cases illustrate the flexibility of integration.

Custom or bespoke ERP

Integrate collection into your existing workflows. Automatic case creation when an invoice passes its due date, payment notifications via webhook. Zero manual export, data always up to date.

CRM and sales tracking

Sync cases with your CRM. Case resolved, payment plan negotiated, successful call: information flows automatically into the customer record. No more silos between collection and customer relations.

Billing and accounting

Connect your billing tool to automatically chase overdue invoices. The API creates the case, launches reminders, and performs reconciliation upon payment. Bidirectional integration for complete reconciliation.

Compatible with Python, Node.js, Java, PHP, Ruby, Go.

Technical specifications

An API built for production

The GetBill collection API follows industry standards to guarantee reliability, security and performance in production environments.

Security and compliance

All communications use HTTPS/TLS 1.3. Data is encrypted at rest (AES-256) and hosted in France (AWS Paris eu-west-3, ISO 27001 certified). Compliant with GDPR (EU regulation 2016/679) and the European AI Act. The API is GDPR compliant: each case can be deleted via the DELETE /external-api/v1/debts/{id} endpoint to respect the right to erasure. Access logs are retained for 90 days and accessible from the developer dashboard.

Webhooks are signed with HMAC-SHA256. You verify the signature server side to ensure each notification genuinely comes from GetBill. The signing key can be rotated from the dashboard without service interruption.

Performance and reliability

The GetBill collection API offers an average response time under 200 ms. Rate limiting is set at 1,000 requests per minute in production (100 in sandbox). The X-RateLimit-Remaining and X-RateLimit-Reset response headers help you manage your consumption optimally.

The infrastructure is designed to handle large volumes. Bulk imports of thousands of cases via POST /external-api/v1/debts/batch are processed in the background. Guaranteed availability is 99.9% (SLA), with active monitoring and alerts in case of incidents.

Sandbox environment: test risk free

The sandbox environment faithfully replicates the production API with mock data. You can create cases, trigger webhooks, test bulk imports and simulate payments. Sandbox data is reset weekly. Access is free and unlimited, with no commitment or credit card required.

Sandbox
# Testez l'API avec votre token sandbox
curl https://getbill.io/external-api/v1/debts \
  -H "Authorization: Bearer YOUR_SANDBOX_TOKEN"

# Créer un dossier de test
curl -X POST https://getbill.io/external-api/v1/debts \
  -H "Authorization: Bearer YOUR_SANDBOX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "debtor": { "name": "Test Dupont" },
    "amount": 1500.00,
    "reference": "TEST-001"
  }'

# Les webhooks sont envoyés normalement en sandbox
FAQ

Frequently asked questions about the collection API

In production, the API allows up to 1,000 requests per minute. In the sandbox environment, the limit is set at 100 requests per minute. Response headers include X-RateLimit-Remaining (remaining requests) and X-RateLimit-Reset (reset timestamp) to help you manage your calls optimally. If exceeded, the API returns an HTTP 429 code with a Retry-After header.

Yes, a complete sandbox environment is available upon registration. It includes preloaded mock data, simulation of all webhook events, and unlimited access to all endpoints. No credit card is required to test the API. Sandbox data is reset weekly to ensure a clean environment.

Complete documentation on docs.getbill.io with code examples, personalized support during go live, and technical support by email (under 2 hours on business days). API status available on status.getbill.io.

Yes, the POST /external-api/v1/debts/batch endpoint allows importing thousands of cases in a single request. Data validation is built in and an error report is returned in the response. For recurring imports, SFTP access is also available.

The sandbox environment allows simulating all webhook events: debt.created, debt.contacted, debt.payment_received, debt.resolved, debt.escalated, followup.completed. You can trigger these events from the sandbox dashboard. Test payloads are identical to production ones.

Test the API in the sandbox

Access the complete test environment, with no commitment or credit card required. Create your first debt collection case in under 5 minutes.

Quick deployment No commitment GDPR & AI Act compliant

They integrate with GetBill

Stripe
Axepta BNP Paribas
Google Workspace
Microsoft
Brevo
Mailjet
SendGrid
Mailgun
Postmark
Scaleway
OVHcloud
Infomaniak
Stripe
Axepta BNP Paribas
Google Workspace
Microsoft
Brevo
Mailjet
SendGrid
Mailgun
Postmark
Scaleway
OVHcloud
Infomaniak