Versapay Onboarding API

Onboarding supports the automated process of applying for merchant services. Contact support@versapay.com for support & setup of supplier onboarding partner credentials.

Operations 5

GET /api/onboarding/v1/terms Retrieves rates and terms for merchant services #
POST /api/onboarding/v1/applications Create a new application #
GET /api/onboarding/v1/applications/{id} Get application status #
GET /api/onboarding/v1/applications/search/{id} Find the application token of an existing application #
POST /api/onboarding/v1/application_steps Record a Completed Step of a Merchant Application #

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/versapay-onboarding-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

versapay-onboarding-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.3.35
  title: Versapay API Reference Onboarding API
  contact:
    name: Versapay Support
    url: https://www.versapay.com/support
    email: support@versapay.com
  x-logo:
    url: https://developers.versapay.com/images/logo.png
  termsOfService: https://www.versapay.com/terms-of-use
  license:
    name: Copyright 2022 Versapay. All Rights Reserved.
  description: 'Onboarding supports the automated process of applying for merchant services. Contact support@versapay.com for support & setup of supplier onboarding partner credentials.

    '
servers:
- url: https://secure.versapay.com
  description: Production
- url: https://uat.versapay.com
  description: UAT
tags:
- name: Onboarding
  description: 'Onboarding supports the automated process of applying for merchant services. Contact support@versapay.com for support & setup of supplier onboarding partner credentials.

    '
paths:
  /api/onboarding/v1/terms:
    get:
      tags:
      - Onboarding
      summary: Retrieves rates and terms for merchant services
      operationId: getTerms
      description: 'The system will return the rates, terms, and conditions for merchant services

        '
      parameters:
      - in: query
        name: locale
        description: pass an optional country and language
        required: false
        schema:
          $ref: '#/components/schemas/Locale'
      responses:
        '200':
          description: terms parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationParameters'
        '400':
          description: bad input parameter
  /api/onboarding/v1/applications:
    post:
      tags:
      - Onboarding
      summary: Create a new application
      operationId: addApplication
      description: Adds an application to the system
      responses:
        '201':
          description: application created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationCreatedResponse'
        '400':
          description: invalid input, object invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationErrorResponse'
        '409':
          description: an existing item already exists
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Application'
        description: Inventory item to add
  /api/onboarding/v1/applications/{id}:
    get:
      tags:
      - Onboarding
      summary: Get application status
      operationId: getApplicationStatus
      description: Get the status of an existing application
      parameters:
      - name: id
        in: path
        description: Application Token
        required: true
        schema:
          $ref: '#/components/schemas/ApplicationToken'
      responses:
        '200':
          description: application status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationStatusResponse'
        '404':
          description: application not found
  /api/onboarding/v1/applications/search/{id}:
    get:
      tags:
      - Onboarding
      summary: Find the application token of an existing application
      operationId: getApplicationToken
      description: Find the application token of an existing applications using the reference token supplied during the create application process
      parameters:
      - name: id
        in: path
        description: Reference Token
        required: true
        schema:
          $ref: '#/components/schemas/ReferenceToken'
      responses:
        '200':
          description: application token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationCreatedResponse'
        '404':
          description: application not found
  /api/onboarding/v1/application_steps:
    post:
      tags:
      - Onboarding
      summary: Record a Completed Step of a Merchant Application
      operationId: addApplicationSteps
      description: Record a completed step of the merchant application process as an integer value. A value of 99 indicates the submission of the full application.
      responses:
        '201':
          description: Created (record was inserted successfully)
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - reference_token
              - step_number
              - message
              properties:
                reference_token:
                  type: string
                  format: guid
                  example: 7654321:2023-10-04T14:52:37
                  description: Specify a unique GUID as a client reference to the application. This same reference_token is used for all steps of the same application.
                  maxLength: 36
                step_number:
                  type: integer
                  description: Use values 1,2,3… to indicate steps of the process; 99 indicates the final step of the application
                  example: '1'
                message:
                  type: string
                  description: Description of the step
                  example: Step 1 Completed
                  maxLength: 255
