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

# Master Wallet Copy Rules

> This endpoint copies a set of auto-settlement rules onto one or more other master wallets in a single call. Use it to roll one settlement strategy out across every chain you operate on without recreating each rule by hand.

The rules are sent **by value**, not by ID, so the source can be any rule list you already hold — a master wallet's rules, a child address's rules, or a payload you composed yourself. Each rule is re-validated against the target wallet before it is written, and `source.blockchain` is rewritten to the target wallet's own blockchain.

Copying is **per-wallet atomic**: each target wallet is locked and updated in its own transaction, so a failure on one target never leaves another half-written. The call still returns `200` when some targets fail or some rules are skipped — always read `summary` and the per-wallet `results` rather than relying on the status code.

Applying at least one rule to a target also switches auto-settlement **on** for that wallet.

## Request Body Parameters

| Parameter | Type | Required | Description |
|---|---|---|---|
| rules | array of objects | Yes | The settlement rules to copy, in the same shape as the create-rule body. Must not be empty. Each entry is fully validated, so a malformed rule fails the whole request with `400`. |
| targetWalletIds | array of strings | Yes | IDs of the master wallets to copy the rules into. Must not be empty. The source wallet is silently removed from this list; if nothing remains, the request fails with `400`. |

## Why a rule gets skipped

A rule is reported under `skipped` (rather than failing the request) when:

- a source asset is not enabled on the target wallet
- the target wallet already has a rule covering one of the source assets on that blockchain
- the rule fails validation for that specific target, for example a gateway destination that the target's chain does not support




## OpenAPI

````yaml post /v1/wallets/{walletId}/auto-settlements/rules/copy
openapi: 3.0.3
info:
  title: Blockradar Documentation
  description: >-
    The OpenAPI specification of the Blockradar API that enables fintechs and
    developers to seamlessly integrate stablecoin deposits and payments into
    their products.
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.blockradar.co
security:
  - apiKey: []
