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

# Spending Limits Reference

## Overview

Spending Limits allow designated members to spend tokens up to a specified amount without creating a proposal transaction. Useful for operational expenses, recurring payments, and delegated spending authority.

<img src="https://mintcdn.com/multisig/uKaz8ThLiWGC6N2n/images/spending-limits-solana-account-abstraction-squads-transaction-guards-aa-multisig-solana.png?fit=max&auto=format&n=uKaz8ThLiWGC6N2n&q=85&s=b8692c93ce96a3ce4d0e1e0a40dabd20" alt="Spending Limits Overview" width="4000" height="2104" data-path="images/spending-limits-solana-account-abstraction-squads-transaction-guards-aa-multisig-solana.png" />

## How Spending Limits Work

* Members with spending limits can transfer tokens up to the limit amount
* Limits reset based on the configured period (daily, weekly, monthly), or never for a one-time limit
* No proposal or voting required for transactions within the limit
* Limits are specific to a token mint and vault

## Creating Spending Limits

Use Config Transactions to create and remove Spending Limits.

```typescript theme={null}
import * as multisig from "@sqds/multisig";

const ix = await multisig.instructions.configTransactionCreate({
  multisigPda,
  transactionIndex: newTransactionIndex,
  creator: member,
  actions: [{
    __kind: "AddSpendingLimit",
    createKey: spendingLimitCreateKey,
    vaultIndex: 0,
    mint: tokenMint,
    amount: 1_000_000_000, // Respects token decimals
    period: multisig.generated.Period.Day,
    members: [authorizedMember.publicKey],
    destinations: [], // Empty = any destination
  }],
});
```

## Parameters

| Parameter | Type | Description |
| - | - | - |
| `createKey` | `PublicKey` | Key to seed the SpendingLimit PDA |
| `vaultIndex` | `number` | Index of the vault |
| `mint` | `PublicKey` | Token mint for the spending limit |
| `amount` | `number \| BN` | Amount per period (respects decimals) |
| `period` | `Period` | Reset period (OneTime, Day, Week, Month) |
| `members` | `PublicKey[]` | Members who can use the limit |
| `destinations` | `PublicKey[]` | Allowed destinations (empty = any) |

## Period Options

| Period | Reset Frequency |
| - | - |
| `Period.OneTime` | Never. The amount does not reset; once it is fully spent the limit cannot be used again |
| `Period.Day` | Every 24 hours |
| `Period.Week` | Every 7 days |
| `Period.Month` | Every 30 days |

## Amount Decimals

The amount respects the token's decimals:

| Token | Decimals | 1 Token = |
| - | - | - |
| SOL | 9 | 1\_000\_000\_000 |
| USDC | 6 | 1\_000\_000 |
| Custom | Varies | Check mint |

**Example**: To set a 100 USDC daily limit:

```typescript theme={null}
amount: 100 * 1_000_000 // 100_000_000
```

## Removing Spending Limits

```typescript theme={null}
const ix = await multisig.instructions.configTransactionCreate({
  multisigPda,
  transactionIndex: newTransactionIndex,
  creator: member,
  actions: [{
    __kind: "RemoveSpendingLimit",
    spendingLimit: spendingLimitPda,
  }],
});
```

## Member Removal Note

Spending limit members are tracked separately from multisig members. If a member is removed from the multisig, spending limits that include that member will remain and the removed member can still use them. Delete and recreate the spending limit to update the member list.

## See Also

* [Create Config Transaction](/developers/typescript-sdk/instructions/create-config-transaction)
* [Add Spending Limit (Controlled)](/developers/typescript-sdk/instructions/controlled-multisig/add-spending-limit)
* [Remove Spending Limit (Controlled)](/developers/typescript-sdk/instructions/controlled-multisig/remove-spending-limit)


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