Versapay API Reference

The core Versapay platform REST API (v1.3.35, OpenAPI 3.0.0, 86 documented paths) covering the Collaborative AR and payment-acceptance surface: onboarding applications, wallets, orders and order transactions, gift cards, card-present EMV, reference data, settlement reporting, autopay, customers, invoices and invoicing payments, divisions, notifications, collaboration, file imports, and webhooks. Authenticated with HTTPS Basic access authentication (API Token and Key) against a UAT sandbox and production.

OpenAPI Specification

versapay-api-reference.json Raw ↑
{"openapi":"3.0.0","info":{"version":"1.3.35","title":"Versapay API Reference","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."}},"servers":[{"url":"https://secure.versapay.com","description":"Production"},{"url":"https://uat.versapay.com","description":"UAT"}],"tags":[{"name":"Overview","description":"The Versapay API offers operations in support of its flagship products:\n* Collaborative AR (formerly ARC) - accounts receivable platform with automated invoicing, effective collaboration, flexible payments and cash application to improve efficiency and customer relationships.\n\n  * Importing & exporting customers, invoices, and payments.\n\n  * Monitoring file based imports/batches.\n\n  * Importing & exporting orders and processing order based payment transactions.\n\n  * Ecommerce integrations.\n\n  * Moving funds using transactions and pre-authorized debit agreements.\n\n  * A secure hosted checkout for accepting payments through your website or email.\n\nPlease contact us at support@versapay.com for support & setup of A/R invoicing integration, hosted checkout, and/or payment acceptance.\n"},{"name":"Versioning & Compatibility","description":"The current API version is `Versapay API Reference (1.3.35)`.\n\nVersapay commits to maintaining backward compatibility and existing API endpoints with each released version updating existing endpoints and/or introducing new endpoints.\n\nShould Versapay require deprecation of a published API, Versapay will work with its API clients/users to confirm specific EOL/migration timelines with ample lead times, as well as endpoint migration strategies.\n"},{"name":"Environments","description":"The UAT environment is a useful sandbox for integration testing where transaction settlements are simulated using test account numbers and test dollar amounts.\n\n`https://uat.versapay.com`\n\nOnce integration testing is complete via the UAT environment, start sending your requests to the production URL to start moving money and/or integrating with Versapay.\n\n`https://secure.versapay.com`\n"},{"name":"Rate Limits","description":"The standard rate limit is 1500 requests per minute per IP address, but Versapay reserves the right to raise or lower that limit based on network conditions. When the rate limit is exceeded, APIs will return error `HTTP 1015 you are being rate limited`. Partner- or customer-specific rate limits can be established by special agreement.\n"},{"name":"Authentication","description":"Visit your account settings in `UAT` (https://uat.versapay.com/account) or `Production` (https://secure.versapay.com/account) to setup API credentials needed for authentication as well as webhooks to receive relevant callbacks from Versapay transaction processing.\n\nYou can generate/disable your API credentials as often as necessary for security reasons.\n\nIf you do not have an account, please contact Versapay Support for support & setup of AR invoicing integration, hosted checkout and/or payment acceptance for partner and/or API credential setup.\n\n## API Token and API Key\nAPI requests are authenticated using `API Token & Key` via [HTTPS Basic Access Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication). <table class=\"security-details\"><tbody><tr><th> Security Scheme Type </th><td> <!-- -->HTTPS<!-- --> </td></tr><tr><th> HTTPS Authorization Scheme </th><td> <!-- -->basic<!-- --> </td></tr></tbody></table>\n\nSimply provide the `API Token & Key` values as the `user` and `password` parameters, using cURL for instance:\n\n`curl -u \"Nvax...:UN0I...\" -X POST https://secure.versapay.com/api/...`\n\n## JWT Token\nAlternatively, API requests can also be authenticated using `JWT Token` via [HTTPS Bearer Authentication](https://en.wikipedia.org/wiki/JSON_Web_Token). <table class=\"security-details\"><tbody><tr><th> Security Scheme Type </th><td> <!-- -->HTTPS<!-- --> </td></tr><tr><th> HTTP Authorization Scheme </th><td> <!-- -->bearer JWT<!-- --> </td></tr></tbody></table>\n`JWT Tokens`, automatically generated alongside `API Token & Key`, are displayed along with expiration in account settings as well as via authenticated `/api/whoami`, see `Authentication` _Echo identity and account profile settings_\n\nSimply provide the `JWT Token` in the authorization header, using cURL for instance:\n\n`curl -H \"Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbiI6Im54eDFaSjgzeXRNNmhtb3NGVExCIiwiZXhwIjoxNzEyOTU5NDA5fQ.adV6U1vW69Ypskt61uPL8hZ-4muvtM4FLM48QN6iCc4\" -X POST https://secure.versapay.com/api/...`\n"},{"name":"Testing Order Transactions","description":"In the uat environment, the following test account numbers can be used provided your account has been setup for payment acceptance.\nPlease contact support@versapay.com for support & setup questions related to payment acceptance.\n\n## ACH Bank Account Numbers\n|Routing|Number|\n|:--|:--|\n| 122105278 | 0000000016 |\n\n## Credit Card Numbers\nAny future dated expiry month/year for the following:\n\n|Brand|Number|\n|:--|:--|\n| Visa | 4895281000000006 |\n| Visa | 4264280001234500 (will always decline) |\n| Mastercard | 5541032000004422 |\n| Discover | 6011000990911111 |\n| American Express (Amex) | 341111597242000 |\n\nThe following CVV values can be used to test CVV reponse codes:\n\n|CVV|Code|Description|\n|:--|:--|:--|\n| 123 | P | Not Processed |\n| 234 | M | Match |\n| 345 | N | No Match |\n| 456 | S | CVV value should be on the card but the merchant has indicated that it is not present |\n| 567 | U | Issuer not certified for CVV processing |\n| 6789 (Amex) | M | Match |\n| 1011 (Amex) | N | No Match |\n| 1213 (Amex) | P | Not Processed |\n| Any other number | M | Match |\n\nThe following address values can be used to test AVS reponse codes:\n\n|Postal/Zip|Address|Code|Response|\n|:--|:--|:--|:--|\n| 80801 | 234 Elm Street | A | Address match; zip no match |\n| 80802 | 234 Elm Street | G | Global non-AVS participant |\n| 80803 | 234 Elm Street | N | Address and zip do not match |\n| 80804 | 234 Elm Street | R | System unavailable or timed out |\n| 80805 | 234 Elm Street | S | Service not supported: Issuer does not support AVS and Visa |\n| 80806 | 234 Elm Street | U | Unavailable: Address information not verified for domestic transactions |\n| 808000000 | 234 Elm Street | W | 9-digit zip matches; address does not match |\n| 808000000 | 234 Elm Street | X | 9-digit zip and address match |\n| 80809 | 234 Elm Street | Y | 5-digit zip and address match |\n| 80810 | 234 Elm Street | Z | 5-digit zip matches; address does not match |\n| 80815 | 234 Elm Street | I | Address information not verified for international transaction |\n| 80818 | 234 Elm Street | E | AVS service not supported |\n| K1A0A9 | 234 Elm Street | D | Zip and address match (International) |\n| L6Y2N4 | 234 Elm Street | M | Zip and address match (International) |\n| K0K2T0 | 234 Elm Street | P | Zip matches; address not verified because of incompatible formats |\n| Any other zip | Any other address | Y | 5-digit zip and address match |\n\n## Declines\nThe number of cents in the transaction amount can trigger a decline response in UAT.\nIf the transaction amount ends in `.01` (e.g., $1.01 or $40.01), the transaction will decline.\nIf a `void` transaction amount ends in `.02` (e.g., $1.02 or $40.02), the `void` transaction will decline.\n"},{"name":"Watermark & Limit","description":"The API offers polling based endpoints to supplement/alternative to webhook integration. The requisite GET endpoints for customer, invoice, payment, and settlement reporting accept a \"watermark\" option to ensure that data more recent than the provided watermark is retrieved.\n\nThey also support a limit argument, which defaults to 100 items -- and are capped up to 2500 for performance reasons. Otherwise, the limit can be used to draw 1-2500 items at a time depending on the integrators need and performance boundaries.\n\nThe watermark & limit are specified as part of the API call e.g. ` GET /api/exports/open_invoices?watermark=13207500&limit=5`\n\nThe watermark is typically an 8-byte integer unless otherwise specified. The limit is an integer between 1 and 2500.\n\n## API Response Structure\n\nThe general response structure of these API are an ordered hash of records, whose key/index is a watermark value.\n\nThe iteration pattern would be, for instance:\n\n```ruby\nlast_watermark = 0\njson = GET /api/...?watermark={last_watermark}\nfor each watermark_key in json.keys\n\n  record = json[watermark_key]\n\n  last_watermark = watermark_key if watermark_key > last_watermark\n\n```\nOtherwise, an API response may be a flat array list, where the watermark value is a key in the array item record, just the same:\n\n```ruby\nlast_watermark = 0\njson = GET /api/...?watermark={last_watermark}\nfor each record in json\n\n  watermark_key = record[\"watermark\"]\n\n  last_watermark = watermark_key if watermark_key > last_watermark\n\n```\nThe last watermark key (or last watermark attribute where echo'd on a record) in the result set can be used as the argument to the next call e.g.\n- `GET /api/exports/open_invoices`\n- `GET /api/exports/open_invoices?limit=2`\n- `GET /api/exports/open_invoices?watermark=13207500&limit=7`\n\n## API Response Structure - Flat Array List of Records\n\nThe flat array list response structure can be explicitly requested via `list=true` URL argument.\n"},{"name":"Ecommerce Integration","description":"The Versapay e-commerce solution is composed of several components. First, is a server-side API that allows your application to configure a new payment session, manage customer wallets, create orders, and initiate payments. In addition, there is a client-side JavaScript SDK that enables your web application to accept secure payment data via an iframe hosted by Versapay. Your sensitive payment data will not transit your application when you use the iframe, so your application will have a reduced PCI scope.\n\nIn order to accept a payment, the general flow is to first create a session using the server-side API. Once a session ID has been generated by the Versapay server and returned to your application, your client-side code can use that session ID to initialize the Versapay payment SDK, which will, in turn, render the iframe. Next, the customer will interact with the iframe to specify a payment method. The SDK will return a token representing that payment method to your client-side code. Your client-side code must return the token to your server-side code, which will then use the original session ID and the token to create an order and take a payment. Finally, your ERP or order fulfillment system will query the Versapay cloud platform for new orders so that they may be created and fulfilled via your standard workflow.\n\nFor more information see [Ecommerce API](https://developers.versapay.com/ecommerce).\n"},{"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.\n"},{"name":"Wallets","description":"The Wallet entity holds vaulted & secured payment methods owned by a customer (buyer/payor) that can be used to make payments via Collaborative AR (online Portals, AutoPay, Pay Now), Order Transactions (Ecomm & ERP based suppliers), and Invoicing Payments (via Partner buyer networks including Virtual Card Connect). Contact support@versapay.com for support & setup for Wallet access and payment transaction enablement in relation to licensed product components.\n"},{"name":"Orders","description":"The Order entity represents the sales document in the ERP system. The fields in the ERP system should be aligned as closely as possible with the fields in the order entity, as the gateway will use these fields for credit card interchange optimization. Contact support@versapay.com for support & setup for Order and/or Order Transactions enablement.\n"},{"name":"Order Transactions","description":"Order-based card/ACH and card present EMV payment transactions include verify, authorize, capture, sale, void, return refund, and return credit transaction types. If participating in a gift card program, gift cards can be used in sale, void, refund transaction types. Contact support@versapay.com for support & setup for Order Transactions enablement.\n## Credit Card Payments\nThere are two types of credit card payments: sale and delayed capture. Sale payments occur when the merchant wishes to accept a payment for goods or services that have already been shipped or provided to the cardholder. A sale is a financial transaction, and the movement of funds will be initiated in response to a sale request. Delayed capture payments are used when there is a separation between accepting an order and fulfilling that order. With delayed capture, the credit card is first authorized for the estimated order total. The authorization reserves funds on the cardholder’s account for the merchant but does not initiate a movement of funds. Once the products or services are ready to be delivered to the cardholder, the authorization is captured for the final amount. The capture request initiates the movement of funds.\n## ACH Payments\nACH payments are bank-to-bank transfers of funds. Unlike credit card payments, ACH payments only have one type – sale, and there is no prior authorization. Therefore, sale amounts are final and cannot be adjusted after the fact. ACH payments assume success, and if there is a problem with the funding source, like with a bounced paper check, the originator will be notified of a rejection several days after the payment attempt.\n## EFT Payments\nEFT payments are bank-to-bank transfers of funds. Unlike credit card payments, EFT payments only have one type – sale, and there is no prior authorization. Therefore, sale amounts are final and cannot be adjusted after the fact. EFT payments assume success, and if there is a problem with the funding source, like with a bounced paper check, the originator will be notified of a rejection several days after the payment attempt.\n## Gift Card Payments\nProvisioned gift cards can be activated/enabled (or deactivated/disabled) as well as have their balances loaded/re-loaded with an amount. Contact support@versapay.com for support & setup for Gift Card acceptance.\n## Point-of-Sale/Card Present EMV Payments\nCard Present EMV payment transactions require a Versapay certified point-of-sale terminal. In addition to the card not present transaction types, the following payment transaction types are also supported: device setup, request signature, and cancel. Contact support@versapay.com for support & setup for POS/CP EMV enablement.\n"},{"name":"Gift Cards","description":"Provisioned gift cards can be activated/enabled (or deactivated/disabled) as well as have their balances loaded/re-loaded with an amount. Contact support@versapay.com for support & setup for Gift Card acceptance.\n"},{"name":"Card Present EMV","description":"Card Present EMV payment transactions require a Versapay certified point-of-sale terminal. Contact support@versapay.com for support & setup for POS/CP EMV enablement.\n"},{"name":"Reference Data","description":"For convenience purposes only, Versapay can supply third party reference data to its partners and users. This data can be used to implement client-side tooling (e.g., fraud mitigation services), but it may not be redistributed. The accuracy and completeness of this third party data cannot be guaranteed and is for informational and convenience purposes only. Contact support@versapay.com for eligibility for reference data enablement.\n"},{"name":"Settlement Reporting","description":"Settlement Reporting includes retrieval of monthly statements, daily deposit amounts (including fee information), transaction exceptions (ACH reject/return & CC chargeback), and transaction details. Contact support@versapay.com for payment acceptance onboarding support & setup and eligibility for Settlement Reporting enablement.\n"},{"name":"Autopay","description":"\nAutopays are a digital analog to paper pre-authorized debit agreements that businesses could use, for instance, for monthly billing.\n"},{"name":"Customers","description":"As a supplier your customers are the entities that are invoiced.\n\n## Webhooks\n\nWhen using Webhooks, your application will be notified when key events are triggered for a customer.\n"},{"name":"Invoices","description":"As a supplier invoices are your receivables.\n\n## Webhooks\n\nWhen using Webhooks, your application will be notified when key events are triggered for an invoice.\n"},{"name":"Invoicing Payments","description":"As a supplier a payments are made by customers for invoices issued to them.\n\n## Webhooks\n\nWhen using Webhooks, your application will be notified when key events are triggered for a payment.\n"},{"name":"Divisions","description":"As a supplier divisions are used to group your invoices.\n"},{"name":"Notifications","description":"As a supplier you can notify customers about their invoices.\n"},{"name":"Collaboration","description":"As a supplier your customers collaborate with you through comments about invoices and/or payments.\n"},{"name":"File Imports","description":"As a supplier you can upload customer, invoice, and payment data in CSV file formats.\n"},{"name":"Webhooks","description":"Versapay uses the [Webhook](http://www.webhooks.org/) pattern to POST updates to a HTTP (port 80) or HTTPS (port 443) URL you specify.\n\n## HTTP Acknowledgement\n\nThe specified URL must return a status code of 200 otherwise Versapay will continue attempting to deliver the POST up to a system defined number of attempts.\n\n## Idempotency\n\nA webhook consumer must be idempotent in receiving replayed/duplicated webhook payload transmissions which may arise as a result of subscription configuration and event timing and/or retry scenarios.\n\n## Viewing Portal\n\nYou can view details for the latest notifications sent to your application by visiting `/developers/webhook_responses` in [uat](https://uat.versapay.com//developers/webhook_responses) or [production](https://secure.versapay.com//developers/webhook_responses).\n\n## Entity Payloads\nWebhooks can receive updates for the following `Collaborative AR` entities:\n\n* Recent events for any **Customer** part of your supplier account. The request parameters will contain the same attributes as returned by viewing a customer via `GET /api/exports/customer/{identifier}`.\n\n* Recent events for any **Invoice** part of your supplier account. The request parameters will contain the same attributes as returned by viewing an invoice via `GET /api/exports/invoice/{number_or_id}`.\n\n* Recent events for any **Payment** part of your supplier account. The request parameters will contain the same attributes as returned by viewing a payment via `GET /api/exports/payment/{reference_or_token}`.\n\n## HMAC Signatures for Collaborative AR\n\nVersapay will send a [HMAC-SHA256](https://en.wikipedia.org/wiki/HMAC) signature attribute to all webhook notification request headers under the key `X-Versapay-Signature`\n\nTo verify the authenticity of received webhook notifications:\n\n1. Calculate the HMAC-SHA256 of the JSON request body using your Versapay signing key (which is displayed on your webhook account settings) and Base64 the result.\n2. URL Encode the HMAC and compare the result to the value of the original signature found in the request header\n\n```javascript\n/* Example of HMAC-SHA256 signature calculation - using JavaScript/Express our POST payload is accessible via req.body */\nconst express = require('express');\nconst bodyParser = require('body-parser');\nconst crypto = require('crypto');\nconst app = express();\n\napp.use(bodyParser.json());\napp.use(bodyParser.urlencoded({ extended: true }));\n\napp.post('/webhook', (req, res) => {\n  let original_signature = req.headers['x-versapay-signature'];\n  let webhook_signing_key = 'v7aJHjbbxASKiwDW5wq6';\n  let raw_request_body = JSON.stringify(req.body);\n  let hmac = crypto.createHmac('sha256', webhook_signing_key).update(raw_request_body).digest('base64');\n  let expected_signature = encodeURIComponent(hmac + \"\\n\")\n  console.log(`original signature: ${original_signature}`);\n  console.log(`expected signature: ${expected_signature}`);\n  console.log(`authentic? ${expected_signature === original_signature}`);\n});\n```\n","x-traitTag":true}],"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"]}],"paths":{"/api/whoami":{"get":{"tags":["Authentication"],"summary":"Echo identity and account profile settings","description":"Lists key account profile settings configured for the authenticated account\n","parameters":[{"name":"options[jwt_expiry]","in":"query","description":"Number of days (1-365) until JWT expiration, default 30.","schema":{"type":"integer"}}],"operationId":"whoami","responses":{"200":{"description":"Successful Operation","content":{"application/json":{"schema":{"type":"object","properties":{"whoami":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Whoami"}}}},"examples":{"whoamis":{"value":{"whoami":{"XbkkoXbkKOXbkKoXBkkOO":{"token":"2ABCDEFFF2ABC","name":"CDS Client UAT","sender_identifier":"cdscliuat","jwt":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbiI6Im54eDFaSjgzeXRNNmhtb3NGVExCIiwiZXhwIjoxNzEyOTU5NDA5fQ.adV6U1vW69Ypskt61uPL8hZ-4muvtM4FLM48QN6iCc4","jwt_exp":1712959409,"currency":"usd","preferred_language":"en","business_number":"333-222-3000","address_1":"PO Box 2840","address_2":"","postal_code":"76902","city":"San Angelo","province":"TX","country":"US","branding_partner":null,"branding_partner_config":null,"external_link":"xyz123abc789","divisions":[{"division_code":"AcmeTX","division_name":"Acme Texas","parent_code":"Acme Global","company_name":"Acme Texas Division","address":{"address_1":"123 Main St","address_2":"Suite 100","postal_code":"45123","city":"Dallas","province":"TX","country":"US"}},{"division_code":"AcmeON","division_name":"Acme Ontario","parent_code":"Acme Global","company_name":"Acme Ontario Division","address":{"address_1":"123 North Ave","address_2":"Suite N","postal_code":"M4B2J8","city":"Toronto","province":"ON","country":"CA"}},{"division_code":"AcmeCO","division_name":"Acme Colorado","parent_code":null,"company_name":null,"address":{"address_1":null,"address_2":null,"postal_code":null,"city":null,"province":null,"country":null}},{"division_code":"AcmeCA","division_name":"Acme California","parent_code":null,"company_name":"Acme Calif Division","address":{"address_1":"100 Oak Ave","address_2":null,"postal_code":"89001","city":"San Diego","province":"CA","country":"US"}}],"merchant_accounts":[{"token":"MA28S4KCJLAJ","acceptable_cards":["master","visa","american_express","discover"],"deposit_accounts":[{"purpose":"primary","deposit_account_routing_number":"678","deposit_account_masked_number":"XX7888","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"64984fa69d3aaeb30f77407bb08ada8e6dcfcf41"},{"purpose":"fees","deposit_account_routing_number":"555","deposit_account_masked_number":"XX5555","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"64984fa69d3aaeb30f77407bb08ada8e6dcfcf55"}],"currency":"usd","deposit_account_routing_number":"031201360","nickname":"settlement","gl_account":null,"reference_token":"1234321:2024-09-01T08:27:45","mid":null,"tid":null,"is_default":true,"deposit_account_masked_number":"XXX4567","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"cb0f864628972ad90dc08ed44e1099c7005936ca"},{"token":"MA7NLMGDG9F4","acceptable_cards":["master","visa","american_express","discover"],"deposit_accounts":[{"purpose":"primary","deposit_account_routing_number":"678","deposit_account_masked_number":"XX7888","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"64984fa69d3aaeb30f77407bb08ada8e6dcfcf41"},{"purpose":"fees","deposit_account_routing_number":"555","deposit_account_masked_number":"XX5555","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"64984fa69d3aaeb30f77407bb08ada8e6dcfcf55"}],"currency":"usd","deposit_account_routing_number":"031201360","nickname":"settlement-2","gl_account":null,"reference_token":"1234321:2024-09-02T06:14:33","mid":null,"tid":null,"is_default":true,"deposit_account_masked_number":"XXX4568","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"52dfefa6082a07eb1689b40b99686690d1995e58"},{"token":"MA1F8B2E87AM","acceptable_cards":["master","visa","american_express","discover"],"deposit_accounts":[{"purpose":"primary","deposit_account_routing_number":"678","deposit_account_masked_number":"XX7888","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"64984fa69d3aaeb30f77407bb08ada8e6dcfcf41"},{"purpose":"fees","deposit_account_routing_number":"555","deposit_account_masked_number":"XX5555","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"64984fa69d3aaeb30f77407bb08ada8e6dcfcf55"}],"currency":"usd","deposit_account_routing_number":null,"nickname":null,"gl_account":null,"reference_token":null,"mid":null,"tid":null,"is_default":false,"deposit_account_masked_number":"","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709"}],"settlement_bank_accounts":[{"routing_number":"122105278","token":"BA9DZBGGJGY1","account_type":"checking","currency":"usd","nickname":null,"reference_token":"1234321:2024-09-01T08:27:45","masked_account_number":"XXXXX6789","routing_account_hash_function":"sha-1","routing_account_hash":"95d63eb2e03b71d1971884ec9678bcf74623b2bf","is_default":true,"address":{"address_1":"","address_2":"","city":"","province":null,"postal_code":"","country":"US"}},{"routing_number":"122000247","token":"BA7QBIQMUMQB","account_type":"checking","currency":"usd","nickname":null,"reference_token":"1234321:2024-09-02T06:14:33","masked_account_number":"XXXXXX1152","routing_account_hash_function":"sha-1","routing_account_hash":"384516d914a878c8280b132d22e567dc64e67676","is_default":false,"address":{"address_1":"","address_2":"","city":"","province":null,"postal_code":"","country":"US"}},{"routing_number":"999999999","token":"BA9K62MMRTSS","account_type":"checking","currency":"usd","nickname":null,"reference_token":null,"masked_account_number":"XXXXX9999","routing_account_hash_function":"sha-1","routing_account_hash":"6cbe786bc66848acf8a3e539e0899809059af8a5","is_default":false,"address":{"address_1":"501 S 8th St","address_2":"","city":"Minneapolis","province":"MN","postal_code":"55404","country":"US"}}],"terminal_processors":[{"currency":"usd","token":"POS47JAV3VDE","deposit_account_routing_number":"00351234","nickname":"usdnick","gl_account":"76001","mid":"1452323678","tid":"4","is_default":true,"deposit_account_masked_number":"XXXX4567","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709"},{"currency":"cad","token":"POS47JAV7TGU","deposit_account_routing_number":"00354321","nickname":"cadnick","gl_account":"76003","mid":"1452343565","tid":"7","is_default":true,"deposit_account_masked_number":"XXXX9876","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"eced46533e6abaa907cd125fb91dcf76026fa02c"},{"currency":"eur","token":"POS6RPXDYYYU","deposit_account_routing_number":"000000000","nickname":"eurnick","gl_account":"76002","mid":"1452343564","tid":"9","is_default":true,"deposit_account_masked_number":"XXXX5678","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":"a8105df0a9f85df19b125f4a8b4d4ea282f706af"}],"gift_cards":[{"currency":"eur","token":"GCP8IGHJIWM8","deposit_account_routing_number":"000000000","nickname":"","gl_account":"","mid":"","tid":"","is_default":true,"deposit_account_masked_number":"","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":""},{"currency":"usd","token":"GCP2I57ZLEDY","deposit_account_routing_number":"","nickname":"","gl_account":"","mid":"","tid":"","is_default":true,"deposit_account_masked_number":"","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":""},{"currency":"cad","token":"GCP2I57Z3ZSB","deposit_account_routing_number":"","nickname":"","gl_account":"","mid":"","tid":"","is_default":true,"deposit_account_masked_number":"","deposit_routing_account_hash_function":"sha-1","deposit_routing_account_hash":""}],"autopay_api_enabled":false,"arc_payment_match_mode":"off","erp_payment_match_mode":"on","external_payment_match_mode":"off","erp_payment_auto_match_mode":false,"external_payment_auto_match_mode":false}}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}},"/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\n","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","r

# --- truncated at 32 KB (326 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/versapay/refs/heads/main/openapi/versapay-api-reference.json