User Authorization Control Monitoring

Apply Authorization Controls

The POST /api/authorizationControls endpoint allows partners to apply authorization control rules to one or more payment cards. Rules can restrict per-transaction amounts, monthly spending limits, daily ATM withdrawal limits, allowed or blocked merchant categories, and allowed or blocked merchant countries. Each rule is applied independently and the response reports per-card success or failure.

Endpoint

POST /api/authorizationControls

Authentication

Bearer token required. Obtain via:

POST https://api.banking.netevia.dev/api/auth/v2

Include in header: Authorization: Bearer {token}
Token lifetime: 10 minutes. Refresh via POST /api/auth/refresh.

When to use

Use this endpoint when you need to enforce spending controls on a cardholder's payment cards — for example, blocking gambling merchants for a corporate card program, capping daily ATM withdrawals for a prepaid card, or restricting international transactions to specific countries. You can apply multiple rule types in a single call and target multiple cards simultaneously, making it suitable for bulk policy updates across an account or subprofile.

Request Body

FieldTypeRequiredDescription
paymentCardIdsarray of stringNoList of payment card IDs to apply the rules to.
rulesarray of rule objectsNoOne or more authorization control rule objects. Each rule must include a type field identifying the rule type. See rule object definitions below.

Base rule fields (all rule types)

FieldTypeRequiredDescription
typestring (enum)YesRule type. One of: TransactionAmount, MonthlyAmount, DailyAtmWithdrawal, MerchantCategory, MerchantCountry.
idstringNoOptional identifier for the rule.

TransactionAmount rule — maximum single-transaction spending limit

FieldTypeRequiredDescription
typestringYesMust be "TransactionAmount".
amountinteger (int64)YesMaximum allowed transaction amount in cents (e.g., 5000 = $50.00).

MonthlyAmount rule — maximum monthly spend limit

FieldTypeRequiredDescription
typestringYesMust be "MonthlyAmount".
amountinteger (int64)YesMaximum allowed monthly spend in cents.

DailyAtmWithdrawal rule — maximum daily ATM withdrawal limit

FieldTypeRequiredDescription
typestringYesMust be "DailyAtmWithdrawal".
amountinteger (int64)YesMaximum allowed daily ATM withdrawal in cents.
merchantCategoryRuleobjectNoOptional nested merchant category rule applied alongside the ATM limit.

MerchantCategory rule — allow or block specific merchant category codes

FieldTypeRequiredDescription
typestringYesMust be "MerchantCategory".
allowedarray of stringNoList of merchant category codes that are permitted.
blockedarray of stringNoList of merchant category codes that are blocked.

MerchantCountry rule — allow or block transactions by merchant country

FieldTypeRequiredDescription
typestringYesMust be "MerchantCountry".
allowedarray of stringNoList of ISO 3166 alpha-3 country codes that are permitted (e.g., "USA", "CAN").
blockedarray of stringNoList of ISO 3166 alpha-3 country codes that are blocked.
{
  "paymentCardIds": [
    "card_abc123",
    "card_def456"
  ],
  "rules": [
    {
      "type": "TransactionAmount",
      "amount": 50000
    },
    {
      "type": "MonthlyAmount",
      "amount": 500000
    },
    {
      "type": "DailyAtmWithdrawal",
      "amount": 30000
    },
    {
      "type": "MerchantCategory",
      "blocked": [
        "BETTING_CASINO_GAMBLING",
        "GOVERNMENT_LICENSED_ON_LINE_CASINO",
        "PACKAGE_STORES_BEER_WINE_AND_LIQUOR"
      ]
    },
    {
      "type": "MerchantCountry",
      "allowed": [
        "USA",
        "CAN",
        "GBR"
      ]
    }
  ]
}

Response

200 OK

Returns an array of result objects, one per payment card ID submitted.

FieldTypeDescription
paymentCardIdstringThe payment card ID the result corresponds to.
successbooleantrue if all rules were successfully applied to this card; false if any rule failed.
errorsstringError detail message if success is false; null otherwise.
[
  {
    "paymentCardId": "card_abc123",
    "success": true,
    "errors": null
  },
  {
    "paymentCardId": "card_def456",
    "success": false,
    "errors": "Card not found or not eligible for authorization controls."
  }
]

Error Codes

CodeWhen it happens
400Missing required fields, invalid rule type value, or malformed rule object
401Token missing, expired, or invalid
403Insufficient permissions to apply controls to the specified cards
404One or more paymentCardIds not found
500Internal server error

Common Mistakes

  • Omitting the type field from a rule object — every rule must include "type" to identify which rule schema applies.
  • Providing amount values in dollars instead of cents — all monetary amounts are in the smallest currency unit (cents). $50.00 must be submitted as 50000.
  • Setting both allowed and blocked on the same MerchantCategory or MerchantCountry rule — use one or the other, not both, to avoid ambiguous behavior.
  • Using ISO 3166 alpha-2 country codes (e.g., "US") instead of the required alpha-3 codes (e.g., "USA") in MerchantCountry rules.
  • Submitting a stale Bearer token — tokens expire after 10 minutes. Refresh before making calls in long-running processes.

Related Endpoints

  • POST /api/auth/v2 — Obtain a Bearer token
  • POST /api/auth/refresh — Refresh an existing Bearer token
  • GET /api/paymentCards — Retrieve payment card IDs for a customer
  • POST /api/cards — Create a new payment card (physical, virtual, or burner)

Example

curl -X POST https://api.banking.netevia.dev/api/authorizationControls \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "paymentCardIds": [
      "card_abc123"
    ],
    "rules": [
      {
        "type": "TransactionAmount",
        "amount": 50000
      },
      {
        "type": "MerchantCategory",
        "blocked": [
          "BETTING_CASINO_GAMBLING",
          "GOVERNMENT_LICENSED_ON_LINE_CASINO"
        ]
      },
      {
        "type": "MerchantCountry",
        "allowed": [
          "USA",
          "CAN"
        ]
      }
    ]
  }'
Body Params
paymentCardIds
array of strings | null
paymentCardIds
rules
array | null
rules
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Response

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
text/plain
application/json
text/json