The entry point for opening a new bank account. An account application
ties together one or more TreasuryPrime.PersonApplications (for a
personal account) or a TreasuryPrime.BusinessApplication plus its
associated person applications (for a business account), an
TreasuryPrime.AccountProduct, and optionally an initial
TreasuryPrime.Deposit. Once approved, account_id is populated with
the newly created TreasuryPrime.Account.
See the "Opening an Account" guide in the Treasury Prime docs for the full walkthrough — at a high level:
Personal account
{:ok, person_app} =
TreasuryPrime.PersonApplication.create(client, %{
first_name: "George",
last_name: "Washington",
email_address: "[email protected]",
phone_number: "2025551111",
date_of_birth: "1732-02-22",
citizenship: "US",
tin: "111222444",
physical_address: %{
street_line_1: "1600 Pennsylvania Ave",
city: "Washington",
state: "DC",
postal_code: "20500"
}
})
{:ok, account_app} =
TreasuryPrime.AccountApplication.create(client, %{
person_applications: [%{id: person_app.id, roles: ["owner", "signer"]}],
primary_person_application_id: person_app.id,
account_product_id: "apt_..."
})Business account
{:ok, account_app} =
TreasuryPrime.AccountApplication.create(client, %{
business_application_id: business_app.id,
primary_person_application_id: person_app.id,
account_product_id: "apt_..."
})Poll (or wait for an account_application.update webhook on)
status until it reaches "approved" (-> account_id populated),
"rejected", or "manual_review".
Summary
Functions
Submits an account application. Required: account_product_id,
primary_person_application_id, plus either person_applications
(personal accounts) or business_application_id (business accounts).
Optionally deposit_id to fund the account on opening.
Fetches a single account application by id.
Lists account applications.
Types
@type t() :: %TreasuryPrime.AccountApplication{ account_id: String.t() | nil, account_number: String.t() | nil, account_product_id: String.t() | nil, bankdata: map() | nil, business_application_id: String.t() | nil, created_at: String.t() | nil, deposit_id: String.t() | nil, id: String.t() | nil, ownership_type: String.t() | nil, person_applications: [person_application_ref()] | nil, primary_person_application_id: String.t() | nil, status: String.t() | nil, updated_at: String.t() | nil, userdata: map() | nil }
Functions
@spec create(TreasuryPrime.Client.t(), map(), keyword()) :: {:ok, t()} | {:error, TreasuryPrime.Error.t()}
Submits an account application. Required: account_product_id,
primary_person_application_id, plus either person_applications
(personal accounts) or business_application_id (business accounts).
Optionally deposit_id to fund the account on opening.
@spec create!(TreasuryPrime.Client.t(), map(), keyword()) :: t()
@spec get(TreasuryPrime.Client.t(), String.t()) :: {:ok, t()} | {:error, TreasuryPrime.Error.t()}
Fetches a single account application by id.
@spec get!(TreasuryPrime.Client.t(), String.t()) :: t()
@spec list(TreasuryPrime.Client.t(), map()) :: {:ok, TreasuryPrime.Page.t()} | {:error, TreasuryPrime.Error.t()}
Lists account applications.
Filterable params
account_id, status.
@spec list!(TreasuryPrime.Client.t(), map()) :: TreasuryPrime.Page.t()