# VelocityContributorConfig

A model the API reference uses in a request or a response. The operation pages link every field typed as this model here.

Velocity Handler configuration: how many transactions, and how much value, this merchant may
run inside each window.

## Fields
- `enabled` (boolean): Whether this rule runs. False, the default, means the rule is skipped and never flags a transaction. A rule that is enabled but has no usable settings also screens nothing.
- `actionWhenTriggered` ([ActionWhenTriggeredType](https://devportal.signapay-sbx.winkpg.io/docs/api/models/ActionWhenTriggeredType.md)): What happens when this rule flags a transaction. `AuditOnly`, the default, records the detection and lets the transaction continue. `Stop` halts the transaction before authorization, and the caller receives HTTP 403 with the error code `SCREENING_STOPPED`. `HoldForReview` parks the transaction on the fraud review queue until a reviewer approves or declines it, or the merchant's hold deadline passes. Whatever the action, the verdict is recorded on the transaction.
  Values:
  - `AuditOnly`
  - `Stop`
  - `HoldForReview`
- `settings` ([VelocitySettings](https://devportal.signapay-sbx.winkpg.io/docs/api/models/VelocitySettings.md)): The velocity limits. Null leaves the rule unconfigured, which screens nothing.
  Fields:
  - `maxTxPerMinute` (integer(int32)): Maximum transactions allowed in a window of about a minute. Null or 0 leaves the per-minute limit off. Minimum 0. (nullable, min 0)
  - `maxTxPerHour` (integer(int32)): Maximum transactions allowed in a window of about an hour. Null or 0 leaves the per-hour limit off. Minimum 0. (nullable, min 0)
  - `maxTxPerDay` (integer(int32)): Maximum transactions allowed in a window of about a day. Null or 0 leaves the per-day limit off. Minimum 0. (nullable, min 0)
  - `maxAmountPerDay` (number(double)): Maximum total transaction amount, in the transaction currency, allowed in a window of about a day. Only the base amount counts. Null or 0 leaves the daily amount limit off. Minimum 0. (nullable, min 0)
  - `maxDeclinesPerHour` (integer(int32)): Maximum processor declines this merchant may receive in a window of about an hour before the next screened transaction is flagged. Only a decline returned by the processor counts, and it is counted when the authorization completes, so the transaction that reaches the limit is not itself flagged. Null or 0 leaves the hourly decline limit off. Minimum 0. (nullable, min 0)
  - `maxDeclinesPerDay` (integer(int32)): Maximum processor declines this merchant may receive in a window of about a day before the next screened transaction is flagged. Counted the same way as `maxDeclinesPerHour`. Null or 0 leaves the daily decline limit off. Minimum 0. (nullable, min 0)
  - `perCard` ([VelocityCardLimits](https://devportal.signapay-sbx.winkpg.io/docs/api/models/VelocityCardLimits.md)): Limits counted separately for each card. A card is recognized by a keyed fingerprint of its number, or of its token or check number when no card number is present; the number itself is never stored. Null leaves every per-card limit off.
  - `perIpAddress` ([VelocityDimensionLimits](https://devportal.signapay-sbx.winkpg.io/docs/api/models/VelocityDimensionLimits.md)): Limits counted separately for each cardholder IP address. A transaction with no cardholder IP address is not counted against these limits. Null leaves every per-IP limit off.
  - `perEmail` ([VelocityDimensionLimits](https://devportal.signapay-sbx.winkpg.io/docs/api/models/VelocityDimensionLimits.md)): Limits counted separately for each cardholder email address, compared without regard to case or surrounding spaces. A transaction with no cardholder email is not counted against these limits. Null leaves every per-email limit off.
  - `perDevice` ([VelocityDimensionLimits](https://devportal.signapay-sbx.winkpg.io/docs/api/models/VelocityDimensionLimits.md)): Limits counted separately for each cardholder device, recognized by the platform device fingerprint stamped on the transaction when it is created. The fingerprint is coarse: it is derived from the browser's user agent and language and the network the request came from, so devices on one network running the same browser build share a count, and a device whose network changes starts a new one. A transaction with no device fingerprint, such as one created server to server with no browser involved, is not counted against these limits. Null leaves every per-device limit off.

## See also

- [All documentation](https://devportal.signapay-sbx.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
