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

# Define a loan product

> Create a loan product, freeze its terms in an immutable version, attach charges and rates, bind an accounting profile, and activate it for origination.

export const GLedger = ({children}) => <Tooltip headline="Ledger" tip="The core financial book that records all transactions, balances, and operations for an organization — the single source of truth for a business unit's finances." cta="See glossary" href="/en/glossary">
    {children}
  </Tooltip>;

A loan product is the template every loan is originated from. Defining one is a small sequence: create the product, version its terms, describe how it books to the ledger, then activate the product. You originate each loan against a **product version**, and disbursement needs that version to carry an accounting profile.

## Before you start

***

* You need a Lender bearer token (a JWT issued by your Access Manager). Every operation is authenticated and tenant-scoped.
* Decide which [jurisdiction](/en/lender/jurisdictions) the product belongs to — the generic baseline or Brazil. Brazilian products carry extra fields covered in the [Brazil regulatory pack](/en/lender/brazil-regulatory-pack).

## Steps

***

<Steps>
  <Step title="Create the product">
    `POST /api/v1/loan-products` registers the named product. This is the catalog entry the versions hang off. (Brazil has an alias, `POST /api/v1/br/loan-products`, that accepts the BR extensions.)
  </Step>

  <Step title="Create a version">
    `POST /api/v1/loan-products/{id}/versions` freezes a set of terms — rate configuration, term, and the schedule shape — as an **immutable version**. Every loan traces back to the version it was originated under; you never edit a version, you publish a new one.
  </Step>

  <Step title="Attach charges">
    `POST /api/v1/loan-products/{id}/charges` applies a charge template (an origination fee, a service charge) that the loans originated from this product inherit.
  </Step>

  <Step title="Bind an accounting profile">
    `POST /api/v1/loan-products/{id}/accounting-profiles` declares how the product books to the <GLedger>ledger</GLedger>: the posting rules (which double-entry legs fire for each event) and the ledger organization and ledger they book into. Lender refuses to disburse a loan whose version has no profile, so bind it before you originate. See [Accounting and accrual runs](/en/lender/accounting-and-accrual-runs).
  </Step>

  <Step title="Activate the product">
    `POST /api/v1/loan-products/{id}/activate` sets the product to active and pins the version you name as its current version. Each application names the version it is originated under, so existing loans keep the version they started on.
  </Step>
</Steps>

## Inspecting products

***

| Operation                                       | Purpose                                                         |
| ----------------------------------------------- | --------------------------------------------------------------- |
| `GET /api/v1/loan-products`                     | List loan products.                                             |
| `GET /api/v1/loan-products/{id}`                | Read a single product, including the version pinned as current. |
| `GET /api/v1/loan-products/{id}/floating-rates` | Read the product's floating-rate table, if it references one.   |

<Tip>
  A floating-rate product resolves its applicable rate from the table when the schedule needs it, rather than pinning a fixed rate at origination.
</Tip>

## What happens downstream

***

Creating and activating products emits `loan_product.created`, `loan_product_version.created`, `loan_product.activated`, `accounting_profile.configured`, and `loan_charge.applied` on the streaming backbone — see [Lender in the platform](/en/lender/lender-in-the-platform).

## Next steps

***

<Card title="Originate a loan" icon="file-signature" href="/en/lender/originate-a-loan" horizontal>
  Take an active product and originate a loan against it.
</Card>