tags:
  - name: Rewards
    description: >-
      Non-custodial yield (Earn) on stablecoins via regulated (Fija) and DeFi
      (Aave) strategies. Deposit, withdraw, preview fees, and read positions and
      earnings at the business, wallet, and sub-address level. Amounts are
      returned net of the platform fee, which applies only to interest earned.
  - name: Wallet
    description: >-
      Wallet Management System


      Comprehensive wallet management API for multi-blockchain operations. This
      system handles wallet creation, configuration, balance monitoring, and
      integration with various blockchain networks.


      Core Functionality:


      - Multi-blockchain wallet creation and management

      - Balance monitoring and asset tracking

      - Auto-settlement rule configuration

      - Gateway wallet integration

      - Address generation and management

      - Transaction monitoring and processing
  - name: Addresses
    description: >-
      Address Management System


      Comprehensive blockchain address management API for operations. This
      system handles address creation, validation, monitoring, and management
      across multiple blockchain networks.


      Core Functionality:


      - Multi-blockchain address generation

      - Address validation and verification

      - Balance monitoring and tracking

      - Transaction history management

      - Address labeling and organization

      - Integration with wallet systems

      - Real-time address monitoring
  - name: Asset
  - name: Transactions
  - name: Withdraw
    description: >-
      The Withdraw feature allows you to programmatically withdraw stablecoins
      from your master wallet with ease
  - name: Withdraw Fiat
  - name: Signing
    description: >-
      Signing service for plain text messages, raw transactions, and EIP-712
      typed data. Message signing, transaction signing, and sign-and-broadcast
      are available on EVM, Tron, Solana, and Stellar. Typed data signing
      (EIP-712, including EIP-2612 Permit and EIP-3009
      TransferWithAuthorization) is EVM-only.
  - name: Swap
    description: >-
      The Swap feature enables users to exchange one stabelcoin asset for
      another across different blockchains. This feature provides a seamless way
      to convert between different stablecoins while maintaining security and
      compliance standards.
  - name: Liquidity Pool
  - name: Virtual Accounts
    description: >-
      Virtual Accounts API provides endpoints for managing virtual bank accounts
      linked to master wallets or child addresses. This API enables businesses
      to:


      - Create virtual accounts for customers to receive payments

      - Retrieve virtual account details

      - Activate/deactivate virtual accounts


      **Virtual Account Types:**


      Virtual accounts support different types with varying behaviors:


      1. **AUTO_FUNDING** (Default):

          - Automatically mints stablecoin when fiat payments are received

          - Transfers the stablecoin to the linked wallet/address immediately

          - Best for real-time payment processing


      **How It Works - Auto-Funding Flow (AUTO_FUNDING type only):**


      When a customer sends fiat currency to a virtual account with type
      AUTO_FUNDING:


      1. **Payment Receipt**: The payment is received in the virtual account

      2. **Automatic Minting**: The system automatically mints the stablecoin
      equivalent

      3. **Blockchain Transfer**: The minted stablecoin is transferred to the
      virtual account's linked wallet or address


      **Note**: The auto-funding flow only applies to virtual accounts with type
      `AUTO_FUNDING`.

      Other types have different processing behaviors.


      ## Prerequisites


      Before creating virtual accounts, ensure:


      - **Compliance requirements must be completed** (see [Compliance
      Requirements](http://localhost:3000/essentials/virtual-accounts#compliance-requirements)
      section below)

      - **Virtual accounts feature must be enabled** for your business (reach
      out to [support@blockradar.co](https://mailto:support@blockradar.co) or
      use live chat on the dashboard to enable the feature after compliance
      approval)

      - **Only available on MAINNET environment** (not available on testnet)

      - **Master Wallet must support stablecoin asset** - Your account plan must
      include stablecoin access (upgrade from Dashboard → Settings →
      Subscription if needed)


      **Supported Currency:**


      - Fiat: NGN (Nigerian Naira)

      - Stablecoin: cNGN - minted automatically on blockchain (for AUTO_FUNDING
      type)
  - name: Auto Settlements
    description: >-
      Creates a new auto settlement rule for a wallet. Auto settlement
      automatically transfers/swap assets based on configured rules when certain
      conditions are met.


      Rules can be configured for:


      - Source blockchain and assets

      - Destination blockchain and asset

      - Amount ranges (min/max)

      - Slippage tolerance

      - Gateway vs non-gateway wallets


      Gateway rules are required for testnet wallets and must have matching
      source/destination assets.
  - name: Smart Contract
    description: >-
      This API provides endpoints for interacting with smart contracts on the
      blockchain. It allows for reading contract data, executing contract
      functions, and estimating network fees.
  - name: Gateway
    description: >-
      The Gateway feature enables you to programmatically deposit USDC into a
      unified, chain-abstracted balance and instantly mint USDC on any supported
      blockchain, streamlining crosschain transfers and eliminating manual
      bridging steps and rebalancing complexities.
  - name: Payment Links
    description: >-
      The Payment Pages API provides a quick and secure way to collect payment
      for servcies.
  - name: Beneficiaries
    description: >-
      This API allows you to create beneficiaries with automatic settlements to
      your external wallets on a periodic basis.


      Example frequencies: INSTANT, DAILY, WEEKLY, MONTHLY, YEARLY
  - name: AML
    description: >-
      The AML (Anti Money Laundering) API provides a quick way for you to check
      if an address is blacklisted or sanctioned
  - name: Asset Recovery
    description: >-
      Enables the recovery (salvage) of both native blockchain assets and tokens
      from a specified sender address to a recipient address. This feature
      supports emergency fund recovery and asset consolidation operations.
  - name: Miscellaneous
    description: >-
      The Miscellaneous API are supporting APIs that can be used to provide more
      details to other APIs.
  - name: Asset1
  - name: Blockchain
  - name: Webhooks
    description: >-
      Webhooks allow you to set up a notification system that can be used to
      receive updates on certain requests made to the Blockradar API.

      To see full list and instructions
      [https://docs.blockradar.co/essentials/webhooks](https://docs.blockradar.co/essentials/webhooks)


      ##
  - name: Deposit
  - name: Withdraw1
  - name: Swap1
  - name: Gateway1
paths:
  /v1/wallets/{walletId}/auto-settlements/rules/copy:
    parameters:
      - name: walletId
        in: path
        required: true
        schema:
          type: string
          example: '{{walletId}}'
    post:
      tags:
        - Auto Settlements
      summary: Master Wallet Copy Rules
      description: >
        This endpoint copies a set of auto-settlement rules onto one or more
        other master wallets in a single call. Use it to roll one settlement
        strategy out across every chain you operate on without recreating each
        rule by hand.


        The rules are sent **by value**, not by ID, so the source can be any
        rule list you already hold — a master wallet's rules, a child address's
        rules, or a payload you composed yourself. Each rule is re-validated
        against the target wallet before it is written, and `source.blockchain`
        is rewritten to the target wallet's own blockchain.


        Copying is **per-wallet atomic**: each target wallet is locked and
        updated in its own transaction, so a failure on one target never leaves
        another half-written. The call still returns `200` when some targets
        fail or some rules are skipped — always read `summary` and the
        per-wallet `results` rather than relying on the status code.


        Applying at least one rule to a target also switches auto-settlement
        **on** for that wallet.


        ## Request Body Parameters


        | Parameter | Type | Required | Description |

        |---|---|---|---|

        | rules | array of objects | Yes | The settlement rules to copy, in the
        same shape as the create-rule body. Must not be empty. Each entry is
        fully validated, so a malformed rule fails the whole request with `400`.
        |

        | targetWalletIds | array of strings | Yes | IDs of the master wallets
        to copy the rules into. Must not be empty. The source wallet is silently
        removed from this list; if nothing remains, the request fails with
        `400`. |


        ## Why a rule gets skipped


        A rule is reported under `skipped` (rather than failing the request)
        when:


        - a source asset is not enabled on the target wallet

        - the target wallet already has a rule covering one of the source assets
        on that blockchain

        - the rule fails validation for that specific target, for example a
        gateway destination that the target's chain does not support
      operationId: masterWalletCopyRules
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - rules
                - targetWalletIds
              properties:
                rules:
                  type: array
                  description: Settlement rules to copy, in the create-rule body shape.
                  items:
                    type: object
                targetWalletIds:
                  type: array
                  description: IDs of the master wallets to copy the rules into.
                  items:
                    type: string
            examples:
              Master Wallet Copy Rules:
                value:
                  rules:
                    - type: withdraw
                      name: Sweep USDC to treasury
                      isActive: true
                      slippageTolerance: '0'
                      source:
                        assets:
                          - USDC
                        minAmount: '1'
                        maxAmount: '-1'
                      destination:
                        blockchain: base
                        asset: USDC
                        address: '0x2455eC6700092991Ce0782365A89d5Cd89c8Fa22'
                  targetWalletIds:
                    - 3f6c9a11-9a7e-4a3c-8f2b-0d51e6c4a7b2
                    - c81e7d40-5b6a-4f9e-9c3d-2a7f10b8e654
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      summary:
                        type: object
                        properties:
                          walletsTargeted:
                            type: number
                            example: 2
                          rulesRequested:
                            type: number
                            example: 1
                          applied:
                            type: number
                            example: 1
                          skipped:
                            type: number
                            example: 1
                          failed:
                            type: number
                            description: >-
                              Number of target wallets that could not be written
                              at all.
                            example: 0
                      results:
                        type: array
                        description: >-
                          One entry per target wallet, including targets that
                          could not be found.
                        items:
                          type: object
                          properties:
                            walletId:
                              type: string
                              example: 3f6c9a11-9a7e-4a3c-8f2b-0d51e6c4a7b2
                            walletName:
                              type: string
                              example: Base Mainnet Wallet
                            chain:
                              type: string
                              example: base
                            applied:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    example: Sweep USDC to treasury
                            skipped:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    example: Sweep USDC to treasury
                                  reason:
                                    type: string
                                    example: >-
                                      A settlement rule for USDC already exists
                                      on the optimism wallet
                            failed:
                              type: string
                              description: >-
                                Present only when the whole wallet could not be
                                written.
                              example: Wallet not found or inactive on this network
                  message:
                    type: string
                    example: Settlement rules copied
                  statusCode:
                    type: number
                    example: 200
              examples:
                '200':
                  value:
                    data:
                      summary:
                        walletsTargeted: 2
                        rulesRequested: 1
                        applied: 1
                        skipped: 1
                        failed: 0
                      results:
                        - walletId: 3f6c9a11-9a7e-4a3c-8f2b-0d51e6c4a7b2
                          walletName: Base Mainnet Wallet
                          chain: base
                          applied:
                            - name: Sweep USDC to treasury
                          skipped: []
                        - walletId: c81e7d40-5b6a-4f9e-9c3d-2a7f10b8e654
                          walletName: Optimism Mainnet Wallet
                          chain: optimism
                          applied: []
                          skipped:
                            - name: Sweep USDC to treasury
                              reason: >-
                                A settlement rule for USDC already exists on the
                                optimism wallet
                    message: Settlement rules copied
                    statusCode: 200
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: No valid target wallets provided
                  statusCode:
                    type: number
                    example: 400
              examples:
                '400':
                  value:
                    message: No valid target wallets provided
                    statusCode: 400
components:
  securitySchemes:
    apiKey:
      type: apiKey
      name: x-api-key
      in: header

````