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

# The Originator Object

> Field-level reference for the Originator object, including the core balance it settles to, the ACH parameters block, limits, create validations, list filters, and how it maps from the v0 Originators API.

An originator is the company name and ACH company ID your program sends ACH as. It settles to one core balance. You create one with `POST /v2/originators`, update it with `PATCH /v2/originators/{originator_id}`, and read it with `GET /v2/originators/{originator_id}`. POST requires an `Idempotency-Key` header. See [Idempotency](https://docs.lead.bank/api-reference/using-the-api/idempotency-v2.md).

This example is a second originator on Acme's program. Acme pays its own employees under a separate "Acme Payroll" company ID, so payroll goes out under that name rather than its main one. Entries settle to Acme's operating core balance, and Lead has approved the originator for `CCD` and `PPD` only.

```json theme={null}
{
  "id": "originator_5LrMf0Xd5PmZb8oAtV6yG3cS9u",
  "core_balance_id": "core_balance_2xYw9Kn3Jp7QuS2lY5mAbC0dE4f",
  "entity_id": "entity_2xYv6Kn3Jp7QuS2lY5mAbC0dE4f",
  "company_id": "1234567891",
  "company_name": "Acme Payroll",
  "status": "active",
  "ach": {
    "allowed_sec_codes": ["CCD", "PPD"],
    "nested_third_parties": [],
    "limits": {
      "calendar_day_maximum_amount": {
        "credit": 50000000,
        "debit": 0
      },
      "rolling_30_calendar_day_maximum_amount": {
        "credit": 750000000,
        "debit": 0
      }
    }
  },
  "metadata": {},
  "created_at": "2026-10-07T15:02:11Z",
  "updated_at": "2026-10-09T18:21:47Z"
}
```

Every field on an originator is populated at the same time. There is no block that appears only in some statuses. A `pending` originator looks the same as this one with a different `status`, and a `rejected` or `suspended` originator carries no reason. Contact Lead to learn why.

## Fields

The table lists each field on the object.

| Field | Type | Description |
| - | - | - |
| `id` | string | Unique identifier, prefixed `originator_`. |
| `core_balance_id` | string | The core balance that entries sent under this originator settle to. Required on create. Can't be changed. |
| `entity_id` | string | The entity whose identity the originator represents. Required on create. Can't be changed. |
| `company_id` | string | The 10-digit ACH company identification. Populates the Company Identification field in batch headers. Assigned by Lead. |
| `company_name` | string | The company name in batch headers. Might appear on counterparty bank statements. |
| `status` | enum | `pending`, `active`, `inactive`, `rejected`, `suspended`, or `canceled`. See [Originator Statuses](https://docs.lead.bank/v2/products/originators/statuses.md). |
| `ach` | object | The originator's ACH parameters. See [The ach block](#the-ach-block). |
| `metadata` | object | Key-value pairs for your own use. Lead doesn't read them. |
| `created_at`, `updated_at` | timestamp | RFC 3339, UTC. |

## The ach block

The table lists the fields in the ach block.

| Field | Type | Description |
| - | - | - |
| `allowed_sec_codes` | array of enums | The SEC codes the originator can use: any of `CCD`, `PPD`, `WEB`, `CIE`, `TEL`. An entry with a code not in the list is rejected. |
| `nested_third_parties` | array of strings | Entity IDs of third parties the originator can originate for. Used in payment facilitation and nested third-party sender models. Empty when the originator sends only for its own entity. |
| `limits` | object | Amount limits on the originator's activity. See [The limits block](#the-limits-block). |

### The limits block

All amounts are integers in minor units. 5000 is \$50.00. Each limit has a credit and a debit figure. A figure of `0` means the originator can't send that direction at all.

| Field | Type | Description |
| - | - | - |
| `calendar_day_maximum_amount.credit` | integer | The most the originator can send in credits in one calendar day. |
| `calendar_day_maximum_amount.debit` | integer | The most the originator can pull in debits in one calendar day. |
| `rolling_30_calendar_day_maximum_amount.credit` | integer | The most the originator can send in credits in any 30 calendar days. |
| `rolling_30_calendar_day_maximum_amount.debit` | integer | The most the originator can pull in debits in any 30 calendar days. |

## Creating an originator

The create request takes these fields:

| Field | Required | Description |
| - | - | - |
| `core_balance_id` | Yes | The core balance entries settle to. |
| `entity_id` | Yes | The entity the originator represents. |
| `company_name` | Yes | The company name for batch headers. |
| `ach` | Yes | The ACH parameters block. |
| `metadata` | No | Key-value pairs for your own use. |

Lead checks the following before it creates the originator. Each failure returns an error.

| Condition | Result |
| - | - |
| `core_balance_id` doesn't exist or isn't visible to your program | `404`. |
| `core_balance_id` isn't on a `direct` core account | `422`. The balance isn't eligible. |
| `core_balance_id` isn't `active` | `422`. The balance isn't active. |
| `entity_id` isn't an account holder or allowed actor on the account behind the balance | `422`. The entity isn't on the account. |

A new originator starts in `pending`. Lead reviews it and moves it to `active` or `rejected`.

## Linking account numbers

Set `ach_controls.originator_id` on an account number to send ACH under this originator. The account number's balance must be the originator's `core_balance_id`. If it is not, the account number create or update returns `422`.

## Listing originators

`GET /v2/originators` returns a list (`objects`, `has_more`). The `core_balance_id` filter is required. Filter further by `status`.

## Coming from v0

A v2 originator replaces the v0 originator. Originators created on `/v0/originators` are readable on `/v2/originators` with `core_balance_id` populated.

| v0 | v2 | Notes |
| - | - | - |
| `POST /v0/originators` and sub-paths | `POST /v2/originators` and sub-paths | Version jumps from v0 to v2. |
| `account_id` on create, response, and as the required list filter | `core_balance_id` on create, response, and as the required list filter | Name the core balance entries settle to. `account_id` isn't accepted or returned. |
| No balance eligibility check | `core_balance_id` must be visible, `active`, and on a `direct` core account | 404 and 422 conditions added on create. |
| No account number linkage check | Account number `ach_controls.originator_id` must match the account number's balance | 422 condition added on the account number endpoints. |
| Errors in the v0 shape | Errors in the [v2 shape](https://docs.lead.bank/api-reference/using-the-api/errors-v2.md) | Lifecycle, limits, SEC codes, nested third parties, and `PATCH` are unchanged. |

## Related

* [Originator Overview](https://docs.lead.bank/v2/products/originators/overview.md)
* [Originator Statuses](https://docs.lead.bank/v2/products/originators/statuses.md)
* [The Account Number Object](https://docs.lead.bank/v2/products/account-number/account-number-object.md)
* [The ACH Object](https://docs.lead.bank/v2/products/ach/ach-object.md)
* [The Core Balance Object](https://docs.lead.bank/products/core-balance/core-balance-object.md)
