Reminder Levels (Mahnstufen)
Billomat models reminder (dunning) levels via /reminder-texts. The SDK exposes them through ReminderTextsApi:
| API | Endpoint | Content |
|---|---|---|
ReminderTextsApi | /reminder-texts | Text blocks per reminder level (subject, header, footer, fees) — matches the official Mahnstufen page. |
The endpoint is read-only in the SDK. The former DunningLevelsApi was removed in 4.0; use $billomat->reminderTexts instead.
Access
php
$billomat->reminderTexts // Justpilot\Billomat\Api\ReminderTextsApiEndpoints
ReminderTextsApi
| Method | HTTP | Path |
|---|---|---|
list($filters?) | GET | /reminder-texts |
get($id) | GET | /reminder-texts/{id} |
getOrFail($id) | GET | /reminder-texts/{id} |
Billomat supports create/update/delete (POST/PUT/DELETE on
/reminder-texts), but the SDK doesn't expose them as methods.
Methods
ReminderTextsApi::list(array $filters = []): list<ReminderText>
php
foreach ($billomat->reminderTexts->list() as $rt) {
printf("Level %d: %s — '%s'\n",
$rt->sort ?? 0,
$rt->name ?? '(no name)',
$rt->subject ?? '',
);
}ReminderTextsApi::get(int $id): ?ReminderText
Returns null on 404.
ReminderTextsApi::getOrFail(int $id): ReminderText
Like get(), but throws NotFoundException instead of returning null.
Read model
ReminderText
final readonly class ReminderText.
| Property | Billomat field | Type | Purpose |
|---|---|---|---|
id | id | int | |
name | name | ?string | Name of the reminder level (internal) |
subject | subject | ?string | Subject of the reminder e-mail/letter |
header | header | ?string | Introduction |
footer | footer | ?string | Closing note |
sort | sorting (fallback sort) | ?int | Order of the level |
chargeName | charge_name | ?string | Name of the reminder fee |
chargeDescription | charge_description | ?string | Description of the reminder fee |
chargeAmount | charge_amount | ?Money | Amount of the reminder fee (see Money) |
customfield | customfield | ?string | Free extra field, see Custom meta attributes |
extra | — | array<string,mixed> | Fields the SDK doesn't map yet, raw (see Read models) |
Pitfalls
sortinstead ofsorting. Billomat returns the order assorting(formerlysort); the SDK keeps exposing it asReminderText::$sort, andtoArray()writes it under the keysort.- Reminder level of a reminder.
Reminder::$reminderLevelandReminder::$reminderLevelNamerefer to the levels configured here, andReminder::$reminderTextIdto the text used; see Reminders. - Single-item list quirk.
list()normalizes vialistResource(), even if Billomat returns a single level as an object instead of a list.
End-to-end example
php
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use Justpilot\Billomat\BillomatClient;
$billomat = BillomatClient::create(
billomatId: 'mycompany',
apiKey: getenv('BILLOMAT_API_KEY'),
);
// Reminder levels in order
$texts = $billomat->reminderTexts->list();
usort($texts, static fn ($a, $b) => ($a->sort ?? 0) <=> ($b->sort ?? 0));
foreach ($texts as $rt) {
printf("Level %d: %s\n Subject: %s\n Fee: %s EUR (%s)\n",
$rt->sort ?? 0,
$rt->name ?? '',
$rt->subject ?? '',
$rt->chargeAmount?->format(2) ?? '0.00',
$rt->chargeName ?? 'none',
);
}