Plaid Deposit Switch API

The Plaid Deposit Switch API is a powerful tool that allows users to easily switch their direct deposit information from one financial institution to another. This API streamlines the process of moving funds by automating the necessary steps to update payroll information, reducing the time and effort required for individuals to make the switch. By enabling secure and efficient data transfer between banks, the Plaid Deposit Switch API simplifies the process of transitioning to a new account, providing users with a seamless experience when transferring their direct deposits.

OpenAPI Specification

plaid-deposit-switch--openapi-original.yml Raw ↑
openapi: 3.0.0
servers:
  - description: Production
    url: https://production.plaid.com
  - description: Development
    url: https://development.plaid.com
  - description: Sandbox
    url: https://sandbox.plaid.com
info:
  title: 'Plaid deposit switch/'
  version: 2020-09-14_1.517.0
  description: Needs description.
  contact:
    name: Plaid Developer Team
    url: https://plaid.com
  termsOfService: https://plaid.com/legal/
tags:
  - name: Plaid
security:
  - clientId: []
    secret: []
    plaidVersion: []
paths:
  /deposit_switch/create:
    x-plaid-business-unit-context: BUSINESS_UNIT_PLAID
    post:
      tags:
        - Plaid
      summary: Plaid Create a deposit switch
      externalDocs:
        url: /deposit-switch/reference#deposit_switchcreate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositSwitchCreateResponse'
              examples:
                example-1:
                  value:
                    deposit_switch_id: c7jMwPPManIwy9rwMewWP7lpb4pKRbtrbMomp
                    request_id: lMjeOeu9X1VUh1F
      operationId: depositSwitchCreate
      description: >-
        This endpoint creates a deposit switch entity that will be persisted
        throughout the lifecycle of the switch.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepositSwitchCreateRequest'
  /deposit_switch/token/create:
    x-plaid-business-unit-context: BUSINESS_UNIT_PLAID
    post:
      tags:
        - Plaid
      summary: Plaid Create a deposit switch token
      externalDocs:
        url: /deposit-switch/reference#deposit_switchtokencreate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositSwitchTokenCreateResponse'
              examples:
                example-1:
                  value:
                    deposit_switch_token: >-
                      deposit-switch-sandbox-3e5cacca-10a6-11ea-bcdb-6003089acac0
                    deposit_switch_token_expiration_time: '2019-12-31T12:01:37Z'
                    request_id: 68MvHx4Ub5NYoXt
      operationId: depositSwitchTokenCreate
      description: >
        In order for the end user to take action, you will need to create a
        public token representing the deposit switch. This token is used to
        initialize Link. It can be used one time and expires after 30 minutes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepositSwitchTokenCreateRequest'
  /deposit_switch/get:
    x-plaid-business-unit-context: BUSINESS_UNIT_PLAID
    post:
      summary: Plaid Retrieve a deposit switch
      externalDocs:
        url: /deposit-switch/reference#deposit_switchget
      tags:
        - Plaid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositSwitchGetResponse'
              examples:
                example-1:
                  value:
                    target_item_id: MdRAkq1QikR3BLjDyMfMkVpqLmEm1VR7bX5hE
                    target_account_id: bX5hEMdRAkq1QikR3BLjDyMfMkVpqLmEm1VR7
                    deposit_switch_id: LjDyMfMkVpqLmEm1VR7bQikR3BX5hEMdRAkq1
                    state: completed
                    switch_method: instant
                    date_created: '2019-11-01'
                    date_completed: '2019-11-01'
                    account_has_multiple_allocations: true
                    is_allocated_remainder: false
                    percent_allocated: 50
                    amount_allocated:
                    employer_name: COMPANY INC
                    employer_id: pqLmEm1VR7bQi11231
                    institution_name: Bank of America
                    institution_id: ins_1
                    request_id: lMjeOeu9X1VUh1F
      operationId: depositSwitchGet
      description: >-
        This endpoint returns information related to how the user has configured
        their payroll allocation and the state of the switch. You can use this
        information to build logic related to the user's direct deposit
        allocation preferences.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepositSwitchGetRequest'
      parameters: []
  /deposit_switch/alt/create:
    x-plaid-business-unit-context: BUSINESS_UNIT_PLAID
    post:
      summary: Create a deposit switch without using Plaid Exchange
      tags:
        - Plaid
      externalDocs:
        url: /deposit-switch/reference#deposit_switchaltcreate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositSwitchAltCreateResponse'
              examples:
                example-1:
                  value:
                    deposit_switch_id: c7jMwPPManIwy9rwMewWP7lpb4pKRbtrbMomp
                    request_id: lMjeOeu9X1VUh1F
      operationId: depositSwitchAltCreate
      description: >-
        This endpoint provides an alternative to `/deposit_switch/create` for
        customers who have not yet fully integrated with Plaid Exchange. Like
        `/deposit_switch/create`, it creates a deposit switch entity that will
        be persisted throughout the lifecycle of the switch.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepositSwitchAltCreateRequest'
