Receivables
List, read, create and update draft receivables, with the receivable object and every accepted field.
Public API status
The v1 API described here is implemented and tested, but api.remindcash.com is not yet open to the public. It opens after final acceptance testing; until then requests return 503. Examples use placeholders — never paste a real key into shared code.
Endpoints
| Method | Path | Scope |
|---|---|---|
GET |
/v1/receivables |
receivables:read |
GET |
/v1/receivables/{id} |
receivables:read |
POST |
/v1/receivables |
receivables:write |
PATCH |
/v1/receivables/{id} |
receivables:write |
Payments and status changes are described in Payment tracking.
The receivable object
| Field | Type | Description |
|---|---|---|
id |
integer | Receivable ID within your company. |
customer_id |
integer | The customer this receivable belongs to. |
amount_minor |
integer | Amount due in minor units. |
paid_minor |
integer | Total recorded as paid, in minor units. |
currency |
string | EUR, GBP, TRY or USD. |
due_date |
string | Local due date, YYYY-MM-DD. |
status |
string | See statuses. |
external_reference |
string or null | Your own reference, unique within your company. |
description |
string or null | Free text, up to 2,000 characters. |
version |
string | Fingerprint used for safe updates. |
List receivables
Results are ordered by id and paginated (see Pagination).
curl "https://api.remindcash.com/v1/receivables?per_page=25" \
--header "Authorization: Bearer $REMINDCASH_API_KEY"{
"data": [
{
"id": 1,
"customer_id": 1,
"amount_minor": 125000,
"paid_minor": 0,
"currency": "USD",
"due_date": "2026-10-15",
"status": "draft",
"external_reference": "INV-1042",
"description": "Website redesign",
"version": "4e6fea39ae2fab8ccb843657f081d276513739a71787c060a007b65e3acbbbc1"
}
],
"meta": { "current_page": 1, "per_page": 25, "total": 1 },
"request_id": "762e599f-c42c-4c49-84fb-9a2f56a3f923"
}Retrieve a receivable
curl https://api.remindcash.com/v1/receivables/1 \
--header "Authorization: Bearer $REMINDCASH_API_KEY"An unknown ID — or one that belongs to another company — returns 404 not_found.
Create a draft receivable
POST /v1/receivables creates a receivable in draft status. It requires an Idempotency-Key header and returns 201 Created.
| Field | Required | Rules |
|---|---|---|
customer |
One of customer or customer_id |
Object with display_name (required, max 160) and at least one of email or phone_e164. Optional preferred_locale (en, tr) and IANA timezone. |
customer_id |
One of customer or customer_id |
An existing customer in your company. |
amount |
Yes | Positive decimal string, up to two decimals. |
currency |
Yes | EUR, GBP, TRY or USD. |
due_date |
Yes | YYYY-MM-DD. |
external_reference |
No | Max 160 characters. A reference already used in your company returns 409 conflict. |
description |
No | Max 2,000 characters. |
phone_e164 must be in E.164 format, for example +14155550100. Fields such as status or tenant_id are rejected.
curl https://api.remindcash.com/v1/receivables \
--request POST \
--header "Authorization: Bearer $REMINDCASH_API_KEY" \
--header "Idempotency-Key: create-inv-1042-0001" \
--header "Content-Type: application/json" \
--data '{
"customer": { "display_name": "Studio North", "email": "billing@studionorth.example" },
"amount": "1250.00",
"currency": "USD",
"due_date": "2026-10-15",
"external_reference": "INV-1042"
}'New customers created this way still need their contact verified and permission recorded in the app before any reminder can be sent.
Update a draft receivable
PATCH /v1/receivables/{id} changes a draft. Send expected_version (the version you last read) plus at least one field to change: customer_id, amount, currency, due_date, external_reference or description.
curl https://api.remindcash.com/v1/receivables/1 \
--request PATCH \
--header "Authorization: Bearer $REMINDCASH_API_KEY" \
--header "Idempotency-Key: update-inv-1042-0001" \
--header "Content-Type: application/json" \
--data '{
"expected_version": "4e6fea39ae2fab8ccb843657f081d276513739a71787c060a007b65e3acbbbc1",
"due_date": "2026-10-20"
}'The response contains the updated receivable and its new version. The update returns 409 conflict when:
expected_versionno longer matches (someone changed it first),- the receivable is no longer a draft,
- it is an occurrence of a recurring series,
- a payment exists and you try to change the customer, amount or currency.