Loan origination and lifecycle management.
Loans are originated against a loan program. Funds are disbursed to a bank account (optionally with a hold), collected via payments, and can be sold to the secondary market.
Full lifecycle example
# 1. Check available loan programs
{:ok, programs} = Column.Loans.list_programs()
# 2. Originate a loan
{:ok, loan} = Column.Loans.create(%{
loan_program_id: "lpgm_123",
bank_account_id: "bacc_456",
amount: 500_000,
currency_code: "USD",
description: "Working capital"
})
# 3. Disburse funds (see Column.Disbursements)
# 4. Accept payments (see Column.LoanPayments)
# 5. Optionally sell the loan
{:ok, sale} = Column.Loans.create_sale(loan["id"], %{
buyer_entity_id: "ent_789"
})
Summary
Functions
Create a new loan.
Create a loan sale to the secondary market.
Get a loan by ID.
Get summaries for loans available for sale.
Get a loan program by ID.
Get a loan sale by ID.
Get summaries for already-sold loans.
Get loan summary history (balance snapshots).
List all loans. Supports cursor pagination.
List available loan programs.
List all loan sales.
Update a loan.
Update a loan program.
Types
@type id() :: String.t()
@type opts() :: keyword()
@type params() :: map()
@type result() :: {:ok, map()} | {:error, Column.Error.t()}
Functions
Create a new loan.
Create a loan sale to the secondary market.
Get a loan by ID.
Get summaries for loans available for sale.
Get a loan program by ID.
Get a loan sale by ID.
Get summaries for already-sold loans.
Get loan summary history (balance snapshots).
List all loans. Supports cursor pagination.
List available loan programs.
List all loan sales.
Update a loan.
Update a loan program.