Payment Terms

Payment terms define when invoices and bills are due (e.g., Net 30, Due on Receipt) and any early-payment discount (e.g., 2/10 Net 30). Assign them as defaults on customers and vendors via default_payment_term_id, or per document.

Create a Payment Term

bash
curl -X POST "https://api.ondayzero.com/api/v1/payment-terms" \
  -H "Authorization: Bearer dz_your_token_here" \
  -H "x-business-id: YOUR_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Net 45",
    "days_until_due": 45
  }'

With an early-payment discount:

bash
curl -X POST "https://api.ondayzero.com/api/v1/payment-terms" \
  -H "Authorization: Bearer dz_your_token_here" \
  -H "x-business-id: YOUR_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "2/10 Net 30",
    "days_until_due": 30,
    "discount_percent": 2.0,
    "discount_days": 10,
    "is_default": false
  }'
Field Type Description
name string Display name (required)
days_until_due integer Days after the issue date until payment is due (required; 0 = due on receipt)
discount_percent number Early-payment discount, e.g. 2.0 for 2%
discount_days integer Days within which the discount applies
is_default boolean Make this the business default (unsets the previous default)

List Payment Terms

bash
curl "https://api.ondayzero.com/api/v1/payment-terms?active_only=true" \
  -H "Authorization: Bearer dz_your_token_here" \
  -H "x-business-id: YOUR_BUSINESS_ID"

Each term in the response carries is_active and is_default. Standard pagination parameters apply.

Get Default Term

bash
curl "https://api.ondayzero.com/api/v1/payment-terms/default" \
  -H "Authorization: Bearer dz_your_token_here" \
  -H "x-business-id: YOUR_BUSINESS_ID"

Seed Defaults

Populate the standard set — Due on Receipt, Net 10, Net 15, Net 30 (set as default), Net 45, Net 60, Net 90 and 2/10 Net 30:

bash
curl -X POST "https://api.ondayzero.com/api/v1/payment-terms/seed-defaults" \
  -H "Authorization: Bearer dz_your_token_here" \
  -H "x-business-id: YOUR_BUSINESS_ID"

Update a Payment Term

All fields are optional; send only what changes:

bash
curl -X PUT "https://api.ondayzero.com/api/v1/payment-terms/{term_id}" \
  -H "Authorization: Bearer dz_your_token_here" \
  -H "x-business-id: YOUR_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{"name": "Net 45 (Updated)", "days_until_due": 45, "is_default": true}'

Set "is_active": false to retire a term without deleting it, or true to reactivate one.

Delete a Payment Term

bash
curl -X DELETE "https://api.ondayzero.com/api/v1/payment-terms/{term_id}" \
  -H "Authorization: Bearer dz_your_token_here" \
  -H "x-business-id: YOUR_BUSINESS_ID"

This deactivates the term (is_active: false) rather than removing it. Existing customers, vendors and documents referencing it are unaffected, and it disappears from active_only=true listings.