Skip to main content
The Accounts API is currently a draft. Shapes, field names, and field sets may change before it is finalized.
An account is the primary entity Slate services against. Each account maps to a single debt account in your portfolio. It carries the consumer’s balance, creditor information, placement details, and legal status. Every other Slate resource (files, signatures, QC reviews) is ultimately associated with an account, either directly or through a matter. Before you can use any other Slate API, you need accounts in the system.

The Two-Identifier System

Slate uses two identifiers for every account, and understanding both are essential for a reliable integration. accountId is a UUID that Slate assigns when an account is first created. It is stable, canonical, and used in all Slate URLs and relationships (for example, GET /v1/accounts/{accountId}). You will not know this value before the account exists. Slate returns it in the create/upsert response. crid is the account number from your own system. You supply this value, and it must be unique within your owner. Use it as your lookup key when you do not yet have a Slate accountId. For example, on your first upsert or when reconciling records.

The Upsert Pattern

POST /v1/accounts is idempotent. Send an account by crid and Slate will create it if it does not exist, or update it if it does. The response always includes the Slate-assigned accountId. A creditorId is required, and it references a creditor you register beforehand via POST /v1/creditors (list them with GET /v1/creditors). A placement’s firmId likewise references a firm you register via POST /v1/firms.
Response:
Use the upsert endpoint as your daily inventory feed. Send your full current account state on each run. Slate handles the diff internally. You do not need to track which accounts are new versus existing. The upsert pattern takes care of that for you.

Targeted Partial Updates

When you need to update a single field on a known account without re-sending the full record, use PATCH /v1/accounts/{accountId}:
Only the fields you include in the PATCH body will be modified. All other account fields remain unchanged.

Account Lifecycle

Every account has a status field with two possible values: Update status to CLOSED via upsert or PATCH when an account is paid, recalled, or otherwise resolved.

Money Format

All monetary amounts in Slate are expressed as US dollars with two decimal places, sent and returned as decimal strings — for example, "1250.75". Slate does not use cents, integers, or bare JSON numbers. Strings avoid floating-point rounding. Sending "125075" when you mean $1,250.75 will result in an incorrect balance nearly 100 times too large.
Always format currency values as a decimal string: "4872.50", not 4872.50, "487250", or "$4,872.50".

Key Account Fields