Skip to content

MngCreateManualCashierWithdrawal

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

When process_now = 1, Cashier immediately posts OP_BALANCE_OUT through Core::SetBalance with TR_REASON_CASHIER_WITHDRAWAL. The amount in the API is positive; Cashier sends a negative balance amount internally.

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 withdrawal 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
process_now int No 1 to debit account immediately

Response

Returns transaction.

Errors

Code Error Description
400 CURRENCY_CONVERSION_REQUIRED Currency does not match account group currency

Request Example

{
  "command": "MngCreateManualCashierWithdrawal",
  "extID": "1",
  "data": {
    "login": 2000009,
    "amount": 50.0,
    "currency": "EUR",
    "comment": "Manual withdrawal",
    "process_now": 0
  }
}