> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cadanapay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Accepting Business Terms

> Show a business the terms it needs to accept and record its acceptance

Businesses on Cadana accept a set of legal terms and disclosures, such as the Privacy Notice and ACH Authorization. If you onboard businesses through the API, you show these documents to your customer in your own UI and record the business's acceptance with Cadana. Acceptance of the current terms will be required to use funding features.

```mermaid theme={null}
flowchart LR
    A["List terms"] --> B["Show documents"]
    B --> C["Accept each term"]
    C --> D["Check status"]
```

***

## Prerequisites

**1. API key from Dashboard**

Get your API key from the [Cadana Dashboard](https://app.cadanapay.com). Recording acceptance needs a key with write access; `READ` keys can list terms and check status but can't accept terms. See [Authentication](/authentication) for details.

**2. A business**

You need the `businessId` of the business accepting the terms. With a Platform token, also send that business's tenant key in `X-MultiTenantKey` — otherwise the business endpoints return `404`. See [Multi-Tenant Setup](/platform/multi-tenant-setup).

***

## 1. List the Terms

Fetch the terms the business needs to accept with [List Terms](/api-reference/workforce/terms/list-terms). Pass `product` to get the terms for that product:

**/v1/terms**

```json theme={null}
[
  {
    "name": "PRIVACY_NOTICE",
    "displayName": "Privacy Notice",
    "version": "2026-05-21",
    "url": "https://assets.cadanapay.com/terms/privacy-notice/2026-05-21.pdf",
    "scopes": ["business"]
  },
  {
    "name": "FUNDS_AVAILABILITY_DISCLOSURE",
    "displayName": "Funds Availability Disclosure",
    "version": "2026-07-29",
    "url": "https://assets.cadanapay.com/terms/funds-availability-disclosure/2026-07-29.pdf",
    "scopes": ["business"]
  },
  {
    "name": "ACH_AUTHORIZATION",
    "displayName": "ACH Authorization",
    "version": "2026-07-29",
    "url": "https://assets.cadanapay.com/terms/ach-authorization/2026-07-29.pdf",
    "scopes": ["business"]
  },
  {
    "name": "STRIPE_TERMS",
    "displayName": "Stripe Terms",
    "version": "2026-07-29",
    "url": "https://docs.stripe.com/treasury/connect/compliance#treasury-terms",
    "scopes": ["business"]
  }
]
```

### Query Parameters

| Parameter | Type | Required | Description |
| :- | :- | :- | :- |
| `product` | string | No | `general` or `virtual-accounts`. Omit to get the full catalog. An unknown product returns `400`. |
| `countryCode` | string | No | ISO 3166-1 alpha-2 country code that selects a country-specific set of terms for the `product`. No country-specific sets are configured today. Ignored when `product` is omitted. |

### Terms by Product

| Product | Terms |
| :- | :- |
| `general` | `PRIVACY_NOTICE`, `FUNDS_AVAILABILITY_DISCLOSURE`, `ACH_AUTHORIZATION` |
| `virtual-accounts` | `PRIVACY_NOTICE`, `FUNDS_AVAILABILITY_DISCLOSURE`, `ACH_AUTHORIZATION`, `STRIPE_TERMS` |

> [!WARNING]
>
> Always read `name` and `version` from List Terms instead of hard-coding them. Versions change when a document is updated, and an acceptance only counts at the current version.

***

## 2. Show the Documents

Present each term to your customer using its `displayName` and `url`. How you present them is up to you — for example, a checkbox per document or a single consent screen that links to all of them. Record acceptance only after your customer has agreed.

***

## 3. Accept Each Term

Call [Accept Business Terms](/api-reference/workforce/terms/accept-business-terms) once per term, with the business's ID in the path, the term's `name` as `type`, and its current `version`:

**/v1/businesses/5f8c3a2e-1b4d-4c6e-9a7f-2d3e4f5a6b7c/terms**

| Field | Type | Required | Description |
| :- | :- | :- | :- |
| `type` | string | Yes | The term's `name` from List Terms |
| `version` | string | Yes | The term's current `version` from List Terms |

A successful call returns `204` with no body. Accepting a term the business has already accepted at the same version also returns `204` and changes nothing, so retries are safe.

### Errors

| Status | Cause |
| :- | :- |
| `400` | `version` is missing or isn't the term's current version |
| `400` | `type` is missing or isn't a term in the catalog |
| `400` | `businessId` in the path isn't a UUID |

Errors use the standard error body. A stale version looks like this:

```json theme={null}
{
  "code": "invalid_request_body",
  "message": "One or more input values are invalid. Please re-enter valid values",
  "params": {
    "version": "version 2026-01-01 is not the current version 2026-05-21"
  }
}
```

If you get this error, fetch [List Terms](/api-reference/workforce/terms/list-terms) again, show your customer the current document, and accept the new version.

***

## 4. Check Acceptance

Confirm which terms the business has accepted with [List Business Terms](/api-reference/workforce/terms/list-business-terms). Pass the terms to check in `termsType`:

**/v1/businesses/5f8c3a2e-1b4d-4c6e-9a7f-2d3e4f5a6b7c/terms**

```json theme={null}
[
  { "accepted": true, "type": "PRIVACY_NOTICE", "version": "2026-05-21" },
  { "accepted": true, "type": "FUNDS_AVAILABILITY_DISCLOSURE", "version": "2026-07-29" },
  { "accepted": true, "type": "ACH_AUTHORIZATION", "version": "2026-07-29" },
  { "accepted": false, "type": "STRIPE_TERMS" }
]
```

You get one entry per requested term, in the order you asked for them. `accepted` is `true` only when the business has accepted the term's current version; `version` is omitted when `accepted` is `false`. Accept any term that comes back `false`.

> [!NOTE]
>
> Without `termsType`, the endpoint returns every acceptance record for the business, newest first. Each entry has `accepted: true`, but entries aren't deduplicated or checked against the current version, so an acceptance of an older version still appears. Pass `termsType` whenever you need to know whether the business is up to date.

***

## When Terms Change

When a document is updated, its `version` in List Terms changes and earlier acceptances no longer count — List Business Terms with `termsType` returns `accepted: false` for that term. Repeat steps 1–3 for the changed term: show your customer the new document and accept the new version.

***

## Next Steps

> **[KYB Requirements](/platform/kyb-requirements)**
>
> Business verification requirements

> **[Multi-Tenant Setup](/platform/multi-tenant-setup)**
>
> Platform integration guide


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.