Skip to main content
BVNK

Manage payment limits

Payment limits allow you to set the maximum amount you can send per transaction or per day for each currency and payment method. Limits apply only to payouts. BVNK accepts all incoming transactions, regardless of amount.

Regulatory context

The Payment Limit Management system ensures compliance with the Instant Payments Regulation (IPR) and aligns with industry best practices for security, fraud prevention, and liquidity management.

See Payment schemes for detailed descriptions of payment methods and supported currencies.

SEPA Instant restriction

Due to the Instant Payment Regulation (IPR), you can set either a transaction limit or a daily limit for SEPA Instant, but not both. Other payment methods support both limit types at the same time.

How limits work​

Limits are evaluated on every outgoing fiat payment. When a transaction is initiated, all relevant limits are checked. The transaction must pass all applicable checks to be approved. If any limit is exceeded, the payment is blocked.

You can set the following limit types:

  • Transaction: Maximum amount allowed for a single payment.
  • Daily: Maximum total amount for all payments within a calendar day. The day boundary is determined by the time zone specified when creating the limit, defaulting to UTC if not set.

The system uses three hierarchical levels. The most restrictive limit always applies:

LevelScopeWho can manageConfigurationApplies to
Level 1: GlobalSystem-wideBVNKConfigured by BVNK. See Global limits below.Every transaction across the platform
Level 2: PartnerPartner's accountPartner (Admin, workspace owners, or via API)Per payment method + currencyThe partner and all underlying customers, or the partner only, or all underlying customers only
Level 3: CustomerIndividual customerPartner or their customers (Admin, workspace owners, or via API)Per payment method + currencyA single customer only

Key rules:

  • Partners can create, modify, or delete limits for themselves or for one or more customers. Changes take effect immediately.
  • Limits set by BVNK cannot be overwritten by partners.
  • Limits follow a strict hierarchy: customer limits must remain below global limits. Limits cannot exceed global thresholds.
  • Same-day rejections, such as insufficient funds or banking partner declines, release the consumed limit. Rejections on the following day do not affect that day's limit.
  • Limits are only applied to payouts. Returns and refunds are not subject to limit checks.
  • Returned or recalled payments do not restore daily limits and are counted as separate transactions.

How daily limits are calculated​

  • Daily limits consider all transactions processed from 00:00 to 23:59 in the configured timezone (UTC by default).
  • The daily limit is reduced immediately when a transaction is processed, regardless of its final outcome. This prevents concurrent transactions from exceeding the limit.
  • For payments that are triggered on one day but sit in an approval state (for example, four-eyes approval) for multiple days, the daily limit is decreased based on the date of creation, not the date of final processing.
  • When a daily limit is first created, calculation starts from the creation time, not from the start of the day. Historical data is not recalculated.
  • Once a daily limit exists, any update takes effect immediately. The system includes all transactions already processed that day.

Limit enforcement​

Limits are checked at two stages during payment processing:

  1. Initial check at payment creation: Validates the transaction against all applicable limits. If rejected, the payment is not created, and you receive an error message.
  2. Secondary check before banking partner submission: This step addresses edge cases in mass payment processing. If rejected at this stage, the payment receives a PROCESSING_FAILED status, and both the account balance and remaining limit are immediately restored.

A transaction must pass all applicable limit checks at every level to be approved.

Mass payments

In mass payment processing, each transaction is validated separately. If a limit is reached during batch processing, affected transactions are rejected individually and may not follow the original order.

Global limits​

Global limits are set by BVNK and define the maximum transaction amount per payment method and currency across the platform. Partners and customers cannot modify these limits. The table below shows the current global transaction limits:

Global transaction limits by currency and payment method

note

Global limits may change. To request a higher limit for a specific payment method, contact your BVNK account manager.

Example scenario​

For example, consider the following limit configuration:

LevelPayment methodCurrencyLimit typeAmount
GlobalSEPA InstantEURTransaction50,000
PartnerSEPA InstantEURDaily20,000
CustomerSEPA InstantEURTransaction25,000

Transaction 1: Customer sends a 13,000 EUR SEPA Instant payment.

  • Global transaction limit (50,000): 13,000 < 50,000 — Pass
  • Partner daily limit (20,000): 13,000 < 20,000 — Pass
  • Customer transaction limit (25,000): 13,000 < 25,000 — Pass
  • Result: Approved

Transaction 2 (same day): Customer sends a 15,000 EUR SEPA Instant payment.

  • Global transaction limit (50,000): 15,000 < 50,000 — Pass
  • Partner daily limit (20,000): 13,000 + 15,000 = 28,000 > 20,000 — Fail
  • Result: Rejected. Daily limit exceeded at partner level.

Create a limit​

To create a payment limit, send the POST /governance/v1/limits request with a similar payload:

tip

The zoneOffset field is only relevant for DAILY limits. It determines the start and end of a calendar day. If omitted, it defaults to +00:00 (UTC).

On success, you receive a 201 response with the limit identifier:

{
"id": "fa2f29ca-fa0e-421b-86b6-4eb415d2933c",
"createdAt": "2026-07-03T12:20:53.276599438Z",
"updatedAt": "2026-07-03T12:20:53.330993Z"
}

The new limit appears in the list and takes effect immediately.


Update a limit​

You can change a limit's amount or type (transaction or daily) at any time. Updates take effect immediately.

Send the PUT /governance/v1/limits/{limitId} request with the fields you want to change. Use the id of the limit rule that you received in the response when creating a limit.

On success, you receive a 200 response with the limit identifier and update date.


Delete a limit​

Send the DELETE /governance/v1/limits/{limitId} request. Use the id of the limit rule that you received in the response when creating a limit.

On success, you receive a 204 No Content response, and the limit is removed immediately.


Manage customer limits​

As a partner, you can set limits for individual customers under your account. These limits apply only to the selected customer's payouts.

Use the same POST /governance/v1/limits endpoint with level set to CUSTOMER and the target customer's ID (customerId):

{
"level": "CUSTOMER",
"customerId": "b7c3e1a2-8f4d-4a6e-9c12-3d5f7a8b9e01",
"method": "SEPA",
"limitType": "DAILY",
"amount": "25000",
"currency": "EUR",
"zoneOffset": "+01:00"
}

To update or delete a customer's limit, use the same PUT and DELETE endpoints described above with the customer's limit ID.

note

Customers can also create limits for themselves via the API. They cannot modify or delete limits you have set for them.


Show all limits​

Send the GET /governance/v1/limits request. You can use optional query parameters to filter by currency, payment method, or limit type.

You can also retrieve a single limit by ID using GET /governance/v1/limits/{limitId}.

The owner field indicates who created the limit:

  • ACCOUNT: Created by the partner.
  • BVNK. Created by BVNK operations.

Error handling​

When a payment is blocked by a limit, the API returns an error response:

{
"code": "BVNK-3001",
"status": "400",
"message": "Limit exceeded. We cannot satisfy this 200 EUR payment as the transaction you are trying to trigger is violating configured limits."
}

Review the account's configured limits and either increase the limit or reduce the payment amount.

Was this page helpful?