Skip to content

MngCreateManualCashierDeposit

Creates a manual Cashier deposit transaction with provider = "manual" and source = 1.

When process_now = 1, Cashier immediately posts OP_BALANCE_IN through Core::SetBalance with TR_REASON_CASHIER_DEPOSIT.

Access

Only SESSION_CRM_MANAGER and SESSION_CRM_ADMIN are allowed.

Role Required permissions
SESSION_CRM_ADMIN No additional finance permission flags required
SESSION_CRM_MANAGER access_crm = 1, set_finance = 1; process_now = 1 additionally requires approve_finance = 1
SESSION_MANAGER, SESSION_ADMIN, SESSION_DEALER Forbidden, regardless of finance flags

The manager record must exist and be enabled. CRM managers remain constrained by customer/account scope, including brand and desk. CRM admins bypass these manual-method permission/scope checks, but not business checks: customer deposit/withdrawal gates, account availability and transaction processing rules still apply. The backend uses the resolved staff manager id for audit/processing. Checks run inside the handler, including direct Moleculer calls; they are not only router metadata.

Request Parameters

Name Type Required Description
login int Yes Trading account login
amount double Yes Positive deposit amount
currency string Yes Transaction currency. Must match account group currency
customer_id int No Customer id. Defaults to account-linked customer
method string No Manual method marker
provider_payment_id string No External/manual reference
idempotency_key string No Customer-scoped idempotency key
comment string No Manager comment
metadata_json string No Additional JSON metadata
owner_manager_id int No Owner of the transaction: the manager it counts towards in statistics. 0 or omitted falls back to the customer assigned_manager_id
process_now int No 1 to credit account immediately

Response

Returns transaction.

Errors

Code Error Description
400 CURRENCY_CONVERSION_REQUIRED Currency does not match account group currency
400 INVALID_MANAGER owner_manager_id does not name an existing, enabled manager with CRM access in the customer's brand. Message: Manager does not exist, is disabled, has no CRM access or belongs to another brand

Transaction Owner

owner_manager_id names the Owner of the transaction, the manager it counts towards in the money columns of MngGetManagersCustomerStatsByFilter. It is written once at creation and never changes; MngUpdateCashierTransaction does not accept it.

A non-zero value must name a manager that exists, is enabled, has access_crm = 1, is not the service recovery account, and belongs to the same brand as the customer. Otherwise the command answers 400 INVALID_MANAGER.

When the field is omitted or 0, the Owner becomes the manager the customer is assigned to, assigned_manager_id. A customer assigned to nobody yields owner_manager_id = 0.

Candidates for the field are enabled managers with access_crm = 1 in the customer's brand, which can be listed with MngGetManagersByFilter. That command is not available to CRM sessions, so a CRM interface has to obtain the list through a BackOffice session.

The returned transaction already carries the resolved owner_manager_id, alongside attributed_manager_id, which records the manager the customer was assigned to when the transaction was created. See Transaction Ownership.

Request Example

{
  "command": "MngCreateManualCashierDeposit",
  "extID": "1",
  "data": {
    "login": 2000009,
    "amount": 100.0,
    "currency": "EUR",
    "comment": "Manual bank deposit",
    "owner_manager_id": 12,
    "process_now": 1
  }
}