components:
  schemas:
    BirthDate:
      type: string
      format: date
      example: '1972-01-15'
    AccountFees:
      type: object
      required:
      - per_month_amount
      properties:
        per_month_amount:
          type: number
          format: float
          example: 5.05
          minimum: 0
    DemandDepositAccountNumber:
      type: string
      example: '9876543299'
      pattern: ^\d+$
    RoutingNumber:
      type: string
      example: '021100361'
      pattern: ^\d{9}$
      description: Must be a valid US Bank ABA Number
    ApplicationTaxIDError:
      type: object
      required:
      - field
      - error_message
      properties:
        field:
          type: string
          enum:
          - Owner 1
          - Owner 2
          - Owner 3
          - Owner 4
          - Business
          example: Owner 1
        error_message:
          $ref: '#/components/schemas/ErrorMessage'
    Range:
      type: object
      properties:
        from:
          type: number
          example: 1000000
        to:
          type: number
          example: 1999999
          description: values are retrieved from GET Terms
    PaymentMethodFees:
      type: object
      required:
      - description
      - per_transaction_amount
      - per_transaction_percent
      - per_month_amount
      properties:
        description:
          type: string
          example: Credit Card
        per_transaction_amount:
          type: number
          format: float
          example: 5.05
          minimum: 0
        per_transaction_percent:
          type: number
          format: float
          example: 5.05
          minimum: 0
        per_month_amount:
          type: number
          format: float
          example: 5.05
          minimum: 0
    ServiceEstablishment:
      type: object
      required:
      - over_se_minimum
      properties:
        over_se_minimum:
          $ref: '#/components/schemas/OverSEMinimum'
        se_number:
          $ref: '#/components/schemas/SENumber'
    ReferenceToken:
      type: string
      format: guid
      example: 1c47dece-489b-4521-89db-0a940ac58235
      description: Specify a unique GUID as a client reference to the application
      maxLength: 36
    APICredentials:
      type: object
      required:
      - api_token
      - api_key
      properties:
        api_token:
          $ref: '#/components/schemas/APIToken'
        api_key:
          $ref: '#/components/schemas/APIKey'
    OverrideValidation:
      type: boolean
      example: true
    LinkToExisting:
      type: string
      description: Must match the value of an existing application entry that has previously been submitted
      example: 1cb9ca4b-6596-4bac-a24b-8864222cf95d
    ApplicationToken:
      type: string
      format: guid
      example: 1c47dece-489b-4521-89db-0a940ac58235
    SENumber:
      type: string
      example: '123456789'
      pattern: ^\d+
      maxLength: 10
      description: must be <= 10 characters
    APIToken:
      type: string
      example: 6ySjc8LfeRwqciWK8owT
    OverSEMinimum:
      type: boolean
      example: false
    AmountRanges:
      type: object
      properties:
        currency_code:
          $ref: '#/components/schemas/Currency'
        annual_volumes:
          type: array
          items:
            $ref: '#/components/schemas/Range'
        average_ticket_amounts:
          type: array
          items:
            $ref: '#/components/schemas/Range'
        high_ticket_amounts:
          type: array
          items:
            $ref: '#/components/schemas/Range'
    BusinessTaxIdentifier:
      type: object
      required:
      - tin
      properties:
        tin:
          $ref: '#/components/schemas/TIN'
        override_validation:
          $ref: '#/components/schemas/OverrideValidation'
    ApplicationAddressError:
      type: object
      required:
      - field
      - error_message
      properties:
        field:
          type: string
          enum:
          - Owner 1
          - Owner 2
          - Owner 3
          - Owner 4
          - Business Physical Address
          - Business Billing Address
          example: Owner 1
        error_message:
          $ref: '#/components/schemas/ErrorMessage'
        address_candidates:
          type: array
          items:
            $ref: '#/components/schemas/Address'
    ProhibitedProduct:
      type: string
      example: Firearms
    NAICSCode:
      type: string
      pattern: ^[0-9]{6}$
      example: '221111'
    Address:
      type: object
      required:
      - address1
      - city
      - post_code
      - country
      properties:
        address1:
          type: string
          example: 1314 NW GLISAN ST
          minLength: 1
          maxLength: 25
        address2:
          type: string
          example: Apartment 1
          maxLength: 25
        city:
          type: string
          example: Portland
          minLength: 1
          maxLength: 20
        state_province:
          type: string
          example: OR
          pattern: ^[a-z]{2}$
          maxLength: 2
          minLength: 2
        post_code:
          type: string
          example: '97209'
          maxLength: 5
        country:
          type: string
          pattern: ^[a-z]{2}$
          example: us
          maxLength: 2
          minLength: 2
        override_validation:
          $ref: '#/components/schemas/OverrideValidation'
    TermsAndConditions:
      type: object
      properties:
        url:
          $ref: '#/components/schemas/URL'
        terms_and_conditions_text:
          $ref: '#/components/schemas/TermsAndConditionsText'
    IndividualTaxIdentifier:
      type: object
      required:
      - itin
      properties:
        itin:
          $ref: '#/components/schemas/ITIN'
        override_validation:
          $ref: '#/components/schemas/OverrideValidation'
    BusinessName:
      type: string
      example: Acme Corporation
    Email:
      type: string
      format: email
      example: me@example.com
    OwnershipType:
      type: string
      enum:
      - Financial Institution
      - Government
      - LLC
      - Non-Profit
      - Partnership/Gen. Ltd.
      - Private Corporation
      - Public Corporation
      - SEC Regulated Corporation
      - Sole Proprietorship
      - Trust
      example: Limited Liability Company
    APIKey:
      type: string
      example: Bl5cgjTnysXxyNyysXiw
    URL:
      type: string
      format: url
      example: https://www.example.com
    ExternalLink:
      type: string
      description: An external reference provided by the the ERP/partner originating the merchant application associated with this supplier
      example: xyz123abc789
    BusinessOwner:
      type: object
      required:
      - name
      - ownership_percentage
      - individual_tax_id_number
      - birth_date
      - home_address
      - home_phone
      - email
      properties:
        name:
          $ref: '#/components/schemas/Person'
        ownership_percentage:
          type: number
          format: float
          example: 25
          minimum: 25
          maximum: 100
        individual_tax_id_number:
          $ref: '#/components/schemas/IndividualTaxIdentifier'
        birth_date:
          $ref: '#/components/schemas/BirthDate'
        home_address:
          $ref: '#/components/schemas/Address'
        home_phone:
          $ref: '#/components/schemas/Phone'
        email:
          $ref: '#/components/schemas/Email'
    Rate:
      type: object
      required:
      - description
      - currency_code
      - url
      - monthly_account_fees
      - payment_methods
      properties:
        description:
          type: string
          example: Versapay Payment Services
        currency_code:
          $ref: '#/components/schemas/Currency'
        url:
          type: string
          format: url
          example: https://www.versapay.com/merchant-services
        monthly_account_fees:
          $ref: '#/components/schemas/AccountFees'
        payment_methods:
          type: array
          items:
            $ref: '#/components/schemas/PaymentMethodFees'
    ApplicationStatusResponse:
      type: object
      required:
      - application_status
      properties:
        application_status:
          $ref: '#/components/schemas/ApplicationStatus'
        api_credentials:
          $ref: '#/components/schemas/APICredentials'
    Document:
      type: object
      required:
      - filename
      - base64
      properties:
        filename:
          type: string
          example: example.pdf
        base64:
          type: string
          format: base64
          example: ZXhhbXBsZQ==
        type:
          type: string
          enum:
          - Bank Statement
          - Merchant Statement
          - Financial Statement
          - Tax ID Number Verification
          example: Bank Statement
    ProhibitedProducts:
      type: object
      properties:
        url:
          $ref: '#/components/schemas/URL'
        prohibited_product_list:
          type: array
          items:
            $ref: '#/components/schemas/ProhibitedProduct'
    ApplicationErrorResponse:
      type: object
      properties:
        address_errors:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAddressError'
        tax_id_errors:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationTaxIDError'
        field_errors:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationError'
    ITIN:
      type: string
      example: 325-98-1975
      pattern: ^\d{3}\-?\d{2}\-?\d{4}$
    TermsAndConditionsText:
      type: string
      example: This Merchant Services Agreement (this "Agreement") is entered into between...
    Currency:
      type: string
      pattern: ^[a-z]{3}$
      example: usd
      maxLength: 3
      minLength: 3
    DDA:
      type: object
      required:
      - routing_number
      - account_number
      properties:
        routing_number:
          $ref: '#/components/schemas/RoutingNumber'
        account_number:
          $ref: '#/components/schemas/DemandDepositAccountNumber'
    Application:
      type: object
      required:
      - business_legal_name
      - business_dba_name
      - business_tax_id_number
      - business_physical_address
      - business_billing_address
      - ownership_type
      - business_type
      - naics_code
      - business_phone
      - business_email
      - business_website
      - business_established_date
      - annual_card_volume
      - annual_direct_debit_volume
      - average_ticket_amount
      - high_ticket_amount
      - american_express_service_establishment
      - primary_contact
      - control_prong
      - deposit_account
      - reference_token
      - sells_prohibited_products
      - agrees_terms_and_conditions
      - terms_and_conditions
      properties:
        business_legal_name:
          $ref: '#/components/schemas/BusinessName'
        business_dba_name:
          $ref: '#/components/schemas/BusinessName'
        business_tax_id_number:
          $ref: '#/components/schemas/BusinessTaxIdentifier'
        business_physical_address:
          $ref: '#/components/schemas/Address'
        business_billing_address:
          $ref: '#/components/schemas/Address'
        ownership_type:
          $ref: '#/components/schemas/OwnershipType'
        stock_ticker_symbol:
          $ref: '#/components/schemas/StockTickerSymbol'
        business_type:
          $ref: '#/components/schemas/BusinessType'
        naics_code:
          $ref: '#/components/schemas/NAICSCode'
        business_phone:
          $ref: '#/components/schemas/Phone'
        business_email:
          $ref: '#/components/schemas/Email'
        business_website:
          $ref: '#/components/schemas/URL'
        business_established_date:
          $ref: '#/components/schemas/Date'
        annual_card_volume:
          $ref: '#/components/schemas/Range'
        annual_direct_debit_volume:
          $ref: '#/components/schemas/RangeAnualDirectDebitVolume'
        average_ticket_amount:
          $ref: '#/components/schemas/RangeAverageTicketAmount'
        high_ticket_amount:
          $ref: '#/components/schemas/RangeHightTicketAmount'
        american_express_service_establishment:
          $ref: '#/components/schemas/ServiceEstablishment'
        business_owners:
          type: array
          items:
            $ref: '#/components/schemas/BusinessOwner'
          maxItems: 4
        non_business_owner_control_prong:
          $ref: '#/components/schemas/NonBusinessOwnerControlProng'
        primary_contact:
          $ref: '#/components/schemas/ApplicationContact'
        control_prong:
          $ref: '#/components/schemas/ControlProng'
        deposit_account:
          $ref: '#/components/schemas/DDA'
        reference_token:
          $ref: '#/components/schemas/ReferenceToken'
        sells_prohibited_products:
          $ref: '#/components/schemas/Boolean'
        agrees_terms_and_conditions:
          $ref: '#/components/schemas/Boolean'
        terms_and_conditions:
          $ref: '#/components/schemas/TermsAndConditions'
        supporting_documents:
          type: array
          items:
            $ref: '#/components/schemas/Document'
        locale:
          $ref: '#/components/schemas/Locale'
        external_link:
          $ref: '#/components/schemas/ExternalLink'
        link_to_existing:
          $ref: '#/components/schemas/LinkToExisting'
    TIN:
      type: string
      example: 77-7654567
      pattern: ^\d{2}\-?\d{7}$
    ApplicationError:
      type: object
      required:
      - field
      - error_message
      properties:
        field:
          type: string
        error_message:
          $ref: '#/components/schemas/ErrorMessage'
    NonBusinessOwnerControlProng:
      description: 'This is a required object when the control_prong is set to Non-Owner

        '
      type: object
      required:
      - name
      - individual_tax_id_number
      - birth_date
      - home_address
      - home_phone
      - email
      properties:
        name:
          $ref: '#/components/schemas/Person'
        individual_tax_id_number:
          $ref: '#/components/schemas/IndividualTaxIdentifier'
        birth_date:
          $ref: '#/components/schemas/Date'
        home_address:
          $ref: '#/components/schemas/Address'
        home_phone:
          $ref: '#/components/schemas/Phone'
        email:
          $ref: '#/components/schemas/Email'
    RangeHightTicketAmount:
      type: object
      properties:
        from:
          type: number
          example: 1000
        to:
          type: number
          example: 4999
    Locale:
      type: string
      pattern: ^[a-z]{2}-[a-z]{2}$
      example: en-us
    RangeAnualDirectDebitVolume:
      type: object
      properties:
        from:
          type: number
          example: 500000
        to:
          type: number
          example: 999999
    StockTickerSymbol:
      type: string
      example: EXMPL
      description: required only if ownership_type = "Public Corporation", must be <= 10 characters
    ApplicationCreatedResponse:
      type: object
      required:
      - application_token
      properties:
        application_token:
          $ref: '#/components/schemas/ApplicationToken'
    ErrorMessage:
      type: string
      example: Please specify a valid value
    RangeAverageTicketAmount:
      type: object
      properties:
        from:
          type: number
          example: 100
        to:
          type: number
          example: 249
    ApplicationContact:
      type: object
      required:
      - name
      - phone
      - email
      properties:
        name:
          $ref: '#/components/schemas/Person'
        phone:
          $ref: '#/components/schemas/Phone'
        email:
          $ref: '#/components/schemas/Email'
    Boolean:
      type: boolean
      example: false
    Date:
      type: string
      format: date
      example: '2022-01-15'
    ApplicationParameters:
      type: object
      required:
      - rates
      - prohibited_products
      - terms_and_conditions
      properties:
        rates:
          type: array
          items:
            $ref: '#/components/schemas/Rate'
        prohibited_products:
          $ref: '#/components/schemas/ProhibitedProducts'
        terms_and_conditions:
          $ref: '#/components/schemas/TermsAndConditions'
        ranges:
          $ref: '#/components/schemas/AmountRanges'
    ApplicationStatus:
      type: string
      enum:
      - Received
      - Processing
      - Provisionally Approved
      - Approved
      - On Hold
      - Closed
      example: Received
    Phone:
      type: string
      example: 503-685-4116
      description: cannot begin with 1 or 0
    Person:
      type: object
      required:
      - first_name
      - last_name
      - title
      properties:
        first_name:
          type: string
          example: Alice
          maxLength: 25
        middle_initial:
          type: string
          example: B
          minLength: 1
          maxLength: 1
        last_name:
          type: string
          example: Smith
          maxLength: 25
        title:
          type: string
          example: CFO
          maxLength: 20
    BusinessType:
      type: string
      enum:
      - AutoRental
      - MOTO
      - ECommerce
      - Restaurant
      - Lodging
      - Retail
      example: Restaurant
    ControlProng:
      type: string
      enum:
      - Owner 1
      - Owner 2
      - Owner 3
      - Owner 4
      - Non-Owner
      example: Non-Owner
x-tagGroups:
- name: Versapay API
  description: Introduction to the Versapay API.
  tags:
  - Overview
  - Versioning & Compatibility
  - Environments
  - Rate Limits
  - Authentication
  - Webhooks
  - Watermark & Limit
- name: Collaborative AR
  description: Operations available for Collaborative AR integration.
  tags:
  - Reference Data
  - Onboarding
  - Ecommerce Integration
  - Orders
  - Order Transactions
  - Testing Order Transactions
  - Gift Cards
  - Card Present EMV
  - Settlement Reporting
  - Wallets
  - Customers
  - Invoices
  - Autopay
  - Invoicing Payments
  - Divisions
  - Notifications
  - Collaboration
  - File Imports