Revoke and Cancel Users and Accounts
When users fail evaluations or leave your service, you need to revoke their accounts and cancel their subscriptions. Staying on top of account failures keeps you from paying for users who are no longer trading.
This page covers how to detect evaluation failures, when to revoke versus cancel, and how to handle end-of-month cleanup.
Revoking vs. Canceling
Revoking revokes the user’s trading permissions from that account only. Although the user can no longer trade on that account, they can still trade on their other accounts. They still have their Tradovate subscriptions, market data subscriptions, and plugin subscriptions.
Canceling revokes the user’s trading permissions and cancels their Tradovate subscriptions, market data subscriptions, and plugin subscriptions.
Revoke accounts for users who still have other accounts with you.
Cancel accounts for users who don’t have other accounts with you and are leaving your service.
Revoking an Account
To revoke an account, call revokeTradingPermissions with the failed accounts’ trading permission IDs. Revoking immediately removes the affected accounts from the user’s viewable accounts.
You can call this endpoint for more than one user at a time. See revokeTradingPermissions for the full instructions.
Canceling an Account
To cancel a user account, call cancelEverything at the end of the trading day from both live and demo with the user’s userId, setting tradovateSubscriptions, tradingPermissions, userPlugins, and marketDataSubscriptions to true.
Canceling at the end of the trading day gives the system time to process all end-of-day events.
You can call this endpoint for more than one user at a time. See cancelEverything for the full instructions.
What Happens After Revoking or Canceling
When all trading permissions for an account are revoked, the account enters a 10-day waiting period. On the Friday following the 10th day, the account is archived. Active accounts for the user are unaffected.
Once an account is archived, it’s permanently deleted from the database and can no longer be accessed via the API.
Detecting Account Failures
When a user fails an evaluation, the account’s adminAction field changes from Normal to a non-normal value. You can detect this in two ways:
With WebSockets: Subscribe to accountRiskStatus entity updates. When an update arrives with adminAction !== "Normal", the account has failed its evaluation.
Without WebSockets: Query the accountRiskStatuses repository in the Admin Dashboard or call the accountRiskStatus/lDependents endpoint to check the risk status of specific accounts.
Best Practices
End-of-Month Subscription Cleanup
Tradovate automatically renews subscriptions between 7:00 PM CT on the last day of the month and 4:00 AM CT on the first day of the following month.
To avoid being charged for inactive users in the new month, cancel Tradovate subscriptions for inactive users on the last day of the month.
To do this, call cancelEverything twice on the last day of the month:
- Before the renewal window opens (about 5:00 to 6:00 PM CT)
- At about 11:00 PM CT to capture users whose accounts failed after the first call

