> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gnosispay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Set an account spending limit

> Sets the daily card-spending limit shared by all cards on the account.

`currency` must match the account native currency, and `amount` is in
minor units of that currency. Amounts above the maximum configured for the
partner are rejected. A successful request may return `sync_status: pending`;
use `GET /accounts/{account_id}/limit` until it becomes `synced` or `failed`.

Once synced, this is a cumulative spending limit, not a per-transaction
cap. An authorization that causes the cumulative spend for today to meet or
exceed the limit can be approved; subsequent eligible authorizations are
declined.



## OpenAPI

````yaml https://core.sandbox.gnosispay.in/partner-api/openapi.json put /v1/accounts/{account_id}/limit
openapi: 3.1.0
info:
  title: Gnosis Pay Partner API
  version: 1.0.0
  description: >-
    Server-to-server API for onboarding users, creating accounts and cards,
    moving

    funds, and managing the card lifecycle. Call this API only from a trusted

    backend. Every request requires a partner access token, and every resource
    is

    scoped to the authenticated partner.
servers:
  - url: https://core.prod.gnosispay.com/partner-api
    description: Production
    variables: {}
  - url: https://core.sandbox.gnosispay.in/core
    description: Sandbox
    variables: {}
security:
  - BearerAuth: []
tags:
  - name: Accounts
  - name: Cards
  - name: Card transactions
  - name: KYC
  - name: Deposits
  - name: Withdrawals
  - name: PCI
  - name: 3DS
  - name: Webhooks
paths:
  /v1/accounts/{account_id}/limit:
    put:
      tags:
        - Accounts
      summary: Set an account spending limit
      description: >-
        Sets the daily card-spending limit shared by all cards on the account.


        `currency` must match the account native currency, and `amount` is in

        minor units of that currency. Amounts above the maximum configured for
        the

        partner are rejected. A successful request may return `sync_status:
        pending`;

        use `GET /accounts/{account_id}/limit` until it becomes `synced` or
        `failed`.


        Once synced, this is a cumulative spending limit, not a per-transaction

        cap. An authorization that causes the cumulative spend for today to meet
        or

        exceed the limit can be approved; subsequent eligible authorizations are

        declined.
      operationId: accounts.set_limit.v1
      parameters:
        - name: account_id
          in: path
          required: true
          description: The account ID.
          schema:
            $ref: '#/components/schemas/uuid'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetAccountLimitParams'
            examples:
              Set a 500.00 EUR daily limit:
                summary: Set a 500.00 EUR daily limit
                description: >-
                  Limit of 500.00 EUR with 125.50 EUR already spent today,
                  leaving 374.50 EUR. The limit stays `pending` until it is
                  applied.
                value:
                  amount: 50000
                  currency: EUR
        description: New daily account spending limit.
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountLimitResponse'
              examples:
                Set a 500.00 EUR daily limit:
                  summary: Set a 500.00 EUR daily limit
                  description: >-
                    Limit of 500.00 EUR with 125.50 EUR already spent today,
                    leaving 374.50 EUR. The limit stays `pending` until it is
                    applied.
                  value:
                    amount: 50000
                    currency: EUR
                    decimals: 2
                    sync_status: pending
                    spent_today: 12550
                    remaining: 37450
                    updated_at: '2025-06-15T14:30:00Z'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    uuid:
      type: string
      format: uuid
    SetAccountLimitParams:
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          type: integer
          format: int64
          minimum: 1
          description: |-
            Daily spending limit in minor units of `currency`.
            USD, EUR, and GBP use 2 decimal places, so 1000000 is 10,000.00.
          examples:
            - 1000000
        currency:
          type: string
          description: ISO-4217 currency code. Must match the account native currency.
          examples:
            - EUR
      examples:
        - amount: 1000000
          currency: EUR
    AccountLimitResponse:
      type: object
      required:
        - amount
        - currency
        - decimals
        - sync_status
        - updated_at
        - spent_today
        - remaining
      properties:
        amount:
          type: integer
          format: int64
          description: Configured daily limit in the currency's smallest unit.
        currency:
          type: string
          description: ISO-4217 currency code.
        decimals:
          type: integer
          format: int32
          description: >-
            Number of decimal places for this currency (2 for USD, EUR, and
            GBP).
        sync_status:
          type: string
          enum:
            - pending
            - synced
            - failed
          description: >-
            Application status of the limit. `pending` means the update is still
            being

            applied, `synced` means it is active, and `failed` means it could
            not be

            applied.
        updated_at:
          type: string
          format: date-time
          description: Last time this limit was modified.
        spent_today:
          type: integer
          format: int64
          description: >-
            Eligible card spending counted against this limit since 00:00 UTC,
            summed

            across all cards on the account and expressed in the currency's
            smallest

            unit.
        remaining:
          type: integer
          format: int64
          description: >-
            Remaining headroom for today, in the currency's smallest unit. Equal
            to

            `max(0, amount - spent_today)`.
      examples:
        - amount: 50000
          currency: EUR
          decimals: 2
          sync_status: synced
          updated_at: '2025-06-15T14:30:00Z'
          spent_today: 12550
          remaining: 37450
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
          description: HTTP status code.
        message:
          type: string
          description: Generic human-readable text for the status code. Do not parse it.
        reason:
          type: string
          description: >-
            Stable machine-readable code identifying the specific cause, present
            only

            for errors that expose one (e.g. `CREATE_CARD_LIMIT_EXCEEDED`).
            Branch on

            this rather than on `message`.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: Bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.