Q2

Q2 Customer Document API

Endpoints for the customerDocument object

Operations 4

GET /customerDocument/get/{customerId}/{documentId} Get a customer document #
GET /customerDocument/list/{customerId} List customer documents #
POST /customerDocument/updateStatus Update customer document status #
POST /customerDocument/upload Upload a customer document #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/q2:q2-customer-document-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

q2-customer-document-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Helix Customer Document API
  version: 3.0.0
  description: Helix Public API (no customer KYC/IDV). **This spec covers all of Helix 3.x and is subject to change at any time.**
servers:
- url: https://sandbox-api.helix.q2.com
  description: Sandbox server
- url: https://api.helix.q2.com
  description: Production server
security:
- basicAuth: []
tags:
- name: Customer Document
  description: Endpoints for the customerDocument object
paths:
  /customerDocument/get/{customerId}/{documentId}:
    get:
      tags:
      - Customer Document
      summary: Get a customer document
      description: Retrieve a customer document by the given `customerId` and `documentId`.
      externalDocs:
        url: https://docs.helix.q2.com/reference/customerdocumentget
      operationId: customerDocumentGet
      parameters:
      - $ref: '#/components/parameters/CustomerIdPath'
      - $ref: '#/components/parameters/DocumentIdPath'
      responses:
        '200':
          description: An <a href="https://docs.helix.q2.com/reference/response-format" target="_blank">envelope</a> whose data node is a <a href="https://docs.helix.q2.com/docs/customer-document" target="_blank">customerDocument</a> object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerDocumentObject200Response'
        '400':
          $ref: '#/paths/~1card~1lock/post/responses/400'
        '401':
          $ref: '#/paths/~1card~1lock/post/responses/401'
        '404':
          $ref: '#/paths/~1card~1lock/post/responses/404'
        '405':
          $ref: '#/paths/~1card~1lock/post/responses/405'
        '429':
          $ref: '#/paths/~1card~1lock/post/responses/429'
  /customerDocument/list/{customerId}:
    get:
      tags:
      - Customer Document
      summary: List customer documents
      description: Retrieve all documents for the given `customerId`.
      externalDocs:
        url: https://docs.helix.q2.com/reference/customerdocumentlist
      operationId: customerDocumentList
      parameters:
      - $ref: '#/components/parameters/CustomerIdPath'
      responses:
        '200':
          description: An array of <a href="https://docs.helix.q2.com/docs/customer-document" target="_blank">customerDocument</a> objects
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerDocumentArray200Response'
        '400':
          $ref: '#/paths/~1card~1lock/post/responses/400'
        '401':
          $ref: '#/paths/~1card~1lock/post/responses/401'
        '404':
          $ref: '#/paths/~1card~1lock/post/responses/404'
        '405':
          $ref: '#/paths/~1card~1lock/post/responses/405'
        '429':
          $ref: '#/paths/~1card~1lock/post/responses/429'
  /customerDocument/updateStatus:
    post:
      tags:
      - Customer Document
      summary: Update customer document status
      description: Update the status of a customer document by the given `customerId` and `documentId`.
      externalDocs:
        url: https://docs.helix.q2.com/reference/customerdocumentupdatestatus
      operationId: customerDocumentUpdateStatus
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - customerId
              - documentId
              - customerDocumentStatusType
              properties:
                customerId:
                  $ref: '#/components/schemas/HelixId'
                documentId:
                  $ref: '#/components/schemas/HelixId'
                customerDocumentStatusType:
                  $ref: '#/components/schemas/CustomerDocumentUpdateStatus200Response/allOf/1/properties/data/properties/customerDocumentStatusType'
      responses:
        '200':
          description: The `customerId`, `documentId`, and `customerDocumentStatusType`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerDocumentUpdateStatus200Response'
        '400':
          $ref: '#/paths/~1card~1lock/post/responses/400'
        '401':
          $ref: '#/paths/~1card~1lock/post/responses/401'
        '404':
          $ref: '#/paths/~1card~1lock/post/responses/404'
        '405':
          $ref: '#/paths/~1card~1lock/post/responses/405'
        '429':
          $ref: '#/paths/~1card~1lock/post/responses/429'
  /customerDocument/upload:
    post:
      tags:
      - Customer Document
      summary: Upload a customer document
      description: Upload a document on behalf of a customer. See customerDocument object definition for parameter details.
      externalDocs:
        url: https://docs.helix.q2.com/reference/customerdocumentupload
      operationId: customerDocumentUpload
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - customerId
              - documentType
              - reasonType
              - documentName
              - documentContent
              properties:
                customerId:
                  $ref: '#/components/schemas/HelixId'
                customField1:
                  type: string
                  maxLength: 50
                customField2:
                  type: string
                  maxLength: 50
                customField3:
                  type: string
                  maxLength: 50
                customField4:
                  type: string
                  maxLength: 50
                customField5:
                  type: string
                  maxLength: 50
                documentContent:
                  type: string
                  format: byte
                  writeOnly: true
                documentName:
                  type: string
                  maxLength: 50
                documentType:
                  type: string
                  enum:
                  - DriversLicense
                  - UtilityBill
                  - BankStatement
                  - NameChangeAffidavit
                  - WrittenStatementOfUnauthorizedDebit
                  - Unspecified
                  - VerificationSummary
                  - DisputeDocumentation
                  - HoldNotice
                  - DriversLicenseBack
                  - PassportFront
                  - PassportBack
                  - UnspecifiedIdCardFront
                  - UnspecifiedIdCardBack
                  - SelfPortrait
                  - DBAStatementOfFiling
                  - FictitiousBusinessName
                  - BusinessLicenseShowingCurrent
                  - AttestationDocument
                  - CertificateOfPartnership
                  - PartnershipAgreement
                  - ProofOfAddress
                  - ArticlesOfOrganization
                  - CertificateOfFormation
                  - CertificateOfOrganization
                  - SecretaryOfStateRegistration
                  - ProofOfGoodStanding
                  - CorporateAuthorization
                  - EINLetter
                  - ArticlesOfIncorporation
                  - Charter
                  - TrustDocuments
                  - CurrentSecretaryOfStateRegistration
                  - CourtDocuments
                  - TrustCertificate
                  - BirthCertificate
                  - SocialSecurityCardFront
                  - SocialSecurityCardBack
                  - SchoolIDFront
                  - SchoolIDBack
                  - DeathCertificate
                  - PowerOfAttorney
                  - ProofOfAuthorization
                reasonType:
                  type: string
                  enum:
                  - NameChange
                  - AddressChange
                  - RequestForNewExternalAccount
                  - Unspecified
                  - ManualReview
                  - ReturnOnTransaction
                  - VerificationSummary
                  - DisputeDocumentation
                  - HoldPlaced
                  - AutomatedReview
                  - Remediation Document
                tag:
                  $ref: '#/components/schemas/TagProperty'
      responses:
        '200':
          description: An <a href="https://docs.helix.q2.com/reference/response-format" target="_blank">envelope</a> whose data node is a <a href="https://docs.helix.q2.com/docs/customer-document" target="_blank">customerDocument</a> object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerDocumentObject200Response'
        '400':
          $ref: '#/paths/~1card~1lock/post/responses/400'
        '401':
          $ref: '#/paths/~1card~1lock/post/responses/401'
        '404':
          $ref: '#/paths/~1card~1lock/post/responses/404'
        '405':
          $ref: '#/paths/~1card~1lock/post/responses/405'
        '429':
          $ref: '#/paths/~1card~1lock/post/responses/429'
