Unit.API.Accounts (Unit v1.0.0)

Copy Markdown View Source

API module for Unit Accounts (deposit, credit, wallet, batch).

Account lifecycle

  1. Create a deposit or credit account for an approved customer
  2. Issue cards, initiate payments, query transactions
  3. Freeze (temporary) or close (permanent)

Summary

Functions

Close an account permanently.

Freeze an account temporarily.

Get an account by ID.

Get account balance history (daily snapshots).

Get account limits (per-rail daily/monthly hard and soft limits).

List accounts.

Unfreeze a previously frozen account.

Update an account's tags.

Functions

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

@spec close(String.t(), map(), keyword()) ::
  {:ok, Unit.Resource.Account.t()} | {:error, term()}

Close an account permanently.

Params

  • :reason"ByCustomer" | "Fraud" (required)

  • :fraud_reason — required when reason is "Fraud"

create_batch(deposit_product, name, params \\ [], opts \\ [])

@spec create_batch(String.t(), String.t(), keyword(), keyword()) ::
  {:ok, Unit.Resource.Account.t()} | {:error, term()}

Open a batch/clearing account.

Required params

  • :deposit_product, :name

Optional params

  • :tags, :idempotency_key

create_credit(customer_id, credit_terms, params \\ [], opts \\ [])

@spec create_credit(String.t(), String.t(), keyword(), keyword()) ::
  {:ok, Unit.Resource.Account.t()} | {:error, term()}

Open a credit account for a customer.

Required params

  • :customer_id, :credit_terms — configured by Unit's compliance team

Optional params

  • :tags, :credit_limit, :idempotency_key

create_deposit(customer_id, deposit_product, params \\ [], opts \\ [])

@spec create_deposit(String.t(), String.t(), keyword(), keyword()) ::
  {:ok, Unit.Resource.Account.t()} | {:error, term()}

Open a deposit account for a customer.

Required params

  • :customer_id, :deposit_product — name of the deposit product (e.g. "checking")

Optional params

  • :tags, :overdraft_limit, :idempotency_key

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

@spec freeze(String.t(), keyword(), keyword()) ::
  {:ok, Unit.Resource.Account.t()} | {:error, term()}

Freeze an account temporarily.

get(id, opts \\ [])

@spec get(
  String.t(),
  keyword()
) :: {:ok, Unit.Resource.Account.t()} | {:error, term()}

Get an account by ID.

get_balance_history(id, opts \\ [])

@spec get_balance_history(
  String.t(),
  keyword()
) :: {:ok, map()} | {:error, term()}

Get account balance history (daily snapshots).

get_limits(id, opts \\ [])

@spec get_limits(
  String.t(),
  keyword()
) :: {:ok, map()} | {:error, term()}

Get account limits (per-rail daily/monthly hard and soft limits).

list(opts \\ [])

@spec list(keyword()) :: {:ok, [Unit.Resource.Account.t()], map()} | {:error, term()}

List accounts.

Filter options

  • :customer_id, :status, :type, :tags

unfreeze(id, opts \\ [])

@spec unfreeze(
  String.t(),
  keyword()
) :: {:ok, Unit.Resource.Account.t()} | {:error, term()}

Unfreeze a previously frozen account.

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

@spec update(String.t(), map(), keyword()) ::
  {:ok, Unit.Resource.Account.t()} | {:error, term()}

Update an account's tags.