PlanDocket

Payment reminders

Business+

Read the payment reminders and dunning notices that were sent, e.g. to show the dunning level next to an open item in your bookkeeping. They are sent by the dunning run or from the invoice in the admin.

Read Only This endpoint only supports GET requests.
Required scopes: invoices
Access level: GET invoices:read About access levels
Feature flag: invoices

Endpoints

GET /api/v1/payment-reminders

List all payment reminders (newest first)

GET /api/v1/payment-reminders/{id}

Retrieve a single payment reminder with its text preview

Query Parameters

Parameter Description
invoice_id Only reminders of this invoice (ID)
invoice_number Only reminders of this invoice (invoice number)
reminder_type Level: first, second, final or legal
level Dunning level as a number (1, 2, 3 ...)
date_from Sent from (YYYY-MM-DD or ISO 8601)
date_to Sent until (YYYY-MM-DD or ISO 8601)
sort Sort field (sent_at, level, created_at, reminder_id; default sent_at descending)
order Sort direction (ASC or DESC, default: DESC)

Response Schema

Field Type
id integer
invoice_id integer
invoice_number string|null
invoice_status string|null
event_participant_id integer|null
contact_id integer|null
reminder_type string
reminder_type_label string|null
level integer|null
fee_amount float
currency string
due_date string|null
dunning_stopped boolean
sent_at string|null
sent_to string|null
sent_via string|null
subject string|null
created_at string
template_key string|null (show only)
message_preview string|null (show only)

Code Examples

curl -X GET "https://your-tenant.plandocket.com/api/v1/payment-reminders" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
<?php
$apiKey = 'YOUR_API_KEY';
$baseUrl = 'https://your-tenant.plandocket.com';

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $baseUrl . '/api/v1/payment-reminders',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
    ],
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);
const apiKey = 'YOUR_API_KEY';
const baseUrl = 'https://your-tenant.plandocket.com';

const response = await fetch(`${baseUrl}/api/v1/payment-reminders`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
  },
});

const data = await response.json();
console.log(data);
import requests

api_key = 'YOUR_API_KEY'
base_url = 'https://your-tenant.plandocket.com'

headers = {
    'Authorization': f'Bearer {api_key}',
}

response = requests.get(f'{base_url}/api/v1/payment-reminders', headers=headers)
data = response.json()
print(data)

Sample Response

200 OK
{
    "data": [
        {
            "id": 1,
            "invoice_id": 1,
            "invoice_number": "string",
            "invoice_status": "string",
            "event_participant_id": 1,
            "contact_id": 1,
            "reminder_type": "string",
            "reminder_type_label": "string",
            "level": 1,
            "fee_amount": 100,
            "currency": "string",
            "due_date": "2026-01-15T10:00:00+01:00",
            "dunning_stopped": true,
            "sent_at": "2026-01-15T10:00:00+01:00",
            "sent_to": "string",
            "sent_via": "string",
            "subject": "string",
            "created_at": "2026-01-15T10:00:00+01:00",
            "template_key": "string",
            "message_preview": "string"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 25,
        "total": 1,
        "total_pages": 1
    }
}