Business Process
BusinessProcess
is any process that can cause balance change of Coin
. It’s main purpose is grouping Transaction
s by business function they perform. For example, GateProcess
can have up to 8 Transaction
s: several funds holds, accounting transfers, hold captures etc. So to show transaction history for a user we need to group them into a “container” which is our BusinessProcess
. BusinessProcess
class is defined as abstract to force developer to specify related business information in each implementation. JPA inheritance strategy is JOINED
, so each subclass must have it’s own table and therefore migration for it.
Business Process Classes
Process Type |
Purpose |
Comments |
---|---|---|
BankProcess |
Business process for top up or withdrawal via bank. |
|
CardAttachmentProcess |
Business process of Payment Card verification. |
|
CardRefundProcess |
Returning funds to customer after they performed “processed” card payment. |
|
CashDeskProcess |
Process of manipulations with client coin via cash desk. Possible manipulations are: charge, redeem. |
|
CashbackPaymentProcess |
Payment for an invoice created by a merchant. |
|
ClientTransactionProcess |
Transaction between two coins. Possible operations are: transfer between two client coins, splitting one client coin into two, merge two client coins into one, issue of a client coin, checking balance of a client coin, withdrawal from a client coin, issuing a prepaid coin or transfer from client’s coin to a prepaid coin, transfer from a prepaid coin to a client coin. |
|
ContractTransitProcess |
Payment for a new contract settings. |
|
DepositProcess |
Operation, occurred with deposit coin: deposit top-up, payment of a profit form deposit, capitalization of profits, accruing deposit, paying out a deposit. |
|
ExchangeProcess |
Exchange process between coins. |
|
ExchangeReserveProcess |
Business process for top up or withdrawal exchange reserve wallet via bank. |
|
TopUpExchangeProcess* |
Process specifies top up part of an exchange process |
*deprecated in V4.17.0 new process: ExchangeProcess |
WithdrawExchangeProcess* |
Process specifies withdraw part of an exchange process. |
*deprecated in V4.17.0 new process: ExchangeProcess |
GateProcess |
Manipulation with a coin via gate: top-up, withdrawal, product purchase. |
|
MerchantBaseProcess |
|
|
MerchantInvoiceProcess |
Customer pays for the invoice from merchant. |
|
MerchantPaymentProcess |
Customer pays for merchant’s product. |
|
SystemCashProcess |
|
|
CashReserveProcess |
Transfer of cash or securities from cash desk or provider account coin to reserve coin and vice versa. |
|
InvestmentProcess |
Input of cash or securities into the system to cash desk or provider account coin. |
|
Business Process Types
businessProcess class |
businessProcess. businessProcessType |
UI field name (filter “Types”) |
businessProcessType |
---|---|---|---|
GateProcess |
gate_redeem |
Withdrawal via provider |
withdrawal from client coin through gate provider |
ClientTransactionProcess |
client_transaction_transfer |
Transfer |
transfer from one client coin to another (from client1 coin to client2 coin) |
ClientTransactionProcess |
client_transaction_issue |
Account creation |
creation a new client coin (transaction with amount = 0) |
ClientTransactionProcess |
client_create_prepaid |
Voucher creation |
voucher creation from client coin |
ClientTransactionProcess |
client_charge_prepaid |
Voucher activation |
payment of voucher amount to client coin |
MerchantPaymentProcess |
merchant_payment |
Merchant payment |
payment for merchant goods and services to merchant coin |
MerchantInvoiceProcess |
merchant_invoice |
Invoice |
the payment for the invoice that was created by merchant. |
GateProcess |
gate_charge |
Top up via provider |
top up of client coin through gate provider |
GateProcess |
gate_purchase |
Purchase via provider |
product purchase using client coin |
GateProcess |
gate_issue_card |
Issue Card |
issue card using client coin |
ExchangeProcess |
exchange_transaction |
Currency exchange |
currency exchange operation |
ExchangeReserveProcess |
exchange_reserve_top_up |
Top up Exchange reserve |
top up of exchange reserve coin from bank account |
ExchangeReserveProcess |
exchange_reserve_withdraw |
Withdraw Exchange reserve |
withdraw from exchange reserve coin to bank account |
CashDeskProcess |
cash_desk_redeem |
Withdrawal via cash desk |
withdrawal from client coin through cash desk |
CashDeskProcess |
cash_desk_charge |
Top up via cash desk |
top up of client through cash desk |
InvestmentProcess |
cash_investment |
Provider/cash desk account top up |
investment money to cash desk |
CashReserveProcess |
cash_collect |
Cash collect |
money movement between cash desks (collect money) |
CashReserveProcess |
cash_input |
Cash input |
money movement between cash desks (input money) |
ContractTransitProcess |
contract_transit |
Contract change fee |
|
BankProcess |
bank_topup |
Topup via bank |
top up of client coin from bank account |
BankProcess |
bank_redeem |
Withdrawal via bank |
withdrawal from client coin to bank account |
Business Process Statuses
BusinessProcessStatus
reflects step in BusinessProcess
flow.
Business process is created in either pending
or limited
statuses and transits to declined
, rejected
, error
or processed
, waiting_for_approval
statuses.
See more details about limited operations management
Business Process Status
Status |
Meaning |
---|---|
|
Process was restricted by limit profile and need to be approved |
|
Merchant payment business process is created (API The API operation |
|
Process was created and is waiting for processing or declining |
|
Pending process was declined |
|
Pending process has been processed |
|
Error occurred while processing. |
|
Limited process has been rejected by anti-fraud |
|
Issue card process was created and is waiting for approval by the service role user. Business process is waiting for OTP confirmation by user. |
Business Process Flow
Status |
Can transit to |
Transition Reason |
---|---|---|
pending |
processed |
The process was completed successfully. |
|
declined |
The process is declined because of some decision. For example, when the accountant decides to decline request to withdraw funds via cash desk. |
|
error |
The process failed due to some internal exception. |
limited |
processed |
Anti-fraud specialist approved the process and it was completed successfully. |
|
rejected |
Anti-fraud specialist rejected the process. |
|
pending |
The process, which anti-fraud specialist approved, is waiting to be processed. |
|
error |
The process failed due to some internal exception. |
waiting_for_approval |
pending |
Issue card process was approved by the service role and is waiting to be processed |
|
declined |
Issue card process is declined because of some decision. |
|
error |
The process failed due to some internal exception. |
Dependency on business process statuses and balance updates
Transfer, TopUp via Provider, BankTopUP etc.
Operations performed within a single session. If the session was successful, the money is withdrawn, if not, the money is in its initial (before the operation) state.
Withdrawal via Provider etc.
The transactions are distributed (additional condition fulfillment is required). During the first session, the money was on hold.
In the second session:
- if the transaction is approved, the money is captured and sent to the recipient’s wallet
- if the operation is declined, then the money is reversed and returned to the sender’s wallet
- if an error occurs (within the second session), the money is in the state as before the second session start – on the hold
Business process and transaction identifiers in POST/transactions/view
- id – ID of the business process (operation) in SDK system
- requestIdentifier – ID of the business request as a part of the business process (present for distributed operations, e.g. Top up via bank, Top up via cash desk, etc.)
- externalProcessId – ID of the transaction from the provider system, will return from the response if the provider sets it and returns in the integration. Present only for GateProcess operations. This identifier can be used to track transactions in both, SDK and provider systems
- transactions[0].id – ID of the atomic transactions (e.g. merge, issue, transfer) inside the business process
- refundProcess.id
- if operation type: gate_purchase – ID of the refund business process that was created for the original operation
- if operation type: gate_refund – ID of the original business process that was refunded
txIdToRefund – transaction ID to be used for Refund operation
Business process type (for access)
Back-end access logic:
-
if the user has permission
SYSTEM_TRANSACTION_VIEWER
, APIs return only system business processes -
if the user has permission
CLIENT_TRANSACTION_VIEWER
, APIs returns only client business processes -
if the user has both permissions, APIs returns all transactions
Front-end access logic:
-
Show menu
System account → View transactions
button according to the permissionSYSTEM_TRANSACTION_VIEWER
-
Show menu
Clients → View profile → Last transactions
according to the permissionCLIENT_TRANSACTION_VIEWER
-
Show menu
Transactions
according to the permissionCLIENT_TRANSACTION_VIEWER
Business process |
type (Client/System) |
---|---|
BANK_REDEEM |
Client, System |
BANK_REDEEM_COMMISSION |
System |
BANK_TOPUP |
Client, System |
GATE_CARD_VERIFICATION |
Client |
CASH_DESK_CHARGE |
Client, System |
CASH_DESK_REDEEM |
Client, System |
CASH_COLLECT |
System |
CASH_INPUT |
System |
CASH_INVESTMENT |
System |
MERCHANT_CASHBACK |
Client |
CLIENT_TRANSACTION_TRANSFER |
Client |
CLIENT_TRANSACTION_SPLIT |
System |
CLIENT_TRANSACTION_MERGE |
System |
CLIENT_TRANSACTION_REDEEM |
System |
CLIENT_CREATE_PREPAID |
Client |
CLIENT_CHARGE_PREPAID |
Client |
CLIENT_TRANSACTION_ISSUE |
System |
CLIENT_TRANSACTION_BALANCE |
Client |
CONTRACT_TRANSIT |
Client |
EXCHANGE_TRANSACTION |
Client |
GATE_CHARGE |
Client |
GATE_MERCHANT_PAYMENT |
Client |
GATE_REDEEM |
Client |
GATE_PURCHASE |
Client |
GATE_ISSUE_CARD |
Client |
GATE_TOKENIZATION |
Client |
MERCHANT_INVOICE |
Client |
MERCHANT_PAYMENT |
Client |
MONTHLY_FEE |
Client |
EXCHANGE_RESERVE_TOP_UP |
System |
EXCHANGE_RESERVE_WITHDRAW |
System |
GATE_CARD_REFUND |
Client |
GATE_REFUND |
Client |