Credit Memos
Credit memos represent credits issued to customers, reducing the amount they owe. They can be applied to outstanding invoices or held as a balance on the customer's account.
Credit Memo Status Flow
| Status | Description |
|---|---|
draft |
Editable, not yet issued |
issued |
Active, available for application |
partially_applied |
Some balance applied, remainder still available |
applied |
Fully applied to invoices |
void |
Cancelled |
Create a Credit Memo
curl -X POST "https://api.ondayzero.com/api/v1/credit-memos" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "CUSTOMER_UUID",
"amount_cents": 15000,
"reason": "returned_goods"
}'
amount_centsis in cents.15000= $150.00.reasonmust be one of the supported enum values (returned_goods,damaged_goods,service_issue,pricing_error,billing_adjustment,goodwill,duplicate_charge,other— the default).
Optional fields: invoice_id (the original invoice being credited), description, internal_notes, issue_date (defaults to today), line_items ([{description, quantity, unit_price_cents, amount_cents, variant_id}] for itemised credits) and restocking_fee_cents (a fee withheld on a return, recognised as income — the gross reversal is amount_cents + fee).
Draft memos can be edited with PUT /api/v1/credit-memos/{credit_memo_id} and deleted with DELETE. POST /api/v1/credit-memos/suggest asks the AI which recent returns or disputes might warrant a credit.
Issue a Credit Memo
Draft credit memos must be issued before they can be applied:
curl -X POST "https://api.ondayzero.com/api/v1/credit-memos/{credit_memo_id}/issue" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"Apply to an Invoice
Apply a credit memo (partially or fully) to an outstanding invoice:
curl -X POST "https://api.ondayzero.com/api/v1/credit-memos/{credit_memo_id}/apply" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"invoice_id": "INVOICE_UUID",
"amount_cents": 10000
}'Applying reduces the invoice's balance_due and moves the memo to partially_applied or applied. To reverse an application, POST /api/v1/credit-memos/{credit_memo_id}/unapply with {"invoice_id": "INVOICE_UUID"} restores both balances.
List Credit Memos
curl "https://api.ondayzero.com/api/v1/credit-memos?status=issued&customer_id=CUSTOMER_UUID" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"Filter Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | draft, issued, partially_applied, applied, void |
customer_id |
UUID | Filter by customer |
has_remaining_balance |
boolean | Only credits with unapplied balance |
search |
string | Match on credit memo number (e.g. CM-0001) |
cursor / limit |
Standard pagination |
Customer Credit Balance
View all credits for a specific customer:
curl "https://api.ondayzero.com/api/v1/credit-memos/customers/{customer_id}/credits" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"Void a Credit Memo
curl -X POST "https://api.ondayzero.com/api/v1/credit-memos/{credit_memo_id}/void" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{"reason": "Issued in error"}'Voiding reverses any associated journal entries.