Set participant limit override

PUT
/providers/{providerID}/participants/{participantID}/limits

Create or update the limit override for one participant. An override is the most specific layer: it beats the participant’s groups and your provider default.

A body that changes no field returns 400. An expiresOn in the past returns 400. An explicit null on expiresOn or on a dimension leaves that value unchanged, the same as omitting it.

Auth: API key or bearer token. Scoped to the calling provider.

Request
cURL
curl -X PUT https://api.moov.money/providers/{providerID}/participants/{participantID}/limits \
  -u "$MOOV_API_KEY_ID:$MOOV_API_KEY_SECRET" \
  -H "X-Moov-Version: v2026.10.00"
Responses
200 400 401 403 404 409 422
The request completed successfully.
{
  "override": {
    "createdOn": "2026-08-31T12:00:00Z",
    "currency": "USD",
    "dailyAmount": {
      "currency": {
        "code": "USD",
        "decimalPlaces": 2
      },
      "value": "1000.00"
    },
    "dailySendCount": 10,
    "monthlyAmount": {
      "currency": {
        "code": "USD",
        "decimalPlaces": 2
      },
      "value": "10000.00"
    },
    "perTransactionAmount": {
      "currency": {
        "code": "USD",
        "decimalPlaces": 2
      },
      "value": "500.00"
    },
    "reason": "Support case 12345",
    "reference": "case-12345",
    "versionID": "ver_01HF5J9ZKQT4RXP8M2VYBN3D",
    "weeklyAmount": {
      "currency": {
        "code": "USD",
        "decimalPlaces": 2
      },
      "value": "2500.00"
    }
  }
}
Malformed request: the body or headers failed validation.
Response body application/problem+json
RFC 9457 Problem Details error body, served as application/problem+json. From v2026.10.00, every error response that has a body uses this schema.

type

string required
URI that tells you which problem occurred. Branch on this value; it never changes. Moov problem types look like https://api.moov.money/errors#<code> (for example invalid-request, idempotency-key-reused, or idempotency-request-in-progress). Treat the value as an opaque constant and do not fetch it. about:blank means the HTTP status code says everything there is to know.

title

string required
Short human-readable name of the problem type. Fixed per type; defaults to the HTTP status text.

status

integer<int32> required
The HTTP status code of this response.

detail

string
Human-readable explanation of this specific occurrence.

instance

string
URI reference that identifies this specific occurrence.

errors

array<object>
The request-body fields that failed validation. Present on validation errors only.
Show child attributes

errors[]

pointer

string required
RFC 6901 JSON Pointer to the field, using the public JSON field names. If the field is missing, the pointer shows where it belongs.

detail

string required
What is wrong with the field.
Authentication missing, invalid, or insufficient.
Authentication present but the action is forbidden for this principal/claim.
The requested resource was not found.
Returned when a version-producing mutation’s expectedVersionID is stale or omitted while a version exists. You re-read the resource and retry with the current version.
Response body application/problem+json
RFC 9457 Problem Details body of the 409 returned when a version-producing mutation’s expectedVersionID is stale. currentVersion is an extension member of the problem detail.

detail

string
Human-readable explanation of this specific occurrence.

type

string<enum> required
The problem type URI, always https://api.moov.money/errors#version-conflict.
Possible values: https://api.moov.money/errors#version-conflict

title

string required
Short human-readable name of the problem type.

status

integer<int32> required
The HTTP status code of this response, always 409.

currentVersion

string required
The current latest version ID; re-read before retrying.
The request was well-formed but couldn’t be processed (e.g. card declined).
Response body application/problem+json
RFC 9457 Problem Details error body, served as application/problem+json. From v2026.10.00, every error response that has a body uses this schema.

type

string required
URI that tells you which problem occurred. Branch on this value; it never changes. Moov problem types look like https://api.moov.money/errors#<code> (for example invalid-request, idempotency-key-reused, or idempotency-request-in-progress). Treat the value as an opaque constant and do not fetch it. about:blank means the HTTP status code says everything there is to know.

title

string required
Short human-readable name of the problem type. Fixed per type; defaults to the HTTP status text.

status

integer<int32> required
The HTTP status code of this response.

detail

string
Human-readable explanation of this specific occurrence.

instance

string
URI reference that identifies this specific occurrence.

errors