components:
  schemas:
    CardArray200Response:
      allOf:
      - type: object
        properties:
          errors:
            type: array
            items: {}
            example: []
          requestId:
            type: string
            example: 1249a3bf-aca1-40dd-9fba-2a3193550c39
          status:
            type: integer
            enum:
            - 200
          throttle:
            type: object
            properties:
              periodEndsAt:
                $ref: '#/components/schemas/CustomerSetLastContact200Response/allOf/1/properties/data/items/properties/lastContactDate'
              periodLengthInSeconds:
                $ref: '#/components/schemas/HelixId'
              periodRequestLimit:
                $ref: '#/components/schemas/HelixId'
              requestsRemainingInPeriod:
                $ref: '#/components/schemas/HelixId'
              warningThreshold:
                type: number
                format: decimal
                example: 0.2
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/CardObject200Response/allOf/1/properties/data'
    CustomerDocumentUploadRequest:
      type: object
      required:
      - customerId
      - documentType
      - reasonType
      - documentName
      - documentContent
      properties:
        customerId:
          $ref: '#/components/schemas/HelixId'
        customField1:
          type: string
          maxLength: 50
        customField2:
          type: string
          maxLength: 50
        customField3:
          type: string
          maxLength: 50
        customField4:
          type: string
          maxLength: 50
        customField5:
          type: string
          maxLength: 50
        documentContent:
          type: string
          format: byte
          writeOnly: true
        documentName:
          type: string
          maxLength: 50
        documentType:
          type: string
          enum:
          - DriversLicense
          - UtilityBill
          - BankStatement
          - NameChangeAffidavit
          - WrittenStatementOfUnauthorizedDebit
          - Unspecified
          - VerificationSummary
          - DisputeDocumentation
          - HoldNotice
          - DriversLicenseBack
          - PassportFront
          - PassportBack
          - UnspecifiedIdCardFront
          - UnspecifiedIdCardBack
          - SelfPortrait
          - DBAStatementOfFiling
          - FictitiousBusinessName
          - BusinessLicenseShowingCurrent
          - AttestationDocument
          - CertificateOfPartnership
          - PartnershipAgreement
          - ProofOfAddress
          - ArticlesOfOrganization
          - CertificateOfFormation
          - CertificateOfOrganization
          - SecretaryOfStateRegistration
          - ProofOfGoodStanding
          - CorporateAuthorization
          - EINLetter
          - ArticlesOfIncorporation
          - Charter
          - TrustDocuments
          - CurrentSecretaryOfStateRegistration
          - CourtDocuments
          - TrustCertificate
          - BirthCertificate
          - SocialSecurityCardFront
          - SocialSecurityCardBack
          - SchoolIDFront
          - SchoolIDBack
          - DeathCertificate
          - PowerOfAttorney
          - ProofOfAuthorization
        reasonType:
          type: string
          enum:
          - NameChange
          - AddressChange
          - RequestForNewExternalAccount
          - Unspecified
          - ManualReview
          - ReturnOnTransaction
          - VerificationSummary
          - DisputeDocumentation
          - HoldPlaced
          - AutomatedReview
          - Remediation Document
        tag:
          $ref: '#/components/schemas/TagProperty'
    CustomerSetLastContact200Response:
      allOf:
      - $ref: '#/components/schemas/CardArray200Response/allOf/0'
      - type: object
        properties:
          data:
            type: array
            items:
              type: object
              properties:
                customerId:
                  $ref: '#/components/schemas/HelixId'
                dormancyStatus:
                  type: string
                  enum:
                  - Active
                  - Inactive
                  - Dormant
                lastContactDate:
                  type: string
                  format: date-time
                  example: '2021-01-07T19:00:59.761-06:00'
                lastContactType:
                  $ref: '#/components/schemas/LastContactType'
    CustomerDocumentUpdateStatus200Response:
      allOf:
      - $ref: '#/components/schemas/CardArray200Response/allOf/0'
      - type: object
        properties:
          data:
            type: object
            properties:
              customerId:
                $ref: '#/components/schemas/HelixId'
              documentId:
                $ref: '#/components/schemas/HelixId'
              customerDocumentStatusType:
                type: string
                enum:
                - InReview
                - Accepted
                - Rejected
    CustomerDocumentArray200Response:
      allOf:
      - $ref: '#/components/schemas/CardArray200Response/allOf/0'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/CustomerDocumentObject200Response/allOf/1/properties/data'
    CustomerDocumentObject200Response:
      allOf:
      - $ref: '#/components/schemas/CardArray200Response/allOf/0'
      - type: object
        properties:
          data:
            allOf:
            - type: object
              properties:
                documentId:
                  $ref: '#/components/schemas/HelixId'
                downloadUrl:
                  type: string
            - $ref: '#/components/schemas/CustomerDocumentUploadRequest'
    TagProperty:
      type: string
      maxLength: 50
    HelixId:
      type: integer
      format: int32
      minimum: 1
  parameters:
    DocumentIdPath:
      name: documentId
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/HelixId'
    CustomerIdPath:
      name: customerId
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/HelixId'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
x-samples-languages:
- curl
- node
- python
- csharp
- ruby
- go
- java
- kotlin
- php
x-provenance:
  method: searched
  source: https://docs.helix.q2.com/reference
  harvested: '2026-10-14'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://docs.helix.q2.com/reference/accountaddentitlement.md
  - https://docs.helix.q2.com/reference/accountbeneficiaryadd.md
  - https://docs.helix.q2.com/reference/accountbeneficiaryedit.md
  - https://docs.helix.q2.com/reference/accountbeneficiaryget.md
  - https://docs.helix.q2.com/reference/accountbeneficiarylist.md
  - https://docs.helix.q2.com/reference/accountbeneficiaryremove.md
  - https://docs.helix.q2.com/reference/accountbeneficiaryreplace.md
  - https://docs.helix.q2.com/reference/accountclose.md
  - https://docs.helix.q2.com/reference/accountcreate.md
  - https://docs.helix.q2.com/reference/accounteditentitlement.md
  - https://docs.helix.q2.com/reference/accountget.md
  - https://docs.helix.q2.com/reference/accountgetbytag.md
  - https://docs.helix.q2.com/reference/accountlimitdelete.md
  - https://docs.helix.q2.com/reference/accountlimitlist.md
  - https://docs.helix.q2.com/reference/accountlimitset.md
  - https://docs.helix.q2.com/reference/accountlist.md
  - https://docs.helix.q2.com/reference/accountlistentitlements.md
  - https://docs.helix.q2.com/reference/accountlock.md
  - https://docs.helix.q2.com/reference/accountplacehold.md
  - https://docs.helix.q2.com/reference/accountreleasehold.md
  - https://docs.helix.q2.com/reference/accountremoveentitlement.md
  - https://docs.helix.q2.com/reference/accountstoppaycreatecheckstoppay.md
  - https://docs.helix.q2.com/reference/accountstoppayexpire.md
  - https://docs.helix.q2.com/reference/accountstoppaylist.md
  - https://docs.helix.q2.com/reference/accountunlock.md
  - https://docs.helix.q2.com/reference/accountupdate.md
  - https://docs.helix.q2.com/reference/bankdocumentdownload.md
  - https://docs.helix.q2.com/reference/bankdocumentlist.md
  - https://docs.helix.q2.com/reference/cardaddaccount.md
  - https://docs.helix.q2.com/reference/cardarchive.md
  - https://docs.helix.q2.com/reference/cardcontrolarchive.md
  - https://docs.helix.q2.com/reference/cardcontrolarchivebytag.md
  - https://docs.helix.q2.com/reference/cardcontrolcreate.md
  - https://docs.helix.q2.com/reference/cardcontrolget.md
  - https://docs.helix.q2.com/reference/cardcontrolgetbytag.md
  - https://docs.helix.q2.com/reference/cardcreatedigital.md
  - https://docs.helix.q2.com/reference/cardfraudtextalertget.md
  - https://docs.helix.q2.com/reference/cardfraudtextalertoptout.md
  - https://docs.helix.q2.com/reference/cardget.md
  - https://docs.helix.q2.com/reference/cardgetbytag.md
  - https://docs.helix.q2.com/reference/cardhotlist.md
  - https://docs.helix.q2.com/reference/cardinitiate.md
  - https://docs.helix.q2.com/reference/cardlimitget.md
  - https://docs.helix.q2.com/reference/cardlimitoverride.md
  - https://docs.helix.q2.com/reference/cardlimitreset.md
  - https://docs.helix.q2.com/reference/cardlimittemporaryoverride.md
  - https://docs.helix.q2.com/reference/cardlist.md
  - https://docs.helix.q2.com/reference/cardlock.md
  - https://docs.helix.q2.com/reference/cardmockadminfalconfraud.md
  - https://docs.helix.q2.com/reference/cardmockdeclinepurchaseauthorize.md
  - https://docs.helix.q2.com/reference/cardmockdepositpurchasereturn.md
  - https://docs.helix.q2.com/reference/cardmockdepositpurchasereturnreversal.md
  - https://docs.helix.q2.com/reference/cardmockwithdrawalcardcash.md
  - https://docs.helix.q2.com/reference/cardmockwithdrawalpurchaseauthorize.md
  - https://docs.helix.q2.com/reference/cardmockwithdrawalpurchasecomplete.md
  - https://docs.helix.q2.com/reference/cardorderphysical.md
  - https://docs.helix.q2.com/reference/cardprovisionapplepay.md
  - https://docs.helix.q2.com/reference/cardprovisioncarddetail.md
  - https://docs.helix.q2.com/reference/cardprovisiongooglepay.md
  - https://docs.helix.q2.com/reference/cardreissue.md
  - https://docs.helix.q2.com/reference/cardremoveaccount.md
  - https://docs.helix.q2.com/reference/cardrenewaloverride.md
  - https://docs.helix.q2.com/reference/cardreprioritizeaccount.md
  - https://docs.helix.q2.com/reference/cardresetpin.md
  - https://docs.helix.q2.com/reference/cardriskfactorget.md
  - https://docs.helix.q2.com/reference/cardriskfactorset.md
  - https://docs.helix.q2.com/reference/cardunlock.md
  - https://docs.helix.q2.com/reference/cardupdate.md
  - https://docs.helix.q2.com/reference/cardverify.md
  - https://docs.helix.q2.com/reference/cardverifybycvv.md
  - https://docs.helix.q2.com/reference/customeranswerlist.md
  - https://docs.helix.q2.com/reference/customeranswerpost.md
  - https://docs.helix.q2.com/reference/customerarchive.md
  - https://docs.helix.q2.com/reference/customerbeneficiaryaccountassignmentlist.md
  - https://docs.helix.q2.com/reference/customerbeneficiarycreate.md
  - https://docs.helix.q2.com/reference/customerbeneficiarydeactivate.md
  - https://docs.helix.q2.com/reference/customerbeneficiaryget.md
  - https://docs.helix.q2.com/reference/customerbeneficiarylist.md
  - https://docs.helix.q2.com/reference/customerbeneficiaryupdate.md
  - https://docs.helix.q2.com/reference/customercreate.md
  - https://docs.helix.q2.com/reference/customercreatebusiness.md
  - https://docs.helix.q2.com/reference/customercreatebusinessapplication.md
  - https://docs.helix.q2.com/reference/customerdocumentget.md
  - https://docs.helix.q2.com/reference/customerdocumentlist.md
  - https://docs.helix.q2.com/reference/customerdocumentupdatestatus.md
  - https://docs.helix.q2.com/reference/customerdocumentupload.md
  - https://docs.helix.q2.com/reference/customergeneratetoken.md
  - https://docs.helix.q2.com/reference/customerget.md
  - https://docs.helix.q2.com/reference/customergetbyemail.md
  - https://docs.helix.q2.com/reference/customergetbytag.md
  - https://docs.helix.q2.com/reference/customerlist.md
  - https://docs.helix.q2.com/reference/customernote.md
  - https://docs.helix.q2.com/reference/customernoteslist.md
  - https://docs.helix.q2.com/reference/customerrelationshiparchive.md
  - https://docs.helix.q2.com/reference/customerrelationshipcreate.md
  - https://docs.helix.q2.com/reference/customerrelationshiplist.md
  - https://docs.helix.q2.com/reference/customerrelationshipupdate.md
  - https://docs.helix.q2.com/reference/customerrelationshipupdateprimarycontact.md
  - https://docs.helix.q2.com/reference/customersearch.md
  - https://docs.helix.q2.com/reference/customersecurityanswerslist.md
  - https://docs.helix.q2.com/reference/customersetlastcontact.md
  - https://docs.helix.q2.com/reference/customerupdate.md
  - https://docs.helix.q2.com/reference/customerupdateaddress-2.md
  - https://docs.helix.q2.com/reference/externalaccountarchive.md
  - https://docs.helix.q2.com/reference/externalaccountcreate.md
  - https://docs.helix.q2.com/reference/externalaccountdocumentupload.md
  - https://docs.helix.q2.com/reference/externalaccountget.md
  - https://docs.helix.q2.com/reference/externalaccountgetbytag.md
  - https://docs.helix.q2.com/reference/externalaccountinitiate.md
  - https://docs.helix.q2.com/reference/externalaccountlist.md
  - https://docs.helix.q2.com/reference/externalaccountlock.md
  - https://docs.helix.q2.com/reference/externalaccountresendverification.md
  - https://docs.helix.q2.com/reference/externalaccountunlock.md
  - https://docs.helix.q2.com/reference/externalaccountupdate.md
  - https://docs.helix.q2.com/reference/externalaccountverify.md
  - https://docs.helix.q2.com/reference/feeconfiglist.md
  - https://docs.helix.q2.com/reference/feeget.md
  - https://docs.helix.q2.com/reference/feegetbycustomertag.md
  - https://docs.helix.q2.com/reference/programget.md
  - https://docs.helix.q2.com/reference/programlistaccountholds.md
  - https://docs.helix.q2.com/reference/programlistindustryclassificationcodes.md
  - https://docs.helix.q2.com/reference/programquestionslist.md
  - https://docs.helix.q2.com/reference/statementdownload.md
  - https://docs.helix.q2.com/reference/statementget.md
  - https://docs.helix.q2.com/reference/statementlist.md
  - https://docs.helix.q2.com/reference/statementsearch.md
  - https://docs.helix.q2.com/reference/transactioncreatefee.md
  - https://docs.helix.q2.com/reference/transactionget.md
  - https://docs.helix.q2.com/reference/transactiongetbytag.md
  - https://docs.helix.q2.com/reference/transactionlist.md
  - https://docs.helix.q2.com/reference/transactionsetavailabledate.md
  - https://docs.helix.q2.com/reference/transactionsetstatus.md
  - https://docs.helix.q2.com/reference/transactionwireget.md
  - https://docs.helix.q2.com/reference/transferachoriginationcreate.md
  - https://docs.helix.q2.com/reference/transfercreate.md
  - https://docs.helix.q2.com/reference/transfervoid.md
  - https://docs.helix.q2.com/reference/transferwirecreate-2.md
  merge:
    pages: 137
    deduped: 1427
    conflicts_kept_first: 0