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

# Change a Destination Address

> Sets a new destination address for a collect wallet. Every forward created from now on is sent to the new
address; forwards already created keep the address they were created with.

- **Same blockchain.** The address must be valid on the blockchain of the wallet. It cannot be the address of
  the wallet itself, nor the address of a KemyCard collect wallet.
- **You are notified.** Each change sends the `wallet.destination_updated` webhook (previous and new address)
  and an email to the email address of your account.
- **Protected like every call.** It requires your API key and a call from one of your
  [allowed IP addresses](/getting-started/api-keys#allowed-ip-addresses).

Collect wallets only: a standard wallet has no destination address (`422`).


> [!WARNING]
>
> **This call changes where the funds of a collect wallet go.** It is made with your API key, and API calls are only accepted from your [allowed IP addresses](https://docs.kemycard.com/getting-started/api-keys.md#allowed-ip-addresses), which are required. Every change is notified by the `wallet.destination_updated` webhook and by email.

> [!NOTE]
>
> A blockchain transfer cannot be cancelled or reversed. Check that `destination_address` is an address on the blockchain of the wallet before you call.


## OpenAPI

````yaml PATCH /wallets/{code}/destination
openapi: 3.1.0
info:
  title: KemyCard API
  version: '1.0'
  description: >
    KemyCard API allows you to issue virtual and physical cards, manage KYC/POA
    verification,

    create crypto wallets, virtual bank accounts, purchase gift cards and send
    payouts to bank accounts (SEPA Instant

    in EUR, ACH in USD to the United States).


    Access depends on your plan (see [Plans and
    Pricing](/getting-started/plans)). The free Découverte plan gives

    access to virtual cards with the KYC and POA endpoints and to payouts (SEPA
    and ACH), within monthly limits (25 cards

    created and 5,000 USD loaded on cards per calendar month, 5,000 USD of
    payouts per calendar month), 30 requests

    per minute per API key, 2 allowed IP addresses and 1 active webhook
    endpoint. Starter, Business and Premium give access to every product with no
    monthly limit,

    100 requests per minute per API key, 10 allowed IP addresses and 10 active
    webhook endpoints.


    Plan errors: `402 PLAN_UPGRADE_REQUIRED` (product not included in your
    plan), `403 PLAN_LIMIT_REACHED`

    (limit of your plan reached). While one of your ops balances is negative,
    every request other than `GET`

    returns `403 ACCOUNT_SUSPENDED_NEGATIVE_BALANCE`.
  contact:
    name: KemyCard API Support
    email: hi@kemycard.com
servers:
  - url: https://api.kemycard.com/v1
    description: Development (tests internes)
  - url: https://api.kemycard.com/v1
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Customers
    description: Manage your customers
  - name: Card Products
    description: Browse the card product catalog
  - name: Cards
    description: Issue and manage cards
  - name: KYC
    description: Identity verification
  - name: POA
    description: Proof of address verification
  - name: Wallets
    description: Crypto wallets
  - name: Virtual Accounts
    description: >
      Virtual bank accounts in EUR, USD, BRL and MXN for your individual
      customers. Deposits are converted to USDC

      and sent, net of the KemyCard fee, to a USDC wallet on Solana of the
      customer or to an external Solana address
  - name: Gift Cards
    description: Gift card catalog and purchases
  - name: Payouts
    description: >
      Payouts to bank accounts: SEPA Instant in EUR (paid from your Payout SEPA
      balance) and ACH in USD to bank

      accounts in the United States (paid from your Ops Others balance)
  - name: Balance
    description: Operational balances and transaction history
  - name: Webhooks
    description: Webhook endpoints and delivery management
paths:
  /wallets/{code}/destination:
    patch:
      tags:
        - Wallets
      summary: Change the destination address of a collect wallet
      description: >
        Sets a new destination address for a collect wallet. Every forward
        created from now on is sent to the new

        address; forwards already created keep the address they were created
        with.


        - **Same blockchain.** The address must be valid on the blockchain of
        the wallet. It cannot be the address of
          the wallet itself, nor the address of a KemyCard collect wallet.
        - **You are notified.** Each change sends the
        `wallet.destination_updated` webhook (previous and new address)
          and an email to the email address of your account.
        - **Protected like every call.** It requires your API key and a call
        from one of your
          [allowed IP addresses](/getting-started/api-keys#allowed-ip-addresses).

        Collect wallets only: a standard wallet has no destination address
        (`422`).
      operationId: updateWalletDestination
      parameters:
        - name: code
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Code of the collect wallet
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - destination_address
              properties:
                destination_address:
                  type: string
                  description: New destination address, on the blockchain of the wallet
                  example: YOUR_NEW_SOLANA_ADDRESS
      responses:
        '200':
          description: >-
            Destination address changed. The wallet is returned with the
            previous address.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    allOf:
                      - $ref: '#/components/schemas/Wallet'
                      - type: object
                        properties:
                          previous_destination_address:
                            type: string
                            nullable: true
                            description: The destination address before the change
                            example: YOUR_SOLANA_ADDRESS
                  meta:
                    $ref: '#/components/schemas/Meta'
        '403':
          $ref: '#/components/responses/AccountSuspended'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    Wallet:
      type: object
      properties:
        code:
          type: string
          format: uuid
          description: Wallet code
        type:
          type: string
          enum:
            - standard
            - collect
          description: >-
            `standard`: balance withdrawn through the API. `collect`: balance
            forwarded automatically to `destination_address`.
          example: standard
        customer_code:
          type: string
          format: uuid
          description: Code of the customer who owns the wallet
        reference:
          type: string
          nullable: true
          description: >-
            Your label for this address. `null` for the permanent wallet of the
            customer.
          example: order-1001
        blockchain:
          type: string
          enum:
            - solana
            - base
            - ethereum
            - tron
          example: solana
        currency:
          type: string
          enum:
            - USDC
            - USDT
          example: USDC
        address:
          type: string
          description: >-
            Deposit address of the wallet on this blockchain. Only send the
            wallet currency on this blockchain to it.
          example: CUSTOMER_DEPOSIT_ADDRESS
        balance:
          type: number
          description: >
            Balance of the wallet, in USD. Standard wallet: the deposits
            received, net of the deposit fee, minus the

            withdrawals; withdraw it with [`POST
            /wallets/{code}/withdrawals`](/api-reference/wallets/withdraw).

            Collect wallet: the amount received and not forwarded yet (below the
            $3 threshold).
          example: 98.5
        destination_address:
          type: string
          nullable: true
          description: >-
            Collect wallet only (`null` for a standard wallet). The address that
            receives the forwards.
          example: null
        forward_threshold:
          type: number
          nullable: true
          description: >-
            Collect wallet only (`null` for a standard wallet). The balance, in
            USD, at which the whole balance is forwarded.
          example: null
        status:
          type: string
          enum:
            - active
            - inactive
          example: active
        created_at:
          type: string
          format: date-time
    Meta:
      type: object
      properties:
        request_id:
          type: string
          example: a4f8e2c1b3d97056
        mode:
          type: string
          enum:
            - test
            - live
          example: test
        timestamp:
          type: string
          format: date-time
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              description: >
                Error code, for example `AUTHENTICATION_REQUIRED`,
                `AUTHENTICATION_FAILED`, `ACCOUNT_RESTRICTED`,

                `IP_NOT_ALLOWED`, `PLAN_UPGRADE_REQUIRED`, `PLAN_LIMIT_REACHED`,
                `ACCOUNT_SUSPENDED_NEGATIVE_BALANCE`,

                `INSUFFICIENT_BALANCE`, `OPERATION_FAILED`, `FORBIDDEN`,
                `RESOURCE_NOT_FOUND`, `VALIDATION_ERROR`,

                `COUNTRY_NOT_SUPPORTED`, `RATE_LIMIT_EXCEEDED`,
                `INTERNAL_ERROR`, `wrong_api_host`. See [Error
                Handling](/guides/error-handling).
              example: VALIDATION_ERROR
            message:
              type: string
              example: Missing required fields.
            details:
              type: object
              nullable: true
        meta:
          $ref: '#/components/schemas/Meta'
  responses:
    AccountSuspended:
      description: >-
        One of your ops balances is negative; every request other than `GET` is
        refused until it is topped up
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: ACCOUNT_SUSPENDED_NEGATIVE_BALANCE
              message: >-
                Your account is suspended because one of your ops balances is
                negative. Top up the negative balance to restore access.
                Read-only requests (GET) remain available.
              details:
                negative_balance_since: '2026-10-15T08:00:00+00:00'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: RESOURCE_NOT_FOUND
              message: Resource not found.
              details: null
    ValidationError:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key (sk_test_... or sk_live_...)

````

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