> ## 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.

# Create a withdrawal

> Creates an instant on-chain withdrawal from an account to its owner address.

The account must be fully provisioned, the token must be supported on the
account's chain, and no other instant withdrawal may be in progress for the
account. Call `GET /accounts/{account_id}/balances` first and do not exceed the
token's `max_instant_withdraw` value.

Persist the returned `withdrawal_id`. Processing is asynchronous; use a
webhook or `GET /withdrawals/{withdrawal_id}` to observe the final status.



## OpenAPI

````yaml https://core.sandbox.gnosispay.in/partner-api/openapi.json post /v1/withdrawals
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/withdrawals:
    post:
      tags:
        - Withdrawals
      summary: Create a withdrawal
      description: >-
        Creates an instant on-chain withdrawal from an account to its owner
        address.


        The account must be fully provisioned, the token must be supported on
        the

        account's chain, and no other instant withdrawal may be in progress for
        the

        account. Call `GET /accounts/{account_id}/balances` first and do not
        exceed the

        token's `max_instant_withdraw` value.


        Persist the returned `withdrawal_id`. Processing is asynchronous; use a

        webhook or `GET /withdrawals/{withdrawal_id}` to observe the final
        status.
      operationId: withdrawals.create.v1
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWithdrawalRequest'
        description: Account, token, and amount for the withdrawal.
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstantWithdrawalResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CreateWithdrawalRequest:
      type: object
      required:
        - account_id
        - token_address
        - amount
      properties:
        account_id:
          $ref: '#/components/schemas/uuid'
          description: Account to withdraw from.
        token_address:
          type: string
          description: >-
            Contract address returned by `GET
            /accounts/{account_id}/available-tokens`.
        amount:
          type: string
          description: >-
            Amount in the token's smallest unit. It must be positive and
            cent-aligned; for example, `"1000000"` represents 1 USDC.
    InstantWithdrawalResponse:
      type: object
      required:
        - withdrawal_id
      properties:
        withdrawal_id:
          $ref: '#/components/schemas/uuid'
          description: >-
            ID of the newly created withdrawal. Use it to track processing
            status.
    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`.
    uuid:
      type: string
      format: uuid
  securitySchemes:
    BearerAuth:
      type: http
      scheme: Bearer

````

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