Column.Loans (Column v1.0.0)

Copy Markdown View Source

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.

Types

id()

@type id() :: String.t()

opts()

@type opts() :: keyword()

params()

@type params() :: map()

result()

@type result() :: {:ok, map()} | {:error, Column.Error.t()}

Functions

create(params, opts \\ [])

@spec create(params(), opts()) :: result()

Create a new loan.

create_sale(id, params, opts \\ [])

@spec create_sale(id(), params(), opts()) :: result()

Create a loan sale to the secondary market.

get(id, opts \\ [])

@spec get(id(), opts()) :: result()

Get a loan by ID.

get_available_for_sale_summaries(opts \\ [])

@spec get_available_for_sale_summaries(opts()) :: result()

Get summaries for loans available for sale.

get_program(id, opts \\ [])

@spec get_program(id(), opts()) :: result()

Get a loan program by ID.

get_sale(id, opts \\ [])

@spec get_sale(id(), opts()) :: result()

Get a loan sale by ID.

get_sold_summaries(opts \\ [])

@spec get_sold_summaries(opts()) :: result()

Get summaries for already-sold loans.

get_summary(id, opts \\ [])

@spec get_summary(id(), opts()) :: result()

Get loan summary history (balance snapshots).

list(opts \\ [])

@spec list(opts()) :: result()

List all loans. Supports cursor pagination.

list_programs(opts \\ [])

@spec list_programs(opts()) :: result()

List available loan programs.

list_sales(opts \\ [])

@spec list_sales(opts()) :: result()

List all loan sales.

update(id, params, opts \\ [])

@spec update(id(), params(), opts()) :: result()

Update a loan.

update_program(id, params, opts \\ [])

@spec update_program(id(), params(), opts()) :: result()

Update a loan program.