Explore Knowledge Base

Business Process

12. 11. 2024

BusinessProcess is any process that can cause balance change of Coin. It’s main purpose is grouping Transactions by business function they perform. For example, GateProcess can have up to 8 Transactions: 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 BusinessProcessBusinessProcess 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
description

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 declinedrejectederror or processed, waiting_for_approval statuses.

See more details about limited operations management

Status

Meaning

Comments

limited

Process was restricted by limit profile and need to be approved

pending

Process was created and is waiting for processing or declining

declined

Pending process was declined

processed

Pending process has been processed

error

Error occurred while processing.

rejected

Limited process has been rejected by anti-fraud

waiting_for_approval

Process was created and is waiting for approval by Compliance or Administrator

Business Process Flow

Status

Can transit to

Transition Reason

pending

processed

Pending process was completed successfully.

declined

Pending process was declined because of some decision. For example, when accountant decides to decline request to withdraw funds via cash desk.

error

Pending process failed due to some internal exception.

limited

processed

Limited process, which was approved by anti-fraud specialist, was completed successfully.

rejected

Limited process was rejected by anti-fraud specialist.

pending

Limited process, which was approved by anti-fraud specialist, was requested to process again.

error

Limited process failed due to some internal exception.

waiting_for_approval

pending

Process which was approved by anti-fraud specialist, was requested to process again

declined

Process which was waiting for approval declined because of some decision. For example, when Compliance decides to decline a request to issue a card via 3rd party provider.

error

Process failed due to some internal exception.

Entities Statuses & Status Codes

Status code is used only for Reference

Current status

Status code

State

State transition flow

Description

TxStatus

INITIATED

TX_104

In progress

Success
Failed

When transaction was started by user, but payment provider wasn’t yet chosen

PROVIDER_ASSIGNED

TX_105

In progress

Success
Failed

When user has already chosen the provider

PENDING

TX_102

In progress

Success
Failed

When transaction was sent to payment provider (example: user was redirected to provider’s website)
or request for a new transaction was just received from provider (example: terminals)

PROVIDER_PROCESSED

TX_107

In progress

Success
Failed

When payment provider completed transaction successfully

PROCESSED

TX_201

Success

n/a

Transaction was completed successfully

FAILURE

TX_304

Failed

n/a

Transaction was completed unsuccessfully – error response received from payment provider

EXCEPTION

TX_305

Failed

n/a

An exception has been occurred after payment provider selection

WAITING_FOR_APPROVAL

TX_103

In progress

Success
Failed

Process was created and is waiting for approval by Compliance or Administrator

BusinessProcessStatus

limited

BP_103

In progress

Success
Failed

Process is restricted by limit profile and need to be approved by anti-fraud specialist

pending

BP_102

In progress

Success
Failed

Process is created and waits for processing, declining or rejecting

processed

BP_201

Success

n/a

Pending operation is processed. This status is happened in conditions:

  • when transaction is completed

or

  • if this BP is composite all child BP processes should also be processed

error

BP_301

Failed

n/a

Error occurs while processing

declined

BP_302

Failed

n/a

Pending process is declined

rejected

BP_303

Failed

n/a

Limited process was rejected by anti-fraud

waiting_for_approval

BP_105

In progress

Success
Failed

Process was created and is waiting for approval by Compliance or Administrator

BusinessRequestStatus

limited

BR_103

In progress

Success
Failed

The request was limited by the limit rules

pending

BR_102

In progress

Success
Failed

Request is created and waits for processing, declining or rejecting

waiting

BR_108

In progress

Success
Failed

Status of pending business request linked with cash desk operations can be updated to waiting status when a request comes in after the system cut off.

requires_confirmation

BR_109

In progress

Success
Failed

Request was created by user and waits for confirmation

processed

BR_201

Success

n/a

Pending request is processed

allowed_to_withdraw

BR_203

In progress

Success
Failed

Process is waiting when Cashier performs cash withdrawal.

Status also occurs when the process was limited and processed again after uplifting limits

error

BR_301

Failed

n/a

Error occurs while request processing

declined

BR_302

Failed

n/a

Request was declined by service user

approved

BR_202

Success

n/a

Request was approved by service user

rejected

Failed

n/a

Limited request was rejected by service user

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