Skip to main content
A velocity control limits how much users can spend. You can configure velocity controls to limit how much users can spend and the number of transactions they can make in a given span of time. You can apply velocity controls to a single user, to all users associated with a particular card product, or to all users in your program. Only Program Managers can create or modify program-wide velocity controls. A POST or PUT call from a role that does not have Program Manager permissions will receive a 403 error if its association field is null, or if it includes all of the fields in the request body. Avoid this by passing a valid user_token or card_product_token in the velocity control’s association object, indicating that the request is specific to a user or card product, and not program-wide. You should also only include the specific fields you want to update, because a PUT or POST with values for all fields is interpreted as a change that requires Program Manager permissions. See Controlling Spending for a tutorial that walks you through the creation of a spend control.
Note Each program supports a maximum of 90 spend controls (velocity controls and authorization controls combined). The limit of 90 spend controls applies at the program level only; it does not affect the number of user-level spend controls you can use.

Create velocity control

Action: POST Endpoint: /velocitycontrols Limits how much and how frequently a user can spend funds. If multiple velocity controls apply to the same user, the user cannot exceed any of the defined spending limits.
Tip You can create program-level controls in the sandbox environment. However, you must work with your Marqeta representative to create program-level controls in a production environment.

Request body

Velocity control object

Sample request body

JSON

Response body

Sample response body

JSON

List velocity controls

Action: GET Endpoint: /velocitycontrols Retrieves a list of all the velocity controls associated with a specific user or card product, or lists all the velocity controls defined for your program. Include either a user or a card_product query parameter to indicate the user or card product whose associated velocity controls you want to retrieve (do not include both). To list all velocity controls for your program, omit the user and card_product query parameters from your request. This endpoint supports field filtering and pagination.

URL query parameters

Response body

Sample response body

JSON

Returns a specific velocity control

Action: GET Endpoint: /velocitycontrols/{token} Retrieves a specific velocity control.

URL path parameters

URL query parameters

Response body

Sample response body

JSON

Update velocity control

Action: PUT Endpoint: /velocitycontrols/{token} Updates a specific velocity control.

URL path parameters

Request body

Sample request body

JSON

Response body

Sample response body

JSON

List user velocity control balances

Action: GET Endpoint: /velocitycontrols/user/{user_token}/available Retrieves a list of the available balances of the velocity controls associated with a user. This operation is unavailable for velocity controls with a window of TRANSACTION, because available balances do not apply to single-transaction velocity windows. Depending on the control, the balance can include an available monetary amount, the number of transactions remaining, and the number of days remaining in the time window. This endpoint supports field filtering and pagination.

URL path parameters

URL query parameters

Response body

Sample response body

JSON