Config key: actions
Overview
Actions control the transaction operations available to users in the wallet application. Action visibility is primarily controlled by subtypes configured on the Rehive Platform, with additional legacy configuration options available for certain actions.
Important: Subtype-Based Control
Most actions are controlled by subtypes, not by app extension configuration. Subtypes are fetched from the Platform API and determine which actions are available for each account currency:
- Subtypes are configured in the Rehive Dashboard under Transactions > Subtype controls
- The
subtypesproperty on each currency contains only subtypes allowed for that account currency - Subtypes are filtered by company, user, group, tier, and account currency settings
- Actions are automatically shown or hidden based on available subtypes
Available Actions
- send - Send funds to another user
- receive - Receive funds from another user
- withdraw - Withdraw funds to external account
- deposit - Deposit funds from external source
- request - Request payment from another user (controlled by PRS extension)
- exchange - Exchange between currencies
- buy - Purchase cryptocurrency
- sell - Sell cryptocurrency
- transfer - Transfer between own accounts
- prepaid - Prepaid voucher functionality
- redeem_voucher - Redeem voucher codes
- scan - (Mobile only) Scan QR code for send/pay
- pay - Payment functionality (accessed through scan)
Action-Subtype Mapping
Each action requires specific subtypes to be enabled:
| Action | Required Subtypes | Hide Logic |
|---|---|---|
buy |
buy |
Hidden if subtype not available |
sell |
sell |
Hidden if subtype not available |
exchange |
buy, sell |
Hidden if EITHER subtype is disabled |
send |
send_email, send_mobile, send_account, send_crypto |
Hidden only if ALL subtypes are disabled. Partial functionality available based on enabled subtypes |
receive |
receive_email, receive_mobile, receive_account |
Hidden only if ALL subtypes are disabled |
deposit |
deposit_manual |
Hidden if subtype not available |
withdraw |
withdraw_manual |
Hidden if subtype not available |
transfer |
send_transfer, receive_transfer |
Hidden if EITHER subtype is disabled |
Special Cases:
- REQUEST: Controlled by the Payment Request Service (PRS) extension, not subtypes
- SEND: Shows different recipient field options based on which specific send subtypes are enabled
- EXCHANGE: Requires both
buyANDsellsubtypes to be enabled
Legacy Configuration
Some actions still support traditional condition-based configuration:
Condition Options
Available for all actions:
- hide - Completely hide this action
- hideCurrency - Array of currency codes to hide this action for
- showCurrency - Array of currency codes to show this action for (overrides hide)
- hideGroups - Array of user groups to hide this action for
- showGroups - Array of user groups to show this action for
- hideAccounts - Array of account references to hide this action for
- showAccounts - Array of account references to show this action for
Action-Specific Config
Send
- confirmMessage - Custom message displayed on the confirmation screen
- recipient - Array of allowed recipient types:
['email', 'mobile', 'account', 'crypto']
Receive
- initialPage - Default page to show:
'qr'or'form' - recipient - Array of allowed receive types:
['email', 'mobile', 'crypto']
Withdraw
- confirmMessage - Custom message displayed on the confirmation screen
- pairs - Array of conversion pairs for exchange withdrawals (e.g.,
["XLM:USD"])
Deposit
- hideDepositReference - Hide the deposit reference field
- cryptoBankSupport - Array of currencies supporting crypto bank deposits (e.g.,
["BTC", "ETH"])
Configuration Example
{
"actions": {
"send": {
"condition": {
"hide": false,
"hideCurrency": ["BTC"],
"showCurrency": [],
"hideAccounts": [],
"showAccounts": [],
"hideGroups": ["basic"],
"showGroups": []
},
"config": {
"confirmMessage": "Please verify the recipient details before sending.",
"recipient": ["email", "mobile"]
}
},
"receive": {
"condition": {
"hide": false,
"hideCurrency": [],
"showCurrency": []
},
"config": {
"initialPage": "qr",
"recipient": ["email", "mobile"]
}
},
"withdraw": {
"condition": {
"hide": false,
"hideCurrency": [],
"hideGroups": ["unverified"]
},
"config": {
"confirmMessage": "Withdrawals may take 1-3 business days to process.",
"pairs": []
}
},
"deposit": {
"condition": {
"hideCurrency": ["USD"]
},
"config": {
"hideDepositReference": false,
"cryptoBankSupport": ["BTC", "ETH"]
}
},
"exchange": {
"condition": {
"hide": false,
"hideGroups": ["basic"]
}
}
}
}
Best Practices
- Use subtypes for primary control - Configure subtypes in the Rehive Dashboard for main action visibility
- Use legacy config for refinement - Use condition-based config only for additional filtering beyond subtypes
- Test thoroughly - Verify action visibility for different user groups, tiers, and currencies
- Document your setup - Keep track of which subtypes are enabled for which currencies