array<object>
The request-body fields that failed validation. Present on validation errors only.
Show child attributes

errors[]

pointer

string required
RFC 6901 JSON Pointer to the field, using the public JSON field names. If the field is missing, the pointer shows where it belongs.

detail

string required
What is wrong with the field.

Headers

X-Moov-Version

string
Set this header to the API version being targeted (e.g. v2026.10.00). When omitted, the server applies its default version.

Path parameters

providerID

string required
Your provider account ID.

participantID

string required
The participant’s participantID, or your externalID for them. Both resolve to the same participant.

Request

application/json
A create-or-update write for the participant limit override: present dimensions change, and an omitted dimension or an explicit null leaves the stored value unchanged. Send expectedVersionID from your latest read. Omit it on the first write.

expectedVersionID

string
The versionID from your latest read; omit on first put. A put over a support-created override replaces its ceilings and expiry from empty.

perTransactionAmount

object | null
Per-send amount ceiling. Omit or send null to leave unchanged.

dailyAmount

object | null
Trailing 24h amount ceiling. Omit or send null to leave unchanged.

weeklyAmount

object | null
Trailing 7d amount ceiling. Omit or send null to leave unchanged.

monthlyAmount

object | null
Trailing 30d amount ceiling. Omit or send null to leave unchanged.

dailySendCount

integer<int64> | null
Trailing 24h send-count ceiling. Omit or send null to leave unchanged.

expiresOn

string<date-time> | null
When the override lapses. Omit to keep the current expiry. An explicit null means the same. The first put without it is permanent. Must be in the future when set.

Response

Response envelope for the participant limit override; the override is nested under override.

override

object required
The participant limit override.
Show child attributes

override

currency

string required
Three-letter ISO 4217 currency the override is denominated in (v1 USD-only).

perTransactionAmount

object
Per-send amount ceiling.
Show child attributes

override.perTransactionAmount

value

string required
Decimal amount as a string.

currency

object required
ISO 4217 currency descriptor.
Show child attributes

override.perTransactionAmount.currency

code

string required
Uppercase 3-letter ISO 4217 currency code.

decimalPlaces

integer<uint8> required
Number of minor-unit decimal places for code. Required.

numericCode

string
ISO 4217 numeric currency code, if known. Informational only.

name

string
Human-readable currency name, if known. Informational only.

dailyAmount

object
Trailing 24h amount ceiling.
Show child attributes

override.dailyAmount

value

string required
Decimal amount as a string.

currency

object required
ISO 4217 currency descriptor.
Show child attributes

override.dailyAmount.currency

code

string required
Uppercase 3-letter ISO 4217 currency code.

decimalPlaces

integer<uint8> required
Number of minor-unit decimal places for code. Required.

numericCode

string
ISO 4217 numeric currency code, if known. Informational only.

name

string
Human-readable currency name, if known. Informational only.

weeklyAmount

object
Trailing 7d amount ceiling.
Show child attributes

override.weeklyAmount

value

string required
Decimal amount as a string.

currency

object required
ISO 4217 currency descriptor.
Show child attributes

override.weeklyAmount.currency

code

string required
Uppercase 3-letter ISO 4217 currency code.

decimalPlaces

integer<uint8> required
Number of minor-unit decimal places for code. Required.

numericCode

string
ISO 4217 numeric currency code, if known. Informational only.

name

string
Human-readable currency name, if known. Informational only.

monthlyAmount

object
Trailing 30d amount ceiling.
Show child attributes

override.monthlyAmount

value

string required
Decimal amount as a string.

currency

object required
ISO 4217 currency descriptor.
Show child attributes

override.monthlyAmount.currency

code

string required
Uppercase 3-letter ISO 4217 currency code.

decimalPlaces

integer<uint8> required
Number of minor-unit decimal places for code. Required.

numericCode

string
ISO 4217 numeric currency code, if known. Informational only.

name

string
Human-readable currency name, if known. Informational only.

dailySendCount

integer<int64>
Trailing 24h send-count ceiling.

expiresOn

string<date-time>
When the override lapses. null = permanent. Required (within 24 hours) for support overrides.

reason

string
Override reason. Required for support overrides.

reference

string
Support ticket or case reference. Required for support overrides.

versionID

string required
Latest version ID; send this back as expectedVersionID on your next mutation.

createdOn

string<date-time> required
When this version was created.