Skip to main content

📄 Guide

A velocity rule is a standalone, company-owned object assembled from five control groups: purchaseControl (purchases), cashAdvanceControl (cash withdrawals), currencyControl (currency list), mccControl (merchant-category list), and geographicControl (region list). A newly created rule is ACTIVE, yet constrains nothing until it is bound to a card or an employee — binding is covered in Binding and unbinding, and the overall model in Setting spend limits.

Create a rule

POST /open-api-corp/velocity/v1/create-rule
Configure at least one of the five control groups — sending none returns DAPI_PARAM_INVALID. “Unlimited” is expressed by omitting the field; never send 0 or a negative number — doing so returns VELOCITY_LIMIT_VALUE_INVALID.
Two different axes — do not conflate them: amount limits match on the settlement currency, whereas the currencyControl list judges the original purchase currency.

Request parameters: top level

ruleRef is an idempotency key: after a cardNetwork timeout, retry with the same ruleRef and DCS will not create a duplicate rule — it returns the result of the first creation unchanged.

Request parameters: purchaseControl

Omit purchaseControl to leave purchases unlimited.

Request parameters: cashAdvanceControl

Omit cashAdvanceControl to leave withdrawals unlimited. The one difference from the purchase group is the group-level switch allowed: whenever this group is configured, allowed is required, and false bans withdrawals outright.

Request parameters: the three list controls

All three lists share the same shape: a type (WHITELIST / BLACKLIST) plus a non-empty detail list.

Response data

The response data is the complete rule object: it echoes all five control groups (an unconfigured group comes back as null, and so does any unconfigured field within a group), plus the following platform-managed fields:

Request example

Response example

Error codes

The full code set is in the Error code dictionary.

Next steps