Custody
Overview
Custody serves as the basis for all Solaris Digital Assets product offerings. It enables your customers to withdraw and deposit their crypto assets and instantly transfer them off-chain to other customers.
This page contains a high-level overview of the Custody API resources. Read the guides in this section to learn the details of how Custody works:
- Account management: How the SDA platform represents customers, their accounts, and their assets.
- Strong Customer Authentication: How customers approve transactions on the SDA platform.
- Transactions: How customers deposit, transfer, and withdraw their assets.
Entities
The SDA platform uses Entities to represent SDA partners and customers. An Entity can have one of the following types:
PARTNER
: An SDA partner (i.e., you).PERSON
: A retail customer. Each PERSON Entity must correspond with a Person resource created using the Solaris Digital Banking API.BUSINESS
: A business customer. Each BUSINESS Entity must correspond with a Business resource created using the Solaris Digital Banking API.REPRESENTATIVE_PERSON
: An individual who can approve ApprovalRequests on a Transaction that belongs to another Entity. Each REPRESENTATIVE_PERSON Entity must correspond with a Person resource created using the Solaris Digital Banking API.
ApprovalMethods
An ApprovalMethod defines the multifactor authentication (MFA) mechanism that an Entity uses to approve Transactions. You must create an ApprovalMethod for each Entity before they can make Transactions.
ClosureRequests
The contractual relationship between a customer and Solaris Digital Assets can be terminated by both parties. To initiate a contract termination, you must create a ClosureRequest. This resource keeps track of the termination status.
Assets
On the SDA platform, an Asset represents a single digital asset of some kind. This can be a cryptocurrency (e.g., Bitcoin), a token (e.g., ERC20), or some other type of digital asset.
Accounts
An Account represents an aggregation of funds of a certain type owned by an Entity.
Each Account is associated with an Entity as well as an Asset. Accounts cannot be transferred between Entities. You can create many Accounts for individual Entities.
Transactions
All Transactions belong to one of three general categories: deposits, transfers, and withdrawals.
Below is a list of possible type
values:
Transaction type | Definition |
---|---|
DEPOSIT | The customer deposited funds to their SDA Account. |
TRANSFER_INCOMING | The customer received a transfer from another SDA Account. |
TRANSFER_OUTGOING | The customer transferred funds to another SDA Account. |
WITHDRAWAL | The customer withdrew funds to an external blockchain address. |
WITHDRAWAL_FEE | Fee charged by Solaris for withdrawing funds. |
Deposits
A Deposit is a type of Transaction that represents a single incoming blockchain-level transfer to some Account Address.
Transfers
A Transfer represents an exchange of funds from one Account to another Account of the same Asset. This operation is not reflected externally as a blockchain transaction or any other observable event.
Withdrawals
A Withdrawal is a Transaction that represents a transfer of funds from an SDA Account to an external blockchain-level address.
Ledger Entries
A Ledger Entry is an immutable accounting entry that describes a change to the Account balance.
The platform creates Ledger Entries when it processes transactions. A Ledger Entry always describes the change that occurred in the past.