components:
  schemas:
    DepositSwitchCreateResponse:
      type: object
      additionalProperties: true
      description: >-
        DepositSwitchCreateResponse defines the response schema for
        `/deposit_switch/create`
      properties:
        deposit_switch_id:
          type: string
          description: >-
            ID of the deposit switch. This ID is persisted throughout the
            lifetime of the deposit switch.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
        - deposit_switch_id
        - request_id
    DepositSwitchTokenCreateResponse:
      type: object
      additionalProperties: true
      description: >-
        DepositSwitchTokenCreateResponse defines the response schema for
        `/deposit_switch/token/create`
      properties:
        deposit_switch_token:
          type: string
          description: >-
            Deposit switch token, used to initialize Link for the Deposit Switch
            product
        deposit_switch_token_expiration_time:
          type: string
          description: >-
            Expiration time of the token, in [ISO
            8601](https://wikipedia.org/wiki/ISO_8601) format
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
        - deposit_switch_token
        - deposit_switch_token_expiration_time
        - request_id
    DepositSwitchGetResponse:
      title: DepositSwitchGetResponse
      type: object
      additionalProperties: true
      description: >-
        DepositSwitchGetResponse defines the response schema for
        `/deposit_switch/get`
      properties:
        deposit_switch_id:
          type: string
          description: The ID of the deposit switch.
        target_account_id:
          type: string
          nullable: true
          description: The ID of the bank account the direct deposit was switched to.
        target_item_id:
          type: string
          nullable: true
          description: The ID of the Item the direct deposit was switched to.
        state:
          type: string
          enum:
            - initialized
            - processing
            - completed
            - error
          description: >2-

            The state, or status, of the deposit switch.


            - `initialized` – The deposit switch has been initialized with the
            user entering the information required to submit the deposit switch
            request.


            - `processing` – The deposit switch request has been submitted and
            is being processed.


            - `completed` – The user's employer has fulfilled the deposit switch
            request.


            - `error` – There was an error processing the deposit switch
            request.
        switch_method:
          nullable: true
          type: string
          enum:
            - instant
            - mail
            - pdf
            - 
          description: >-
            The method used to make the deposit switch.


            - `instant` – User instantly switched their direct deposit to a new
            or existing bank account by connecting their payroll or employer
            account.


            - `mail` – User requested that Plaid contact their employer by mail
            to make the direct deposit switch.


            - `pdf` – User generated a PDF or email to be sent to their employer
            with the information necessary to make the deposit switch.'
        account_has_multiple_allocations:
          nullable: true
          type: boolean
          description: >-
            When `true`, user’s direct deposit goes to multiple banks. When
            false, user’s direct deposit only goes to the target account. Always
            `null` if the deposit switch has not been completed.
        is_allocated_remainder:
          nullable: true
          type: boolean
          description: >-
            When `true`, the target account is allocated the remainder of direct
            deposit after all other allocations have been deducted. When
            `false`, user’s direct deposit is allocated as a percent or amount.
            Always `null` if the deposit switch has not been completed.
        percent_allocated:
          type: number
          format: double
          nullable: true
          description: >-
            The percentage of direct deposit allocated to the target account.
            Always `null` if the target account is not allocated a percentage or
            if the deposit switch has not been completed or if
            `is_allocated_remainder` is true.
        amount_allocated:
          type: number
          format: double
          nullable: true
          description: >-
            The dollar amount of direct deposit allocated to the target account.
            Always `null` if the target account is not allocated an amount or if
            the deposit switch has not been completed.
        employer_name:
          type: string
          nullable: true
          description: >-
            The name of the employer selected by the user. If the user did not
            select an employer, the value returned is `null`.
        employer_id:
          type: string
          nullable: true
          description: >-
            The ID of the employer selected by the user. If the user did not
            select an employer, the value returned is `null`.
        institution_name:
          type: string
          nullable: true
          description: >-
            The name of the institution selected by the user. If the user did
            not select an institution, the value returned is `null`.
        institution_id:
          type: string
          nullable: true
          description: >-
            The ID of the institution selected by the user. If the user did not
            select an institution, the value returned is `null`.
        date_created:
          description: >
            [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date the deposit
            switch was created.
          type: string
          format: date
        date_completed:
          type: string
          format: date
          nullable: true
          description: >
            [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date the deposit
            switch was completed. Always `null` if the deposit switch has not
            been completed.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
        - deposit_switch_id
        - target_account_id
        - target_item_id
        - state
        - account_has_multiple_allocations
        - is_allocated_remainder
        - percent_allocated
        - amount_allocated
        - date_created
        - date_completed
        - request_id
    DepositSwitchAltCreateResponse:
      title: DepositSwitchAltCreateResponse
      type: object
      additionalProperties: true
      properties:
        deposit_switch_id:
          type: string
          description: >-
            ID of the deposit switch. This ID is persisted throughout the
            lifetime of the deposit switch.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
        - deposit_switch_id
        - request_id
      description: >-
        DepositSwitchAltCreateResponse defines the response schema for
        `/deposit_switch/alt/create`