Accounting Model
The SDK.finance Accounting Model provides real-time insights into money movement within the system, displaying wallet balances as they change.
Crucial Elements
1. There are two types of account usage:
- accounting – they are used for accounting purposes and do not reflect the actual flow of currency within the system and
- circulation – these accounts reflect the movement of currency in and out of the system
2. All income and outgoing transactions for a specific currency (e.g., USD) within the system are routed through the issuing_transit account and affect the system circulation volume.
Example: all incomes/outcomes to/from the system circulation in certain currency1 are reflected on the issuing1_balance account and issuing1_transfer account (both accounts have one unique Currency – Currency1)
3. The issuing_balance account is a wallet with usage=accounting, which reflects all the income/outcome to/from the certain Currency issued in the system (with particular and unique currency, e.g. issuing1_balance USD1=currency USD1).
4. Accounts with usage=accounting must not be included in the circulation volume
5. Accounts with usage=circulation must be included in the circulation volume
6. The technical_transit account serves as a temporary holding account during transaction processing. It might be used to split transaction amounts for fees or settlements. This account’s balance should always be zero after processing a transaction.
7. To reconcile the circulating volume of a specific issued currency (e.g., USD1), compare the balance of the “Currency1” account (coin type = issuing1_transfer) with the balance of the issuing1_balance account (coin type = issuing1_balance). These balances should always be equal, ensuring the system tracks currency issuance and circulation accurately.
Account Types
Each type of account can be technical and not technical (technical: TRUE/FALSE). Technical accounts are temporary containers for technical operations, which have a limited life cycle according to the Business Process flow.
Type | Description | Organization | Level* | Usage | Collector |
issuing_transit | money which was issued in the system (circulation) | system | issuer | circulation | n/a |
technical_transit | technical transit account, after the operation was completed the balance of this account must be 0 | system | system | circulation* | n/a |
technical_transit | technical transit account, after the operation was completed the balance of this account must be 0 | system | system | accounting* | n/a |
regular_system_commission | system commission from regular users (such as individual) for the internal operation (e.g. transfer, top up via bank etc.) OR system commission for external operation, when the commission was issued at the circulation | system | system | circulation | n/a |
business_system_commission | system commission from business users (such as merchants) for the internal operation (e.g. transfer, top up via bank, etc.) OR system commission for external operation, when the commission was issued at the circulation | system | system | circulation | n/a |
regular_system_commission | system commission from regular users such as individual for the internal operation (e.g. transfer, top up via bank etc.) | system | system | accounting | n/a |
business_system_commission | system commission from business users such as merchant for the internal operation (e.g. transfer, top up via bank, etc.) | system | system | accounting | n/a |
issuing_balance | ledger account, is used to calculate the in-system circulation volume | system | system | accounting | n/a |
regular_gate_commission | is used for calculations of commission income for specified provider account and specific commission collector for Individuals. | system, gate-provider | gate | accounting | Provider |
business_gate_commission | is used for calculations of commission income for specified provider account and specific commission collector for Merchant. | system, gate-provider | gate | accounting | Provider |
debt_gate_settlement | is used for calculation of amount which the system did not received from provider because provider deducted their commission. This wallet is allow to have a negative balance. | gate | gate | accounting | |
debt_gate_commission | is used for calculation of gate commission which was not covered by total commission received from the Individual and Merchant | gate | gate | accounting | Provider |
exchange_reserve | is used only for Currency Exchange operations as exchange reserve account | system | system | circulation | n/a |
client | a general type of accounts owned by end users (Individual, Merchant) | individual, merchant | client | circulation | n/a |
gate | gate balance account | gate-provider | gate | accounting | n/a |
reserve | money which is transferring from one cash desk to another | system | system | circulation | n/a |
cash | cash desk account | cash desk, merchant* *merchant – as legacy logic | cash desk | accounting | n/a |
prepaid | prepaid account can be accessed by serial and pin (voucher coin) | individual, merchant | client | circulation | n/a |
cashback_payer (is not used) | the merchant obligation before the payers to pay cashback, the funds from this coin are sent to payer client coin at the end of the month | client | circulation | n/a | |
cashback_merchant (is not used) | the obligation to pay cashback for merchant who accept payment, the funds on this account are sent to payer client coin (also to the commission coin) at the end of the month | client | circulation | n/a |
*Level – the logical level of the account, is not linked with a certain organization
Supported commission directions for all operation types
The System supports the following commission directions for operations (via Front-end and API):
Operation type | Supported commission direction |
---|---|
TOPUP via provider | OUT (tab Provider Commission) |
WITHDRAW via provider | IN (tab Provider Commission) |
PURCHASE via provider | OUT (tab Product Commission) |
TRANSFER | IN, OUT, SHARED |
TOPUP via bank | OUT |
WITHDRAW via bank | IN |
Merchant PAYMENT | IN |
INVOICE | IN |
Voucher CREATION | OUT |
Voucher ACTIVATION | IN |
TOP UP via cash desk | OUT |
WITHDRAW via cash desk | IN |
ISSUE CARD (based on PURCHASE via provider operation) | OUT (tab Product Commission) |
Creation of all other commission directions for certain operations is blocked on the Front-end, API, and code level. For source code clients it’s possible to unlock and use additional the configurations.