# Payment Terms

> Configure payment terms for invoices and bills.

- **Category:** Guides
- HTML version: https://www.ondayzero.com/docs/guides/payment-terms
- All guides: https://www.ondayzero.com/docs/guides/index.md
- Endpoint catalog: https://www.ondayzero.com/docs/reference/index.md

---

# 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](/docs/guides/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.
