---
title: "Manage Bank Instructions"
method: POST
path: "/gw/api/v1/bank-instructions"
tags: ["accountManagementBanking"]
---

# Manage Bank Instructions

`POST /gw/api/v1/bank-instructions`

Create or delete bank instructions by accountId. Only ACH and EDDA are supported for 'Create'.<br><br>**Scope**: `bank-instructions.write`<br>**Security Policy**: `Signed JWT`

## Path parameters

- `client-id` string, required

## Request body

- object
  - `instructionType` 'ACH_INSTRUCTION' | 'OPEN_BANKING_INSTRUCTION' | 'WITHDRAWAL_INSTRUCTION' | 'TRADITIONAL_BANK_INSTRUCTION_VERIFICATION' | 'DELETE_BANK_INSTRUCTION' | 'PREDEFINED_DESTINATION_INSTRUCTION' | 'EDDA_INSTRUCTION', required
  - `instruction` union, required
    - TraditionalBankInstructionVerification
      - `clientInstructionId` number, double, required
      - `bankInstructionCode` 'USACH' | 'CAACH' | 'ACHUS' | 'WIRE', required
      - `bankInstructionName` string, required
      - `accountId` string, required
      - `pendingInstructionId` number, double, required
      - `creditAmount1` number, double, required
      - `creditAmount2` number, double, required
    - AchInstruction
      - `clientInstructionId` number, double, required
      - `bankInstructionCode` 'CAACH' | 'USACH', required
      - `achType` 'DEBIT' | 'CREDIT' | 'DEBIT_CREDIT', required
      - `bankInstructionName` string, required
      - `currency` string, required
      - `accountId` string, required
      - `clientAccountInfo` AchInstructionClientAccountInfo, required
        - `bankRoutingNumber` string, required
        - `bankAccountNumber` string, required
        - `bankName` string, required
        - `bankAccountTypeCode` '0' | '1' | '2', required
    - OpenBankingInstruction
      - `clientInstructionId` number, double, required
      - `currency` string, required
      - `accountId` string, required
      - `serviceProvider` 'PLAID', required
      - `plaidOptions` OpenBankingInstructionPlaidOptions
        - `completionRedirectUri` string — This should be a URI with a custom scheme and this can be any value you'd like, as long as it isn't a reserved one such as http or tel. By convention, it's often one associated with the name of your application.
        - `linkDisplayName` string — Client Name displayed on Plaid Link UI
        - `isMobileApp` boolean
    - WithdrawalBankInstruction
      - `clientInstructionId` number, double, required
      - `currency` string, required
      - `accountId` string, required
      - `basedOnDepositInstruction` WithdrawalBankInstructionBasedOnDepositInstruction, required
        - `name` string
        - `type` 'OPEN_BANKING', required
        - `ibReferenceId` number, double
    - DeleteBankInstruction
      - `clientInstructionId` number, double, required
      - `accountId` string, required
      - `bankInstructionName` string, required
      - `bankInstructionMethod` 'WIRE' | 'ACH', required
      - `currency` string, required
    - PredefinedDestinationInstruction
      - `clientInstructionId` number, double, required
      - `bankInstructionName` string, required
      - `bankInstructionMethod` 'LVP' | 'SEPA' | 'WIRE' | 'ACH' | 'CPA', required
      - `accountId` string, required
      - `currency` string, required
      - `financialInstitution` PredefinedDestinationInstructionFinancialInstitution, required
        - `name` string, required
        - `branchCode` string
        - `branchCodeType` 'BSB_AUD' | 'BANK_CODE_CAD' | 'NONE'
        - `identifier` string, required
        - `identifierType` 'BIC' | 'IFSC', required
        - `clientAccountId` string, required
    - EddaInstruction
      - `clientInstructionId` number, double, required
      - `bankInstructionName` string, required
      - `currency` string, required
      - `accountId` string, required
      - `bankBranchCode` string, required
      - `bankAccountNumber` string, required
      - `bankClearingCode` string, required
      - `debtorIdentificationDocumentType` 'hkId' | 'passport' | 'chinaId' | 'hkMacaoEntryPermit', required

## Response `202`

Accepts request to create a new instruction asynchronously

- AsynchronousInstructionResponse
  - `status` number, double, required
  - `instructionSetId` number, double, required
  - `instructionResult` InstructionResult
    - `clientInstructionId` number, double, required
    - `instructionType` 'ACH_INSTRUCTION' | 'CANCEL_INSTRUCTION' | 'COMPLEX_ASSET_TRANSFER' | 'DELETE_BANK_INSTRUCTION' | 'DEPOSIT' | 'DWAC' | 'EXTERNAL_POSITION_TRANSFER' | 'FOP' | 'QUERY_RECENT_INSTRUCTIONS' | 'QUERY_WITHDRAWABLE_FUNDS' | 'INTERNAL_POSITION_TRANSFER' | 'INTERNAL_CASH_TRANSFER' | 'MICRO_AMOUNT' | 'PREDEFINED_DESTINATION_INSTRUCTION' | 'TRADITIONAL_BANK_INSTRUCTION_VERIFICATION' | 'WITHDRAWAL' | 'QUERY_IRA_CONTRIBUTIONS' | 'EDDA_INSTRUCTION' | 'QUERY_RECENT_RECURRING_EVENTS' | 'QUERY_RECURRING_INSTRUCTIONS' | 'QUERY_ACCOUNT_BALANCES' | 'QUERY_BANK_INSTRUCTION' | 'QUERY_WITHDRAWABLE_CASH_EQUITY', required
    - `instructionStatus` 'PENDING' | 'PROCESSED' | 'REJECTED' | 'PENDING_VERIFICATION', required
    - `instructionId` number, double, required
    - `ibReferenceId` number, double
    - `description` string

## Other responses

- `400` — Returns a Problem detail instance representing a bad request.
- `403` — Returns a Problem detail instance representing a forbidden request.
- `422` — Returns a Problem detail instance representing a business error.
- `500` — Returns a Problem detail instance representing an internal server error.

---

[API](https://skmtc.net/interactivebrokers/apis/api-reference.md) · [All operations](https://skmtc.net/interactivebrokers/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/interactivebrokers/api-reference/revisions/67f9f562c2c6/schema)
