Velocity limits

On this page:

Velocity limits

Velocity limits can be used to control transaction spending*. It defines the aggregated amount and the total number of transactions** which can be performed by a cardholder within a specified time***. Like balance limits, velocity limits are also linked with the card product. Cards associated with the card product shall follow the velocity limits tied to that card product.

* What are transaction spending controls? For example, allow 50 USD per authorization or 15,000 USD spending per month.

** What is total number of transactions? For example, allow upto 5 authorizations per day. Also known as transaction frequency.

*** What is specified time? For example, specified time can be daily, monthly, yearly, or lifetime.

Velocity limits can be applied to the card product at the time of creation of the card product or the velocity limits can be modified later as well.

Create a velocity limit

You can create a new velocity limit by sending a POST request to /velocitylimits endpoint as given below.

POST /velocitylimits

{ "description": "The velocity limit - withdrawals", "type": “PER_TRANSACTION”, "min_amount": 1500, "max_amount": 1500, "currency": "USD", "frequency": 3, "period": "DAILY", "transaction_scope": [ "WITHDRAWALS" ]

}

Retrieve velocity limits

The nCore platform offers following retrieval options for velocity limits.

Retrieve all velocity limits

You can retrieve all existing balance limits by sending a GET request to /velocitylimits endpoint shown below.

GET /velocitylimits

Retrieve a specific velocity limit

You can retrieve a specific velocity limit by sending a GET request to /velocitylimits/{id} endpoint, where id is the balance limit id.

GET /velocitylimits/{id}

Update velocity limit

You can update the existing velocity limit as required. Send a PUT request to /velocitylimits/{id} endpoint to update a velocity limit. Include the limit ID as a path parameter to indicate the velocity limit which is required to be updated.

PUT /velocitylimits/{id}

You can link a velocity limit to your card product by sending a POST request to /cardproducts/{id}/velocitylimits:link as given below.

POST /cardproducts/{id}/velocitylimits:link

You can unlink a velocity limit from your card product by sending a POST request to /cardproducts/{id}/velocitylimits:unlink as given below.

POST /cardproducts/{id}/velocitylimits:unlink

Retrieve linked velocity limits

You can retrieve all velocity limits which are linked with your card product. Send a GET request to /cardproducts/{id}/velocitylimits endpoint as shown below.

GET /cardproducts/{id}/velocitylimits

Advanced velocity limits

We added ability to configure advanced velocity limits, which allow you to add additional configurations such as merchants (i.e. categories or identifications) in velocity limit profile, so that you can configure velocity limit profile that is applicable for specified configuration.

For this we have developed several new external APIs:

  • Create advanced velocity limit – POST v1/advancedlimits

  • Update advanced velocity limit – PUT v1/advancedlimits/{id}

  • Get all advanced velocity limits – GET v1/advancedlimits

  • Get advanced velocity limit – GET v1/advancedlimits/{id}

Advanced velocity limits are used to apply the special limit on transactional data such as limits on merchant category code, on a specific merchant or on the country from where the transaction has been initiated.

Below you can find possible condition types:

  • "MCC"

  • "MERCHANT_ID"

  • "KYC_LEVEL"

  • "CHANNEL_SCOPE"

  • "API_CHANNEL"

  • "TRANSFER_TYPE"

  • "PURCHASE_TYPE" (has such enums as PURCHASE and ECOMMERCE)

  • "CARD_TYPE" (has such enums as VIRTUAL and PHYSICAL)

  • "TRANSACTION_ORIGIN" (has such enums as DOMESTIC, FOREIGN and ANY)

Below you can find an example of 'Create advanced velocity limit' (POST /advancedlimits) request and response:

Request

{

"id" : "77a02486-10e2-4d55-9788-d0d49ed03d23",

"name": "<string>",

"type": "PER_TRANSACTION",

"description": "<string>",

"currency": "AED",

"transaction_scope": [

"WITHDRAWALS",

"PURCHASES"

],

"active": true,

"amount": 25000,

"frequency": 7,

"period": "NUM_OF_DAYS",

"num_of_days": 7,

"effective_from": "2023-12-01T00:00:00.000Z",

"effective_to": "2023-12-31T11:59:59.999Z",

"conditions": [

{

"type": "MCC",

"values": ["4511", "4582", "4722"]

},

{

"type": "ACQUIRER_COUNTRY",

"values": ["UAE"]

},

{

"type": "MERCHANT_ID",

"values": ["45576893", "47583920"]

},

{

"type": "KYC_LEVEL",

"values": ["2"]

},

{

"type": "CHANNEL_SCOPE",

"values": ["VISA", "MERCURY"]

}

]

}

Response

{

"id" : "77a02486-10e2-4d55-9788-d0d49ed03d23",

"name": "<string>",

"type": "PER_TRANSACTION",

"description": "<string>",

"currency": "AED",

"transaction_scope": [

"WITHDRAWALS",

"PURCHASES"

],

"active": true,

"min_amount": 0,

"max_amount": 25000,

"frequency": 7,

"period": "NUM_OF_DAYS",

"num_of_days": 7,

"effective_from": "2023-12-01T00:00:00.000Z",

"effective_to": "2023-12-31T11:59:59.999Z",

"program_level": false,

"created" : "2021-06-10T07:12:09.048Z",

"modified" : "2021-06-10T07:12:09.048Z",

"conditions": [

{

"type": "MCC",

"values": ["4511", "4582", "4722"]

},

{

"type": "ACQUIRER_COUNTRY",

"values": ["UAE"]

},

{

"type": "MERCHANT_ID",

"values": ["45576893", "47583920"]

},

{

"type": "KYC_LEVEL",

"values": ["2"]

},

{

"type": "CHANNEL_SCOPE",

"values": ["VISA", "MERCURY"]

}

]

}

Also we added ability for system to allow link/unlink advanced velocity limit(s) to the card products or cards so that the advanced limit can be linked when it needs to be applied and can be unlinked once it’s not required to be applied on any card or card product.

For this we have developed several new APIs:

  • Link advanced velocity limit to card product (POST)

  • Unlink advanced velocity limit from card product (POST)

  • Link advanced velocity limit to card (POST)

  • Unlink advanced velocity limit from card (POST)

  • Get advanced velocity limits linked to card product (GET)

  • Get advanced velocity limits linked to card (GET)

Last updated