Download OpenAPI specification:Download
The Versapay API offers operations in support of its flagship products:
Collaborative AR (formerly ARC) - accounts receivable platform with automated invoicing, effective collaboration, flexible payments and cash application to improve efficiency and customer relationships.
Importing & exporting customers, invoices, and payments.
Monitoring file based imports/batches.
Importing & exporting orders and processing order based payment transactions.
Ecommerce integrations.
PayPort - cloud based platform to electronically push and pull funds across the EFT / ACH network.
Moving funds using transactions and pre-authorized debit agreements.
A secure hosted checkout for accepting payments through your website or email.
Please contact us at support@versapay.com for support & setup of A/R invoicing integration, hosted checkout, and/or payment acceptance.
The current API version is Versapay API Reference (1.3.31)
.
Versapay commits to maintaining backward compatibility and existing API endpoints with each released version updating existing endpoints and/or introducing new endpoints.
Should 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.
The UAT environment is a useful sandbox for integration testing where transaction settlements are simulated using test account numbers and test dollar amounts.
https://uat.versapay.com
Once 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.
https://secure.versapay.com
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.
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.
You can generate/disable your API credentials as often as necessary for security reasons.
If 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.
API requests are authenticated using API Token & Key
via HTTPS Basic Access Authentication.
Security Scheme Type | HTTPS |
---|---|
HTTPS Authorization Scheme | basic |
Simply provide the API Token & Key
values as the user
and password
parameters, using cURL for instance:
curl -u "Nvax...:UN0I..." -X POST https://secure.versapay.com/api/...
Alternatively, API requests can also be authenticated using JWT Token
via HTTPS Bearer Authentication.
Security Scheme Type | HTTPS |
---|---|
HTTP Authorization Scheme | bearer JWT |
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
Simply provide the JWT Token
in the authorization header, using cURL for instance:
curl -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbiI6Im54eDFaSjgzeXRNNmhtb3NGVExCIiwiZXhwIjoxNzEyOTU5NDA5fQ.adV6U1vW69Ypskt61uPL8hZ-4muvtM4FLM48QN6iCc4" -X POST https://secure.versapay.com/api/...
Lists key account profile settings configured for the authenticated account
options[jwt_expiry] | integer Number of days (1-365) until JWT expiration, default 30. |
Successful Operation
Unauthorized
Production
UAT
{- "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"
], - "currency": "usd",
- "deposit_account_routing_number": "031201360",
- "nickname": "settlement",
- "gl_account": null,
- "reference_token": "1234321:2024-09-01T08:27:45",
- "mid": null,
- "tid": null,
- "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"
], - "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,
- "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"
], - "currency": "usd",
- "deposit_account_routing_number": null,
- "nickname": null,
- "gl_account": null,
- "reference_token": null,
- "mid": null,
- "tid": null,
- "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",
- "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",
- "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",
- "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",
- "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",
- "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",
- "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": "",
- "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": "",
- "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": "",
- "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
}
}
}
Versapay uses the Webhook pattern to POST updates to a HTTP (port 80) or HTTPS (port 443) URL you specify.
The 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.
A 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.
You can view details for the latest notifications sent to your application by visiting /developers/webhook_responses
in uat or production.
Webhooks can receive updates for the following PayPort
entities:
State updates of any Transaction created by your account or going to your account. The request parameters will contain the same attributes as returned by viewing a transaction via GET /api/transactions/{token}
.
State updates of any Debit Agreement created by your account or sent to your account. The request parameters will contain the same attributes as returned by viewing a debit agreement via GET /api/debit_agreements/{token}
.
Webhooks can receive updates for the following Collaborative AR
entities:
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}
.
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}
.
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}
.
Versapay will append a HMAC-SHA256 signature attribute to all webhook notifications. For instance:
POST http://your.domain.com/your/webhook/url
{
"to_account":"Example user",
"token":"5TH3ACC3AU21",
"transaction_reference":"",
"from_account":"First1 Last1",
"from_fund":"THE TORONTO-DOMINION BANK",
"transaction_type":"send_money",
"amount_in_cents":500,
"type":"transaction",
"created_by_user":"699cMPe6BAyqvVsZA5mo",
"message":"",
"state":"completed",
"link_url":"",
"email":"user@example.com",
"signature":"USYpBfZFQQHa2%2BT6UtDPUVFfUPP0aobWpXe5DE9hPOY%3D%0A"
}
To verify the authenticity of received webhook notifications:
Generate a single line request string concatenated with new line from:
Calculate the HMAC-SHA256 of the single line string along using your Versapay signing key (which is displayed on your webhook account settings) and Base64 the result.
URL Encode the HMAC and compare to the value of the signature
attribute for a match.
# Example of HMAC-SHA256 signature calculation - using Rails/Sinatra our POST payload is accessible via params
require 'openssl'
require 'base64'
require 'erb'
webhook_url = 'http://your.domain.com/your/webhook/url';
webhook_signing_key = 'v7aJHjbbxASKiwDW5wq6';
original_signature = params.delete(:signature)
sorted_key_values = params.keys.sort.map{ |key| "#{key}#{params[key]}" }.join
request_string = "POST\n#{webhook_url}\n#{sorted_key_values}"
expected_signature = ERB::Util.url_encode( Base64.encode64( OpenSSL::HMAC.digest(
OpenSSL::Digest::SHA256.new, webhook_signing_key, request_string
) ) )
puts "\nexpected signature: #{expected_signature}"
puts "\noriginal signature: #{original_signature}"
puts "\nauthentic? #{expected_signature == original_signature}"
Versapay will send a HMAC-SHA256 signature attribute to all webhook notification request headers under the key X-Versapay-Signature
To verify the authenticity of received webhook notifications:
/* Example of HMAC-SHA256 signature calculation - using JavaScript/Express our POST payload is accessible via req.body */
const express = require('express');
const bodyParser = require('body-parser');
const crypto = require('crypto');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/webhook', (req, res) => {
let original_signature = req.headers['x-versapay-signature'];
let webhook_signing_key = 'v7aJHjbbxASKiwDW5wq6';
let raw_request_body = JSON.stringify(req.body);
let hmac = crypto.createHmac('sha256', webhook_signing_key).update(raw_request_body).digest('base64');
let expected_signature = encodeURIComponent(hmac + "\n")
console.log(`original signature: ${original_signature}`);
console.log(`expected signature: ${expected_signature}`);
console.log(`authentic? ${expected_signature === original_signature}`);
});
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.
They 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.
The watermark & limit are specified as part of the API call e.g. GET /api/exports/open_invoices?watermark=13207500&limit=5
The watermark is typically an 8-byte integer unless otherwise specified. The limit is an integer between 1 and 2500.
The general response structure of these API are an ordered hash of records, whose key/index is a watermark value.
The iteration pattern would be, for instance:
last_watermark = 0
json = GET /api/...?watermark={last_watermark}
for each watermark_key in json.keys
record = json[watermark_key]
last_watermark = watermark_key if watermark_key > last_watermark
Otherwise, an API response may be a flat array list, where the watermark value is a key in the array item record, just the same:
last_watermark = 0
json = GET /api/...?watermark={last_watermark}
for each record in json
watermark_key = record["watermark"]
last_watermark = watermark_key if watermark_key > last_watermark
The 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.
GET /api/exports/open_invoices
GET /api/exports/open_invoices?limit=2
GET /api/exports/open_invoices?watermark=13207500&limit=7
The flat array list response structure can be explicitly requested via list=true
URL argument.
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.
View the list of possible error response codes that may be returned as part of a response_code
key (and/or gateway_error_*
related keys) in Order Transactions API. For instance the following response payload highlights a 211
response code:
{
"success": false,
"transaction": "8ATB...586N",
"authorization": "5dl1...ady5",
"gateway_token": "71...77",
"order": "12345",
"wallet": "2ZW4...8Q6V",
"credit_card": "CC4X...WXGX",
"transactions": [
{
"token": "...",
"amount_in_cents": 13151,
"type": "transaction",
"transaction_type": "request_money",
"state": "declined",
"created_at": "2023-11-14T12:13:29-05:00",
"step_types": [
"TransactionSteps::CardSaleStep"
],
"action": "sale",
"payment_method": "credit_card",
"wallet": "2ZW4...8Q6V",
"credit_card": "CC4X...WXGX",
"settlement_token": "MA4P...LD5P",
"currency": "usd",
"approved_amount_cents": 0,
"fee_amount_cents": 0,
"fee_exempt": true,
"gateway_response": {...},
"gateway_token": "7126377",
"gateway_authorization_response": "520.014: INVALID ACCOUNT NUMBER",
"gateway_error_scope": "tpro4",
"gateway_error_code": "520.014",
"gateway_error_message": "INVALID ACCOUNT NUMBER",
"authorization_response": "500",
"avs_response": "Z",
"credit_card_bin": "410040",
"credit_card_masked_number": "XXXXXXXXXXXX9700",
"credit_card_brand": "visa",
"credit_card_expiry": "082026"
}
],
"response_code": 211
}
The /api/reference_data/v1/response_codes payload reports 211
as follows:
{
"code": 211,
"description": "Account number invalid"
}
Successful Operation
Production
UAT
[- {
- "code": 100,
- "description": "Approved"
}
]
View the Bank Identification Number (BIN) reference data, including bank names, phone number, URLs, country, brand and card types.
Successful Operation
Unauthorized
Production
UAT
[- {
- "bin": "411111",
- "phone": "503-685-4116",
- "type": "CREDIT",
- "country": "USA",
- "category": "PREPAID",
- "brand": "VISA",
- "bank": "BANK OF VERSAPAY"
}
]
View the Bank Identification Number (BIN) reference data for a given bin number, including bank names, phone number, URLs, and card types.
bin required | string (BankIdentificationNumber) [ 6 .. 8 ] characters ^\d{6,8}$ Example: 411111 Bank Identification Number. It has to have of at least 6 digits. |
Successful Operation
Unauthorized
Production
UAT
{- "bin": "411111",
- "phone": "503-685-4116",
- "type": "CREDIT",
- "country": "USA",
- "category": "PREPAID",
- "brand": "VISA",
- "bank": "BANK OF VERSAPAY"
}
Onboarding supports the automated process of applying for merchant services. Contact support@versapay.com for support & setup of supplier onboarding partner credentials.
The system will return the rates, terms, and conditions for merchant services
locale | string (Locale) ^[a-z]{2}-[a-z]{2}$ Example: locale=en-us pass an optional country and language |
terms parameters
bad input parameter
Production
UAT
{- "rates": [
- {
- "description": "Versapay Payment Services",
- "currency_code": "usd",
- "monthly_account_fees": {
- "per_month_amount": 5.05
}, - "payment_methods": [
- {
- "description": "Credit Card",
- "per_transaction_amount": 5.05,
- "per_transaction_percent": 5.05,
- "per_month_amount": 5.05
}
]
}
], - "terms_and_conditions": {
- "terms_and_conditions_text": "This Merchant Services Agreement (this \"Agreement\") is entered into between..."
}, - "ranges": {
- "currency_code": "usd",
- "annual_volumes": [
- {
- "from": 1000000,
- "to": 1999999
}
], - "average_ticket_amounts": [
- {
- "from": 1000000,
- "to": 1999999
}
], - "high_ticket_amounts": [
- {
- "from": 1000000,
- "to": 1999999
}
]
}
}
Adds an application to the system
Inventory item to add
business_legal_name required | string (BusinessName) |
business_dba_name required | string (BusinessName) |
business_tax_id_number required | object (BusinessTaxIdentifier) |
business_physical_address required | object (Address) |
business_billing_address required | object (Address) |
ownership_type required | string (OwnershipType) Enum: "Financial Institution" "Government" "LLC" "Non-Profit" "Partnership/Gen. Ltd." "Private Corporation" "Public Corporation" "SEC Regulated Corporation" "Sole Proprietorship" "Trust" |
stock_ticker_symbol | string (StockTickerSymbol) required only if ownership_type = "Public Corporation", must be <= 10 characters |
business_type required | string (BusinessType) Enum: "AutoRental" "MOTO" "ECommerce" "Restaurant" "Lodging" "Retail" |
naics_code required | string (NAICSCode) ^[0-9]{6}$ |
business_phone required | string (Phone) cannot begin with 1 or 0 |
business_email required | string <email> (Email) |
business_website required | string <url> (URL) |
business_established_date required | string <date> (Date) |
annual_card_volume required | object (Range) |
annual_direct_debit_volume required | object (RangeAnualDirectDebitVolume) |
average_ticket_amount required | object (RangeAverageTicketAmount) |
high_ticket_amount required | object (RangeHightTicketAmount) |
american_express_service_establishment required | object (ServiceEstablishment) |
business_owners | Array of objects (BusinessOwners) <= 4 items |
non_business_owner_control_prong | object (NonBusinessOwnerControlProng) This is a required object when the control_prong is set to Non-Owner |
primary_contact required | object (ApplicationContact) |
control_prong required | string (ControlProng) Enum: "Owner 1" "Owner 2" "Owner 3" "Owner 4" "Non-Owner" |
deposit_account required | object (DDA) |
reference_token required | string <guid> (ReferenceToken) <= 36 characters Specify a unique GUID as a client reference to the application |
sells_prohibited_products required | boolean (Boolean) |
agrees_terms_and_conditions required | boolean (Boolean) |
terms_and_conditions required | object (TermsAndConditions) |
supporting_documents | Array of objects (Documents) |
locale | string (Locale) ^[a-z]{2}-[a-z]{2}$ |
external_link | string (ExternalLink) An external reference provided by the the ERP/partner originating the merchant application associated with this supplier |
link_to_existing | string (LinkToExisting) Must match the value of an existing application entry that has previously been submitted |
application created
invalid input, object invalid
an existing item already exists
Production
UAT
{- "business_legal_name": "Acme Corporation",
- "business_dba_name": "Acme Corporation",
- "business_tax_id_number": {
- "tin": "77-7654567",
- "override_validation": true
}, - "business_physical_address": {
- "address1": "1314 NW GLISAN ST",
- "address2": "Apartment 1",
- "city": "Portland",
- "state_province": "OR",
- "post_code": "97209",
- "country": "us",
- "override_validation": true
}, - "business_billing_address": {
- "address1": "1314 NW GLISAN ST",
- "address2": "Apartment 1",
- "city": "Portland",
- "state_province": "OR",
- "post_code": "97209",
- "country": "us",
- "override_validation": true
}, - "ownership_type": "Limited Liability Company",
- "stock_ticker_symbol": "EXMPL",
- "business_type": "Restaurant",
- "naics_code": "221111",
- "business_phone": "503-685-4116",
- "business_email": "me@example.com",
- "business_established_date": "2022-01-15",
- "annual_card_volume": {
- "from": 1000000,
- "to": 1999999
}, - "annual_direct_debit_volume": {
- "from": 500000,
- "to": 999999
}, - "average_ticket_amount": {
- "from": 100,
- "to": 249
}, - "high_ticket_amount": {
- "from": 1000,
- "to": 4999
}, - "american_express_service_establishment": {
- "over_se_minimum": false,
- "se_number": "123456789"
}, - "business_owners": [
- {
- "name": {
- "first_name": "Alice",
- "middle_initial": "B",
- "last_name": "Smith",
- "title": "CFO"
}, - "ownership_percentage": 25,
- "individual_tax_id_number": {
- "itin": "325-98-1975",
- "override_validation": true
}, - "birth_date": "1972-01-15",
- "home_address": {
- "address1": "1314 NW GLISAN ST",
- "address2": "Apartment 1",
- "city": "Portland",
- "state_province": "OR",
- "post_code": "97209",
- "country": "us",
- "override_validation": true
}, - "home_phone": "503-685-4116",
- "email": "me@example.com"
}
], - "non_business_owner_control_prong": {
- "name": {
- "first_name": "Alice",
- "middle_initial": "B",
- "last_name": "Smith",
- "title": "CFO"
}, - "individual_tax_id_number": {
- "itin": "325-98-1975",
- "override_validation": true
}, - "birth_date": "2022-01-15",
- "home_address": {
- "address1": "1314 NW GLISAN ST",
- "address2": "Apartment 1",
- "city": "Portland",
- "state_province": "OR",
- "post_code": "97209",
- "country": "us",
- "override_validation": true
}, - "home_phone": "503-685-4116",
- "email": "me@example.com"
}, - "primary_contact": {
- "name": {
- "first_name": "Alice",
- "middle_initial": "B",
- "last_name": "Smith",
- "title": "CFO"
}, - "phone": "503-685-4116",
- "email": "me@example.com"
}, - "control_prong": "Non-Owner",
- "deposit_account": {
- "routing_number": "021100361",
- "account_number": "9876543299"
}, - "reference_token": "1c47dece-489b-4521-89db-0a940ac58235",
- "sells_prohibited_products": false,
- "agrees_terms_and_conditions": false,
- "terms_and_conditions": {
- "terms_and_conditions_text": "This Merchant Services Agreement (this \"Agreement\") is entered into between..."
}, - "supporting_documents": [
- {
- "filename": "example.pdf",
- "base64": "ZXhhbXBsZQ==",
- "type": "Bank Statement"
}
], - "locale": "en-us",
- "external_link": "xyz123abc789",
- "link_to_existing": "1cb9ca4b-6596-4bac-a24b-8864222cf95d"
}
{- "application_token": "1c47dece-489b-4521-89db-0a940ac58235"
}
Get the status of an existing application
id required | string <guid> (ApplicationToken) Example: 1c47dece-489b-4521-89db-0a940ac58235 Application Token |
application status
application not found
Production
UAT
{- "application_status": "Received",
- "api_credentials": {
- "api_token": "6ySjc8LfeRwqciWK8owT",
- "api_key": "Bl5cgjTnysXxyNyysXiw"
}
}
Find the application token of an existing applications using the reference token supplied during the create application process
id required | string <guid> (ReferenceToken) <= 36 characters Example: 1c47dece-489b-4521-89db-0a940ac58235 Reference Token |
application token
application not found
Production
UAT
{- "application_token": "1c47dece-489b-4521-89db-0a940ac58235"
}
Record a completed step of the merchant application process as an integer value. A value of 99 indicates the submission of the full application.
reference_token required | string <guid> <= 36 characters Specify a unique GUID as a client reference to the application. This same reference_token is used for all steps of the same application. |
step_number required | integer Use values 1,2,3… to indicate steps of the process; 99 indicates the final step of the application |
message required | string <= 255 characters Description of the step |
Created (record was inserted successfully)
Bad Request
Unauthorized
Production
UAT
{- "reference_token": "7654321:2023-10-04T14:52:37",
- "step_number": "1",
- "message": "Step 1 Completed"
}
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.
In 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.
For more information see Ecommerce API.
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.
Create an order.
The set of attributes to send in the request body may vary based on the account configuration. Please contact the implementation specialist for more information.
Order.
watermark | integer <int64> (Watermark) |
identifier | string order identifier, this may be imported or if not provided it will be generated by cds |
number | string Order number, may be unique within supplier., supplied by client. |
currency | string Currency code, based on ISO-4217. E.g. |
amount_cents | integer amount of order in cents. |
date | string order date |
billing_name | string The billing addressee |
billing_address | string The first line of the billing street address |
billing_address2 | string The second line of the billing street address |
billing_city | string The billing city |
billing_country | string The 3-character alphabetic ISO billing country code |
billing_email | string The billing email address associated with the addressee |
billing_telephone | string The billing phone number associated with the addressee |
billing_postalcode | string The billing post code or ZIP code |
billing_state_province | string The billing state or province |
shipping_name | string The shipping addressee |
shipping_address | string The first line of the shipping street address |
shipping_address2 | string The second line of the shipping street address |
shipping_city | string The shipping city |
shipping_country | string The 3-character alphabetic ISO shipping country code |
shipping_email | string The shipping email address associated with the addressee |
shipping_telephone | string The shipping phone number associated with the addressee |
shipping_postalcode | string The shipping post code or ZIP code |
shipping_state_province | string The shipping state or province |
customer_identifier | string customer identifier, if it was imported |
draft | boolean if true order is a draft else can be published |
settlement_token | string A settlement token reference (see whoami response structure) representing the merchant/bank processor configuration that should be used for transaction settlement. |
attributes | object array of key pair items. |
order_items | Array of objects (OrderItem) |
transactions | Array of objects (OrderTransaction) |
Created, a JSON showing Order, OrderItems
Unauthorized
Precondition Failed
Production
UAT
{- "watermark": 1,
- "identifier": "ABCDF",
- "number": "sh763-h3454-dh3432",
- "amount_cents": 20000,
- "currency": "cad",
- "date": "2020-11-01",
- "shipping_name": "Acme Inc.",
- "shipping_address": "123 First Lane",
- "shipping_address2": "Suite 600",
- "shipping_city": "New York",
- "shipping_state_province": "NY",
- "shipping_country": "USA",
- "shipping_email": "acme@gmail.com",
- "shipping_telephone": "555-555-5555",
- "shipping_postalcode": "90210",
- "billing_name": "Acme Inc.",
- "billing_address": "123 First Lane",
- "billing_address2": "Suite 600",
- "billing_city": "New York",
- "billing_state_province": "NY",
- "billing_country": "USA",
- "billing_email": "acme@gmail.com",
- "billing_telephone": "555-555-5555",
- "billing_postalcode": "90210",
- "order_att1": "att1value1",
- "order_att2": "att1value2",
- "customer_identifier": "123",
- "draft": false,
- "order_items": [
- {
- "number": "1",
- "amount_cents": 10000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 10000,
- "tax_amount_cents": 100,
- "discount_amount_cents": 0,
- "orderitem_attr1": "1111111",
- "orderitem2_attr2": "222222"
}, - {
- "number": "2",
- "amount_cents": 20000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 20000,
- "tax_amount_cents": 200,
- "discount_amount_cents": 0,
- "orderitem_attr1": "32222222",
- "orderitem2_attr2": "422222"
}
], - "transactions": [ ]
}
{- "message": "1 order 1 order item(s)",
- "identifier": "ABCD",
- "order": {
- "watermark": 1,
- "identifier": "ABCDF",
- "number": "sh763-h3454-dh3432",
- "amount_cents": 20000,
- "currency": "cad",
- "date": "2020-11-01",
- "shipping_name": "Acme Inc.",
- "shipping_address": "123 First Lane",
- "shipping_address2": "Suite 600",
- "shipping_city": "New York",
- "shipping_state_province": "NY",
- "shipping_country": "USA",
- "shipping_email": "acme@gmail.com",
- "shipping_telephone": "555-555-5555",
- "shipping_postalcode": "90210",
- "billing_name": "Acme Inc.",
- "billing_address": "123 First Lane",
- "billing_address2": "Suite 600",
- "billing_city": "New York",
- "billing_state_province": "NY",
- "billing_country": "USA",
- "billing_email": "acme@gmail.com",
- "billing_telephone": "555-555-5555",
- "billing_postalcode": "90210",
- "order_att1": "att1value1",
- "order_att2": "att1value2",
- "customer_identifier": "123",
- "draft": false,
- "order_items": [
- {
- "number": "1",
- "amount_cents": 10000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 10000,
- "tax_amount_cents": 100,
- "discount_amount_cents": 0,
- "orderitem_attr1": "1111111",
- "orderitem2_attr2": "222222"
}, - {
- "number": "2",
- "amount_cents": 20000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 20000,
- "tax_amount_cents": 200,
- "discount_amount_cents": 0,
- "orderitem_attr1": "32222222",
- "orderitem2_attr2": "422222"
}
], - "transactions": [ ]
}
}
Updates an order identified by its "identifier".
The set of attributes to send in the request body may vary based on the account configuration. Please contact the implementation specialist for more information.
Order.
watermark | integer <int64> (Watermark) |
identifier | string order identifier, this may be imported or if not provided it will be generated by cds |
number | string Order number, may be unique within supplier., supplied by client. |
currency | string Currency code, based on ISO-4217. E.g. |
amount_cents | integer amount of order in cents. |
date | string order date |
billing_name | string The billing addressee |
billing_address | string The first line of the billing street address |
billing_address2 | string The second line of the billing street address |
billing_city | string The billing city |
billing_country | string The 3-character alphabetic ISO billing country code |
billing_email | string The billing email address associated with the addressee |
billing_telephone | string The billing phone number associated with the addressee |
billing_postalcode | string The billing post code or ZIP code |
billing_state_province | string The billing state or province |
shipping_name | string The shipping addressee |
shipping_address | string The first line of the shipping street address |
shipping_address2 | string The second line of the shipping street address |
shipping_city | string The shipping city |
shipping_country | string The 3-character alphabetic ISO shipping country code |
shipping_email | string The shipping email address associated with the addressee |
shipping_telephone | string The shipping phone number associated with the addressee |
shipping_postalcode | string The shipping post code or ZIP code |
shipping_state_province | string The shipping state or province |
customer_identifier | string customer identifier, if it was imported |
draft | boolean if true order is a draft else can be published |
settlement_token | string A settlement token reference (see whoami response structure) representing the merchant/bank processor configuration that should be used for transaction settlement. |
attributes | object array of key pair items. |
order_items | Array of objects (OrderItem) |
transactions | Array of objects (OrderTransaction) |
Created, a JSON showing Order, OrderItems
Unauthorized
Precondition Failed
Production
UAT
{- "watermark": 1,
- "identifier": "ABCDF",
- "number": "sh763-h3454-dh3432",
- "amount_cents": 20000,
- "currency": "cad",
- "date": "2020-11-01",
- "shipping_name": "Acme Inc.",
- "shipping_address": "123 First Lane",
- "shipping_address2": "Suite 600",
- "shipping_city": "New York",
- "shipping_state_province": "NY",
- "shipping_country": "USA",
- "shipping_email": "acme@gmail.com",
- "shipping_telephone": "555-555-5555",
- "shipping_postalcode": "90210",
- "billing_name": "Acme Inc.",
- "billing_address": "123 First Lane",
- "billing_address2": "Suite 600",
- "billing_city": "New York",
- "billing_state_province": "NY",
- "billing_country": "USA",
- "billing_email": "acme@gmail.com",
- "billing_telephone": "555-555-5555",
- "billing_postalcode": "90210",
- "order_att1": "att1value1",
- "order_att2": "att1value2",
- "customer_identifier": "123",
- "draft": false,
- "order_items": [
- {
- "number": "1",
- "amount_cents": 10000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 10000,
- "tax_amount_cents": 100,
- "discount_amount_cents": 0,
- "orderitem_attr1": "1111111",
- "orderitem2_attr2": "222222"
}, - {
- "number": "2",
- "amount_cents": 20000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 20000,
- "tax_amount_cents": 200,
- "discount_amount_cents": 0,
- "orderitem_attr1": "32222222",
- "orderitem2_attr2": "422222"
}
], - "transactions": [ ]
}
{- "message": "1 order 1 order item(s)",
- "identifier": "ABCD",
- "order": {
- "watermark": 1,
- "identifier": "ABCDF",
- "number": "sh763-h3454-dh3432",
- "amount_cents": 20000,
- "currency": "cad",
- "date": "2020-11-01",
- "shipping_name": "Acme Inc.",
- "shipping_address": "123 First Lane",
- "shipping_address2": "Suite 600",
- "shipping_city": "New York",
- "shipping_state_province": "NY",
- "shipping_country": "USA",
- "shipping_email": "acme@gmail.com",
- "shipping_telephone": "555-555-5555",
- "shipping_postalcode": "90210",
- "billing_name": "Acme Inc.",
- "billing_address": "123 First Lane",
- "billing_address2": "Suite 600",
- "billing_city": "New York",
- "billing_state_province": "NY",
- "billing_country": "USA",
- "billing_email": "acme@gmail.com",
- "billing_telephone": "555-555-5555",
- "billing_postalcode": "90210",
- "order_att1": "att1value1",
- "order_att2": "att1value2",
- "customer_identifier": "123",
- "draft": false,
- "order_items": [
- {
- "number": "1",
- "amount_cents": 10000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 10000,
- "tax_amount_cents": 100,
- "discount_amount_cents": 0,
- "orderitem_attr1": "1111111",
- "orderitem2_attr2": "222222"
}, - {
- "number": "2",
- "amount_cents": 20000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 20000,
- "tax_amount_cents": 200,
- "discount_amount_cents": 0,
- "orderitem_attr1": "32222222",
- "orderitem2_attr2": "422222"
}
], - "transactions": [ ]
}
}
Orders that have been created since watermark, limited to 100 records at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for subsequent calls.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "orders": {
- "6": { },
- "7": { }
}
}
Orders that have been published (excluding draft orders) since watermark, limited to 100 records at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for subsequent calls.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
options[extended_attributes] | string When this option (options[extended_attributes][key1]=value1) is present, e.g options[extended_attributes][ecommerce_indicator]=true then only published matching('ecommerce_indicator=true') orders are returned in the result. |
Successful Operation
Unauthorized
Production
UAT
{- "orders": {
- "6": { },
- "7": { }
}
}
View an order and its item details.
The path parameter identifier
is matched to the order's identifier.
Successful Operation
Unauthorized
Production
UAT
{- "watermark": 1,
- "identifier": "ABCDF",
- "number": "sh763-h3454-dh3432",
- "amount_cents": 20000,
- "currency": "cad",
- "date": "2020-11-01",
- "shipping_name": "Acme Inc.",
- "shipping_address": "123 First Lane",
- "shipping_address2": "Suite 600",
- "shipping_city": "New York",
- "shipping_state_province": "NY",
- "shipping_country": "USA",
- "shipping_email": "acme@gmail.com",
- "shipping_telephone": "555-555-5555",
- "shipping_postalcode": "90210",
- "billing_name": "Acme Inc.",
- "billing_address": "123 First Lane",
- "billing_address2": "Suite 600",
- "billing_city": "New York",
- "billing_state_province": "NY",
- "billing_country": "USA",
- "billing_email": "acme@gmail.com",
- "billing_telephone": "555-555-5555",
- "billing_postalcode": "90210",
- "order_att1": "att1value1",
- "order_att2": "att1value2",
- "customer_identifier": "123",
- "draft": false,
- "order_items": [
- {
- "number": "1",
- "amount_cents": 10000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 10000,
- "tax_amount_cents": 100,
- "discount_amount_cents": 0,
- "orderitem_attr1": "1111111",
- "orderitem2_attr2": "222222"
}, - {
- "number": "2",
- "amount_cents": 20000,
- "description": "description",
- "product_code": "product_code",
- "category": "category",
- "quantity": 1,
- "unit_cost_cents": 20000,
- "tax_amount_cents": 200,
- "discount_amount_cents": 0,
- "orderitem_attr1": "32222222",
- "orderitem2_attr2": "422222"
}
], - "transactions": [ ]
}
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.
There 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.
ACH 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.
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.
Card 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.
A Verify transaction serves two purposes. First, it attempts to validate the provided credit card or bank account information. In the case of credit card Verify transactions, the gateway will run a verification transaction to allow the card issuer to confirm that the account is in good standing and that the provided billing address and card verification value (CVV) is correct. In the case of bank accounts, the gateway may attempt to use a negative database of known bad bank accounts or use other fraud protection tools to confirm the validity of the bank account. Second, the Verify transaction returns a token that is safe for the payment application to store and can be used for future transactions without needing to provide the sensitive account information (this effectively equates to having built a Wallet, see the Wallet API section).
order | object An order object or a token reference to an existing order |
contact | object (WalletContact) Billing contact |
fund_token | string A token reference to an existing fund (either credit card or bank account) |
fee_exempt | boolean True indicates that any fee related surcharging should be ignored even if the underlying merchant account is configured as such, false inherits any configured fee related behaviour |
transaction_reference | string Nullable Extra useful data to help link transactions to other systems e.g. PO numbers, account numbers etc. |
device | string Optional device name depending on gateway boarding & configuration |
industry | string Enum: "directmarketing" "ecommerce" "lodging" "restaurant" "autorental" "retail" Optional, if not provided defaults to value specified in gateway/account configuration |
sec_code | string Enum: "CCD" "PPD" "WEB" "POP" "TEL" Optional, for ACH bank transactions, standard entry class code (if not provided defaults to value specified on payment acceptance config; otherwise defaults to PPD if transaction from bank account check_type is personal & CCD if check_type is business) |
credit_card | object (WalletCreditCard) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccount) Alternative to fund_token, a bank account object or token reference to an existing credit card |
gift_card | object Alternative to fund_token, a gift card |
200 response
500 error response
Production
UAT
{- "order": "3SLSC9HX3AHB",
- "amount_cents": 4200,
- "fund_token": "CC98U7LI8H91"
}
{- "success": true,
- "transaction": "1TQ7L54E5L9R",
- "order": "53HP8ILUK3E8",
- "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "transactions": [
- {
- "token": "1TQ7L54E5L9R",
- "amount_in_cents": 100,
- "message": null,
- "link_url": null,
- "type": "transaction",
- "transaction_type": "request_money",
- "email": "customer+abcmedia@versapay.com",
- "state": "completed",
- "transaction_reference": null,
- "unique_reference": null,
- "from_account": "avscvv2b Test",
- "to_account": "ABC Media",
- "process_on": null,
- "created_by_user": "zoM2xjrzczmgbbGhfHFh",
- "auto_withdraw": false,
- "auto_withdrawal_token": null,
- "action": "verify",
- "payment_method": "credit_card",
- "settlement_token": "MAY7USR7KABC",
- "currency": "usd",
- "step_types": [
- "TransactionSteps::CardVerifyStep"
], - "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "approved_amount_cents": 100,
- "gateway_response": {
- "token": "msjhrhcfbily",
- "gateway_token": "39052",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "gateway_response": {
- "response": {
- "authentication": {
- "responsestatus": "success",
- "sessionid": "DH6rQ0CRxuScK9ZDJjcuhXBodyadb^ae"
}, - "content": {
- "refname": "90144",
- "update": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}
], - "create": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "success",
- "id": "10485",
- "name": "avs_cvv2b Test"
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "success",
- "id": "11611"
}
}, - {
- "salesdocument": {
- "refname": "invoice",
- "responsestatus": "success",
- "id": "34054"
}
}, - {
- "transaction": {
- "refname": "0d18e9e7-f7f6-4ee8-a1f9-6a78219bca01",
- "responsestatus": "success",
- "authorizationcode": "280278",
- "avsresponse": "A",
- "cvvresponse": "N",
- "authorizationresponse": "APPROVAL",
- "id": "39052",
- "hash": "######1111",
- "cardtype.name": "Visa",
- "accountholder": "avs_cvv2b Test",
- "amount": "0.00",
- "account.id": "2013",
- "token": "c500f04b-a61c-44bd-be03-2c3a423cbbaf"
}
}
]
}
}
}, - "credit_card": {
- "token": "qw288x8dmx00"
}
}
}
]
}
A Sale transaction is a request to initiate the transfer of funds from the buyer to the supplier. For credit card payments, the gateway will first authorize the transaction before adding the transaction to the settlement batch for capture at the end of the processing day. For ACH payments, the gateway will accept the sale request and add the transaction to the batch.
order | object An order object or a token reference to an existing order |
contact | object (WalletContact) Billing contact |
fund_token | string A token reference to an existing fund (either credit card or bank account) |
fee_exempt | boolean True indicates that any fee related surcharging should be ignored even if the underlying merchant account is configured as such, false inherits any configured fee related behaviour |
transaction_reference | string Nullable Extra useful data to help link transactions to other systems e.g. PO numbers, account numbers etc. |
device | string Optional device name depending on gateway boarding & configuration |
industry | string Enum: "directmarketing" "ecommerce" "lodging" "restaurant" "autorental" "retail" Optional, if not provided defaults to value specified in gateway/account configuration |
sec_code | string Enum: "CCD" "PPD" "WEB" "POP" "TEL" Optional, for ACH bank transactions, standard entry class code (if not provided defaults to value specified on payment acceptance config; otherwise defaults to PPD if transaction from bank account check_type is personal & CCD if check_type is business) |
credit_card | object (WalletCreditCard) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccount) Alternative to fund_token, a bank account object or token reference to an existing credit card |
gift_card | object Alternative to fund_token, a gift card |
200 response
500 error response
Production
UAT
{- "order": "3SLSC9HX3AHB",
- "amount_cents": 4200,
- "fund_token": "CC98U7LI8H91"
}
{- "success": true,
- "transaction": "1TQ7L54E5L9R",
- "order": "53HP8ILUK3E8",
- "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "transactions": [
- {
- "token": "1TQ7L54E5L9R",
- "amount_in_cents": 100,
- "message": null,
- "link_url": null,
- "type": "transaction",
- "transaction_type": "request_money",
- "email": "customer+abcmedia@versapay.com",
- "state": "completed",
- "transaction_reference": null,
- "unique_reference": null,
- "from_account": "avscvv2b Test",
- "to_account": "ABC Media",
- "process_on": null,
- "created_by_user": "zoM2xjrzczmgbbGhfHFh",
- "auto_withdraw": false,
- "auto_withdrawal_token": null,
- "action": "verify",
- "payment_method": "credit_card",
- "settlement_token": "MAY7USR7KABC",
- "currency": "usd",
- "step_types": [
- "TransactionSteps::CardVerifyStep"
], - "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "approved_amount_cents": 100,
- "gateway_response": {
- "token": "msjhrhcfbily",
- "gateway_token": "39052",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "gateway_response": {
- "response": {
- "authentication": {
- "responsestatus": "success",
- "sessionid": "DH6rQ0CRxuScK9ZDJjcuhXBodyadb^ae"
}, - "content": {
- "refname": "90144",
- "update": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}
], - "create": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "success",
- "id": "10485",
- "name": "avs_cvv2b Test"
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "success",
- "id": "11611"
}
}, - {
- "salesdocument": {
- "refname": "invoice",
- "responsestatus": "success",
- "id": "34054"
}
}, - {
- "transaction": {
- "refname": "0d18e9e7-f7f6-4ee8-a1f9-6a78219bca01",
- "responsestatus": "success",
- "authorizationcode": "280278",
- "avsresponse": "A",
- "cvvresponse": "N",
- "authorizationresponse": "APPROVAL",
- "id": "39052",
- "hash": "######1111",
- "cardtype.name": "Visa",
- "accountholder": "avs_cvv2b Test",
- "amount": "0.00",
- "account.id": "2013",
- "token": "c500f04b-a61c-44bd-be03-2c3a423cbbaf"
}
}
]
}
}
}, - "credit_card": {
- "token": "qw288x8dmx00"
}
}
}
]
}
A Credit transaction is a request to initiate the transfer of funds from the supplier back to the buyer and is the opposite of a sale. For credit card payments, the gateway will first authorize the return transaction before adding the transaction to the settlement batch for transmission at the end of the processing day. For ACH payments, the gateway will accept the credit request and add the transaction to the batch.
order | object An order object or a token reference to an existing order |
contact | object (WalletContact) Billing contact |
fund_token | string A token reference to an existing fund (either credit card or bank account) |
fee_exempt | boolean True indicates that any fee related surcharging should be ignored even if the underlying merchant account is configured as such, false inherits any configured fee related behaviour |
transaction_reference | string Nullable Extra useful data to help link transactions to other systems e.g. PO numbers, account numbers etc. |
device | string Optional device name depending on gateway boarding & configuration |
industry | string Enum: "directmarketing" "ecommerce" "lodging" "restaurant" "autorental" "retail" Optional, if not provided defaults to value specified in gateway/account configuration |
sec_code | string Enum: "CCD" "PPD" "WEB" "POP" "TEL" Optional, for ACH bank transactions, standard entry class code (if not provided defaults to value specified on payment acceptance config; otherwise defaults to PPD if transaction from bank account check_type is personal & CCD if check_type is business) |
credit_card | object (WalletCreditCard) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccount) Alternative to fund_token, a bank account object or token reference to an existing credit card |
gift_card | object Alternative to fund_token, a gift card |
200 response
500 error response
Production
UAT
{- "order": "3SLSC9HX3AHB",
- "amount_cents": 4200,
- "fund_token": "CC98U7LI8H91"
}
{- "success": true,
- "transaction": "1TQ7L54E5L9R",
- "order": "53HP8ILUK3E8",
- "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "transactions": [
- {
- "token": "1TQ7L54E5L9R",
- "amount_in_cents": 100,
- "message": null,
- "link_url": null,
- "type": "transaction",
- "transaction_type": "request_money",
- "email": "customer+abcmedia@versapay.com",
- "state": "completed",
- "transaction_reference": null,
- "unique_reference": null,
- "from_account": "avscvv2b Test",
- "to_account": "ABC Media",
- "process_on": null,
- "created_by_user": "zoM2xjrzczmgbbGhfHFh",
- "auto_withdraw": false,
- "auto_withdrawal_token": null,
- "action": "verify",
- "payment_method": "credit_card",
- "settlement_token": "MAY7USR7KABC",
- "currency": "usd",
- "step_types": [
- "TransactionSteps::CardVerifyStep"
], - "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "approved_amount_cents": 100,
- "gateway_response": {
- "token": "msjhrhcfbily",
- "gateway_token": "39052",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "gateway_response": {
- "response": {
- "authentication": {
- "responsestatus": "success",
- "sessionid": "DH6rQ0CRxuScK9ZDJjcuhXBodyadb^ae"
}, - "content": {
- "refname": "90144",
- "update": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}
], - "create": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "success",
- "id": "10485",
- "name": "avs_cvv2b Test"
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "success",
- "id": "11611"
}
}, - {
- "salesdocument": {
- "refname": "invoice",
- "responsestatus": "success",
- "id": "34054"
}
}, - {
- "transaction": {
- "refname": "0d18e9e7-f7f6-4ee8-a1f9-6a78219bca01",
- "responsestatus": "success",
- "authorizationcode": "280278",
- "avsresponse": "A",
- "cvvresponse": "N",
- "authorizationresponse": "APPROVAL",
- "id": "39052",
- "hash": "######1111",
- "cardtype.name": "Visa",
- "accountholder": "avs_cvv2b Test",
- "amount": "0.00",
- "account.id": "2013",
- "token": "c500f04b-a61c-44bd-be03-2c3a423cbbaf"
}
}
]
}
}
}, - "credit_card": {
- "token": "qw288x8dmx00"
}
}
}
]
}
An Authorize transaction is a non-financial transaction and is used to reserve funds on a buyer’s credit card account. An authorization should be used in scenarios when there will be a delay between taking the order and when the goods or services being purchased will be shipped or delivered to the buyer. In order to collect the funds reserved by an authorization, a subsequent capture request is required. Authorizations, if not captured or voided, will automatically be released by the card issuer in anywhere from two to fourteen days.
order | object An order object or a token reference to an existing order |
contact | object (WalletContact) Billing contact |
fund_token | string A token reference to an existing fund (either credit card or bank account) |
fee_exempt | boolean True indicates that any fee related surcharging should be ignored even if the underlying merchant account is configured as such, false inherits any configured fee related behaviour |
transaction_reference | string Nullable Extra useful data to help link transactions to other systems e.g. PO numbers, account numbers etc. |
device | string Optional device name depending on gateway boarding & configuration |
industry | string Enum: "directmarketing" "ecommerce" "lodging" "restaurant" "autorental" "retail" Optional, if not provided defaults to value specified in gateway/account configuration |
sec_code | string Enum: "CCD" "PPD" "WEB" "POP" "TEL" Optional, for ACH bank transactions, standard entry class code (if not provided defaults to value specified on payment acceptance config; otherwise defaults to PPD if transaction from bank account check_type is personal & CCD if check_type is business) |
credit_card | object (WalletCreditCard) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccount) Alternative to fund_token, a bank account object or token reference to an existing credit card |
gift_card | object Alternative to fund_token, a gift card |
200 response
500 error response
Production
UAT
{- "order": "3SLSC9HX3AHB",
- "amount_cents": 4200,
- "fund_token": "CC98U7LI8H91"
}
{- "success": true,
- "transaction": "1TQ7L54E5L9R",
- "order": "53HP8ILUK3E8",
- "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "transactions": [
- {
- "token": "1TQ7L54E5L9R",
- "amount_in_cents": 100,
- "message": null,
- "link_url": null,
- "type": "transaction",
- "transaction_type": "request_money",
- "email": "customer+abcmedia@versapay.com",
- "state": "completed",
- "transaction_reference": null,
- "unique_reference": null,
- "from_account": "avscvv2b Test",
- "to_account": "ABC Media",
- "process_on": null,
- "created_by_user": "zoM2xjrzczmgbbGhfHFh",
- "auto_withdraw": false,
- "auto_withdrawal_token": null,
- "action": "verify",
- "payment_method": "credit_card",
- "settlement_token": "MAY7USR7KABC",
- "currency": "usd",
- "step_types": [
- "TransactionSteps::CardVerifyStep"
], - "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "approved_amount_cents": 100,
- "gateway_response": {
- "token": "msjhrhcfbily",
- "gateway_token": "39052",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "gateway_response": {
- "response": {
- "authentication": {
- "responsestatus": "success",
- "sessionid": "DH6rQ0CRxuScK9ZDJjcuhXBodyadb^ae"
}, - "content": {
- "refname": "90144",
- "update": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}
], - "create": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "success",
- "id": "10485",
- "name": "avs_cvv2b Test"
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "success",
- "id": "11611"
}
}, - {
- "salesdocument": {
- "refname": "invoice",
- "responsestatus": "success",
- "id": "34054"
}
}, - {
- "transaction": {
- "refname": "0d18e9e7-f7f6-4ee8-a1f9-6a78219bca01",
- "responsestatus": "success",
- "authorizationcode": "280278",
- "avsresponse": "A",
- "cvvresponse": "N",
- "authorizationresponse": "APPROVAL",
- "id": "39052",
- "hash": "######1111",
- "cardtype.name": "Visa",
- "accountholder": "avs_cvv2b Test",
- "amount": "0.00",
- "account.id": "2013",
- "token": "c500f04b-a61c-44bd-be03-2c3a423cbbaf"
}
}
]
}
}
}, - "credit_card": {
- "token": "qw288x8dmx00"
}
}
}
]
}
A Capture transaction initiates the transfer of funds reserved by a prior authorization. When the gateway receives the capture request, it adds the capture to the settlement batch for transmission to the payment processing platform at the end of the processing day.
order | object An order object or a token reference to an existing order |
contact | object (WalletContact) Billing contact |
fund_token | string A token reference to an existing fund (either credit card or bank account) |
fee_exempt | boolean True indicates that any fee related surcharging should be ignored even if the underlying merchant account is configured as such, false inherits any configured fee related behaviour |
transaction_reference | string Nullable Extra useful data to help link transactions to other systems e.g. PO numbers, account numbers etc. |
device | string Optional device name depending on gateway boarding & configuration |
industry | string Enum: "directmarketing" "ecommerce" "lodging" "restaurant" "autorental" "retail" Optional, if not provided defaults to value specified in gateway/account configuration |
sec_code | string Enum: "CCD" "PPD" "WEB" "POP" "TEL" Optional, for ACH bank transactions, standard entry class code (if not provided defaults to value specified on payment acceptance config; otherwise defaults to PPD if transaction from bank account check_type is personal & CCD if check_type is business) |
credit_card | object (WalletCreditCard) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccount) Alternative to fund_token, a bank account object or token reference to an existing credit card |
gift_card | object Alternative to fund_token, a gift card |
200 response
500 error response
Production
UAT
{- "amount_cents": 4200,
- "transaction": "9HWLBLWXXPRX"
}
{- "success": true,
- "transaction": "1TQ7L54E5L9R",
- "order": "53HP8ILUK3E8",
- "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "transactions": [
- {
- "token": "1TQ7L54E5L9R",
- "amount_in_cents": 100,
- "message": null,
- "link_url": null,
- "type": "transaction",
- "transaction_type": "request_money",
- "email": "customer+abcmedia@versapay.com",
- "state": "completed",
- "transaction_reference": null,
- "unique_reference": null,
- "from_account": "avscvv2b Test",
- "to_account": "ABC Media",
- "process_on": null,
- "created_by_user": "zoM2xjrzczmgbbGhfHFh",
- "auto_withdraw": false,
- "auto_withdrawal_token": null,
- "action": "verify",
- "payment_method": "credit_card",
- "settlement_token": "MAY7USR7KABC",
- "currency": "usd",
- "step_types": [
- "TransactionSteps::CardVerifyStep"
], - "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "approved_amount_cents": 100,
- "gateway_response": {
- "token": "msjhrhcfbily",
- "gateway_token": "39052",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "gateway_response": {
- "response": {
- "authentication": {
- "responsestatus": "success",
- "sessionid": "DH6rQ0CRxuScK9ZDJjcuhXBodyadb^ae"
}, - "content": {
- "refname": "90144",
- "update": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}
], - "create": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "success",
- "id": "10485",
- "name": "avs_cvv2b Test"
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "success",
- "id": "11611"
}
}, - {
- "salesdocument": {
- "refname": "invoice",
- "responsestatus": "success",
- "id": "34054"
}
}, - {
- "transaction": {
- "refname": "0d18e9e7-f7f6-4ee8-a1f9-6a78219bca01",
- "responsestatus": "success",
- "authorizationcode": "280278",
- "avsresponse": "A",
- "cvvresponse": "N",
- "authorizationresponse": "APPROVAL",
- "id": "39052",
- "hash": "######1111",
- "cardtype.name": "Visa",
- "accountholder": "avs_cvv2b Test",
- "amount": "0.00",
- "account.id": "2013",
- "token": "c500f04b-a61c-44bd-be03-2c3a423cbbaf"
}
}
]
}
}
}, - "credit_card": {
- "token": "qw288x8dmx00"
}
}
}
]
}
A Refund transaction is a request to initiate the transfer of funds from the supplier back to the buyer and is based on a prior sale or capture transaction. For credit card payments, the gateway will first authorize the return transaction before adding the transaction to the settlement batch for transmission at the end of the processing day. For ACH payments, the gateway will accept the refund request and add the transaction to the batch.
order | object An order object or a token reference to an existing order |
contact | object (WalletContact) Billing contact |
fund_token | string A token reference to an existing fund (either credit card or bank account) |
fee_exempt | boolean True indicates that any fee related surcharging should be ignored even if the underlying merchant account is configured as such, false inherits any configured fee related behaviour |
transaction_reference | string Nullable Extra useful data to help link transactions to other systems e.g. PO numbers, account numbers etc. |
device | string Optional device name depending on gateway boarding & configuration |
industry | string Enum: "directmarketing" "ecommerce" "lodging" "restaurant" "autorental" "retail" Optional, if not provided defaults to value specified in gateway/account configuration |
sec_code | string Enum: "CCD" "PPD" "WEB" "POP" "TEL" Optional, for ACH bank transactions, standard entry class code (if not provided defaults to value specified on payment acceptance config; otherwise defaults to PPD if transaction from bank account check_type is personal & CCD if check_type is business) |
credit_card | object (WalletCreditCard) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccount) Alternative to fund_token, a bank account object or token reference to an existing credit card |
gift_card | object Alternative to fund_token, a gift card |
200 response
500 error response
Production
UAT
{- "amount_cents": 4200,
- "transaction": "9HWLBLWXXPRX"
}
{- "success": true,
- "transaction": "1TQ7L54E5L9R",
- "order": "53HP8ILUK3E8",
- "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "transactions": [
- {
- "token": "1TQ7L54E5L9R",
- "amount_in_cents": 100,
- "message": null,
- "link_url": null,
- "type": "transaction",
- "transaction_type": "request_money",
- "email": "customer+abcmedia@versapay.com",
- "state": "completed",
- "transaction_reference": null,
- "unique_reference": null,
- "from_account": "avscvv2b Test",
- "to_account": "ABC Media",
- "process_on": null,
- "created_by_user": "zoM2xjrzczmgbbGhfHFh",
- "auto_withdraw": false,
- "auto_withdrawal_token": null,
- "action": "verify",
- "payment_method": "credit_card",
- "settlement_token": "MAY7USR7KABC",
- "currency": "usd",
- "step_types": [
- "TransactionSteps::CardVerifyStep"
], - "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "approved_amount_cents": 100,
- "gateway_response": {
- "token": "msjhrhcfbily",
- "gateway_token": "39052",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "gateway_response": {
- "response": {
- "authentication": {
- "responsestatus": "success",
- "sessionid": "DH6rQ0CRxuScK9ZDJjcuhXBodyadb^ae"
}, - "content": {
- "refname": "90144",
- "update": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}
], - "create": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "success",
- "id": "10485",
- "name": "avs_cvv2b Test"
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "success",
- "id": "11611"
}
}, - {
- "salesdocument": {
- "refname": "invoice",
- "responsestatus": "success",
- "id": "34054"
}
}, - {
- "transaction": {
- "refname": "0d18e9e7-f7f6-4ee8-a1f9-6a78219bca01",
- "responsestatus": "success",
- "authorizationcode": "280278",
- "avsresponse": "A",
- "cvvresponse": "N",
- "authorizationresponse": "APPROVAL",
- "id": "39052",
- "hash": "######1111",
- "cardtype.name": "Visa",
- "accountholder": "avs_cvv2b Test",
- "amount": "0.00",
- "account.id": "2013",
- "token": "c500f04b-a61c-44bd-be03-2c3a423cbbaf"
}
}
]
}
}
}, - "credit_card": {
- "token": "qw288x8dmx00"
}
}
}
]
}
A Void transaction reverses the effect of a prior transaction when possible. Financial transactions like sales, captures, credits, and refunds can be voided during the same processing day until the gateway transmits the settlement batch. Once the batch has been transmitted, a void is not possible, and the transaction would need to be reversed using a financial transaction (e.g., a sale would need to be reversed with a refund). Void transactions can also reverse the effect of an authorization, either fully or partially. This is useful if the authorization is no longer needed or if the authorization needs to be captured for a lesser amount.
order | object An order object or a token reference to an existing order |
contact | object (WalletContact) Billing contact |
fund_token | string A token reference to an existing fund (either credit card or bank account) |
fee_exempt | boolean True indicates that any fee related surcharging should be ignored even if the underlying merchant account is configured as such, false inherits any configured fee related behaviour |
transaction_reference | string Nullable Extra useful data to help link transactions to other systems e.g. PO numbers, account numbers etc. |
device | string Optional device name depending on gateway boarding & configuration |
industry | string Enum: "directmarketing" "ecommerce" "lodging" "restaurant" "autorental" "retail" Optional, if not provided defaults to value specified in gateway/account configuration |
sec_code | string Enum: "CCD" "PPD" "WEB" "POP" "TEL" Optional, for ACH bank transactions, standard entry class code (if not provided defaults to value specified on payment acceptance config; otherwise defaults to PPD if transaction from bank account check_type is personal & CCD if check_type is business) |
credit_card | object (WalletCreditCard) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccount) Alternative to fund_token, a bank account object or token reference to an existing credit card |
gift_card | object Alternative to fund_token, a gift card |
200 response
500 error response
Production
UAT
{- "amount_cents": 4200,
- "transaction": "9HWLBLWXXPRX"
}
{- "success": true,
- "transaction": "1TQ7L54E5L9R",
- "order": "53HP8ILUK3E8",
- "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "transactions": [
- {
- "token": "1TQ7L54E5L9R",
- "amount_in_cents": 100,
- "message": null,
- "link_url": null,
- "type": "transaction",
- "transaction_type": "request_money",
- "email": "customer+abcmedia@versapay.com",
- "state": "completed",
- "transaction_reference": null,
- "unique_reference": null,
- "from_account": "avscvv2b Test",
- "to_account": "ABC Media",
- "process_on": null,
- "created_by_user": "zoM2xjrzczmgbbGhfHFh",
- "auto_withdraw": false,
- "auto_withdrawal_token": null,
- "action": "verify",
- "payment_method": "credit_card",
- "settlement_token": "MAY7USR7KABC",
- "currency": "usd",
- "step_types": [
- "TransactionSteps::CardVerifyStep"
], - "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "approved_amount_cents": 100,
- "gateway_response": {
- "token": "msjhrhcfbily",
- "gateway_token": "39052",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "gateway_response": {
- "response": {
- "authentication": {
- "responsestatus": "success",
- "sessionid": "DH6rQ0CRxuScK9ZDJjcuhXBodyadb^ae"
}, - "content": {
- "refname": "90144",
- "update": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}
], - "create": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "success",
- "id": "10485",
- "name": "avs_cvv2b Test"
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "success",
- "id": "11611"
}
}, - {
- "salesdocument": {
- "refname": "invoice",
- "responsestatus": "success",
- "id": "34054"
}
}, - {
- "transaction": {
- "refname": "0d18e9e7-f7f6-4ee8-a1f9-6a78219bca01",
- "responsestatus": "success",
- "authorizationcode": "280278",
- "avsresponse": "A",
- "cvvresponse": "N",
- "authorizationresponse": "APPROVAL",
- "id": "39052",
- "hash": "######1111",
- "cardtype.name": "Visa",
- "accountholder": "avs_cvv2b Test",
- "amount": "0.00",
- "account.id": "2013",
- "token": "c500f04b-a61c-44bd-be03-2c3a423cbbaf"
}
}
]
}
}
}, - "credit_card": {
- "token": "qw288x8dmx00"
}
}
}
]
}
View an order transaction details.
The path parameter reference_or_token
is matched to the transaction's token
or unique_reference
, in that order. Alias/see /api/gateway/v1/transaction/{token_or_reference}
token_or_reference required | string The transaction's |
Successful Operation
Unauthorized
Not Found
Production
UAT
{- "token": "1TQ7L54E5L9R",
- "amount_in_cents": 100,
- "message": null,
- "link_url": null,
- "type": "transaction",
- "transaction_type": "request_money",
- "email": "customer+abcmedia@versapay.com",
- "state": "completed",
- "transaction_reference": null,
- "unique_reference": null,
- "from_account": "avscvv2b Test",
- "to_account": "ABC Media",
- "process_on": null,
- "created_by_user": "zoM2xjrzczmgbbGhfHFh",
- "auto_withdraw": false,
- "auto_withdrawal_token": null,
- "action": "verify",
- "payment_method": "credit_card",
- "settlement_token": "MAY7USR7KABC",
- "currency": "usd",
- "step_types": [
- "TransactionSteps::CardVerifyStep"
], - "wallet": "2JN6JSR7IBML",
- "credit_card": "CC9DIRFZE61U",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "approved_amount_cents": 100,
- "gateway_response": {
- "token": "msjhrhcfbily",
- "gateway_token": "39052",
- "authorization_response": "APPROVAL",
- "avs_response": "A",
- "cvv_response": "N",
- "gateway_response": {
- "response": {
- "authentication": {
- "responsestatus": "success",
- "sessionid": "DH6rQ0CRxuScK9ZDJjcuhXBodyadb^ae"
}, - "content": {
- "refname": "90144",
- "update": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "failure",
- "errors": {
- "error": {
- "number": "102.021",
- "description": "name is invalid"
}
}
}
}
], - "create": [
- {
- "customer": {
- "refname": "customer",
- "responsestatus": "success",
- "id": "10485",
- "name": "avs_cvv2b Test"
}
}, - {
- "contact": {
- "refname": "contact",
- "responsestatus": "success",
- "id": "11611"
}
}, - {
- "salesdocument": {
- "refname": "invoice",
- "responsestatus": "success",
- "id": "34054"
}
}, - {
- "transaction": {
- "refname": "0d18e9e7-f7f6-4ee8-a1f9-6a78219bca01",
- "responsestatus": "success",
- "authorizationcode": "280278",
- "avsresponse": "A",
- "cvvresponse": "N",
- "authorizationresponse": "APPROVAL",
- "id": "39052",
- "hash": "######1111",
- "cardtype.name": "Visa",
- "accountholder": "avs_cvv2b Test",
- "amount": "0.00",
- "account.id": "2013",
- "token": "c500f04b-a61c-44bd-be03-2c3a423cbbaf"
}
}
]
}
}
}, - "credit_card": {
- "token": "c500f04b-a61c-44bd-be03-2c3a423cbbaf"
}
}, - "orders": [
- {
- "identifier": "1ESZXPKGAJCK",
- "number": "1ESZXPKGAJCK",
- "amount_cents": 100
}
], - "payments": [
- {
- "identifier": "9U4PK6D11H3D",
- "display_identifier": "9U4PK6D11H3D",
- "amount_cents": 100
}
]
}
In the uat environment, the following test account numbers can be used provided your account has been setup for payment acceptance. Please contact support@versapay.com for support & setup questions related to payment acceptance.
Any future dated expiry month/year for the following:
Brand | Number |
---|---|
Visa | 4895281000000006 |
Visa | 4264280001234500 (will always decline) |
Mastercard | 5541032000004422 |
Discover | 6011000990911111 |
American Express (Amex) | 341111597242000 |
The following CVV values can be used to test CVV reponse codes:
CVV | Code | Description |
---|---|---|
123 | P | Not Processed |
234 | M | Match |
345 | N | No Match |
456 | S | CVV value should be on the card but the merchant has indicated that it is not present |
567 | U | Issuer not certified for CVV processing |
6789 (Amex) | M | Match |
1011 (Amex) | N | No Match |
1213 (Amex) | P | Not Processed |
Any other number | M | Match |
The following address values can be used to test AVS reponse codes:
Postal/Zip | Address | Code | Response |
---|---|---|---|
80801 | 234 Elm Street | A | Address match; zip no match |
80802 | 234 Elm Street | G | Global non-AVS participant |
80803 | 234 Elm Street | N | Address and zip do not match |
80804 | 234 Elm Street | R | System unavailable or timed out |
80805 | 234 Elm Street | S | Service not supported: Issuer does not support AVS and Visa |
80806 | 234 Elm Street | U | Unavailable: Address information not verified for domestic transactions |
808000000 | 234 Elm Street | W | 9-digit zip matches; address does not match |
808000000 | 234 Elm Street | X | 9-digit zip and address match |
80809 | 234 Elm Street | Y | 5-digit zip and address match |
80810 | 234 Elm Street | Z | 5-digit zip matches; address does not match |
80815 | 234 Elm Street | I | Address information not verified for international transaction |
80818 | 234 Elm Street | E | AVS service not supported |
K1A0A9 | 234 Elm Street | D | Zip and address match (International) |
L6Y2N4 | 234 Elm Street | M | Zip and address match (International) |
K0K2T0 | 234 Elm Street | P | Zip matches; address not verified because of incompatible formats |
Any other zip | Any other address | Y | 5-digit zip and address match |
The number of cents in the transaction amount can trigger a decline response in UAT.
If the transaction amount ends in .01
(e.g., $1.01 or $40.01), the transaction will decline.
If a void
transaction amount ends in .02
(e.g., $1.02 or $40.02), the void
transaction will decline.
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.
card_number | string Gift card number |
expiry_month | string 2 digit month |
expiry_year | string 4 digit year |
pin | string Gift card pin |
activated | boolean Default: false If this is |
load_amount_cents | integer Amount in cents to load/add on to existing gift card balance. |
200 response
500 error response
Production
UAT
{- "card_number": "4775419990420272",
- "expiry_month": "12",
- "expiry_year": "2049",
- "pin": "1234",
- "activated": true
}
{- "success": true
}
card_number | string Gift card number |
expiry_month | string 2 digit month |
expiry_year | string 4 digit year |
pin | string Gift card pin |
200 response
500 error response
Production
UAT
{- "card_number": "4775419990420272",
- "expiry_month": "12",
- "expiry_year": "2049",
- "pin": "1234"
}
{- "id": "66",
- "token": "04bfe04a-80aa-4779-8388-59396afdfdf7",
- "balance": 777,
- "activated": false,
- "created_at": "11/3/2021 12:00:00 AM",
- "expires_at": "12/1/2049 12:00:00 AM"
}
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.
laneid | string Pre-configured lane identifier |
command | string Enum: "DeviceSetup" "RequestSignature" "Cancel" "DeviceStatus" Supported terminal command |
200 response
500 error response
Production
UAT
{- "laneid": "1",
- "command": "DeviceSetup"
}
{- "success": true
}
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.
List of monthly statements added since watermark, limited to 100 (default) at a time.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
sample | boolean Example: sample=true Show some sample data |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
mid | string Example: mid=123456789 account filter by mid or merchant account token. |
enddate_from | string Example: enddate_from=2023-01-01 start date of range filter for the statement period end date (yyyy-mm-dd). |
enddate_to | string Example: enddate_to=2023-06-01 end date of range filter for the statement period end date (yyyy-mm-dd). |
Successful Operation
Unauthorized
Production
UAT
{- "statements": {
- "2": {
- "identifier": "2EW5NDMG5347",
- "start_date": "2021-07-01",
- "end_date": "2021-07-31",
- "statement_date": "2021-08-11",
- "merchant_account_token": "7YA5NDMG5347",
- "merchant_account_identifier": "123456789012",
- "watermark": 2
}, - "3": {
- "identifier": "2EW5NDMG5348",
- "start_date": "2021-07-01",
- "end_date": "2021-07-31",
- "statement_date": "2021-08-11",
- "merchant_account_token": "8YA5NDMG5348",
- "merchant_account_identifier": "123456789012",
- "watermark": 3
}, - "4": {
- "identifier": "2EW5NDMG5349",
- "start_date": "2021-08-01",
- "end_date": "2021-08-31",
- "statement_date": "2021-09-11",
- "merchant_account_token": "7YA5NDMG5347",
- "merchant_account_identifier": "123456789012",
- "watermark": 4
}, - "5": {
- "identifier": "2EW5NDMG5340",
- "start_date": "2021-08-01",
- "end_date": "2021-08-31",
- "statement_date": "2021-09-11",
- "merchant_account_token": "8YA5NDMG5348",
- "merchant_account_identifier": "123456789012",
- "watermark": 5
}
}
}
The generated PDF for a specific monthly statement.
statement_identifier required | string Example: 2EW5NDMG5347.pdf, 2EW5NDMG5347.json, sample.pdf Identifier/token of the monthly statement |
Successful Operation
Unauthorized
Production
UAT
{- "error": "You need to sign in or create an account before continuing."
}
List of daily batch deposits including fees and transactions.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
Successful Operation
Unauthorized
Production
UAT
{- "batches": [
- {
- "token": "5EF5LDMY7627",
- "merchant_account_token": "7YA5NDMG5347",
- "batch_close_date": "2022-01-05",
- "batch_deposit_date": "2022-01-06",
- "batch_net_amount_cents": 1123456,
- "fee_withdrawal_amount_cents": 0,
- "deposit_amount_cents": 1123456,
- "deposit_currency": "usd",
- "deposit_routing_number": "123456780",
- "deposit_account_number": "*3211",
- "deposit_routing_account_hash_function": "sha-1",
- "deposit_routing_account_hash": "64984fa69d3aaeb30f77407bb08ada8e6dcfcf41",
- "fees": [
- {
- "token": "6KF7LIOY1975",
- "fee_withdrawal_date": "2022-01-06",
- "fee_amount_cents": 12000,
- "fee_currency": "usd",
- "fee_withdrawal_routing_number": "123456780",
- "fee_withdrawal_account_number": "*3211",
- "fee_routing_account_hash_function": "sha-1",
- "fee_routing_account_hash": "64984fa69d3aaeb30f77407bb08ada8e6dcfcf41",
- "fee_type": "interchange",
- "included_in_batch_deposit": false
}
], - "transactions": [
- {
- "token": "2EW5NDMG5348",
- "amount_cents": 1000000,
- "currency": "usd",
- "payment_method": "credit_card",
- "settlement_token": "MA123XYZABCD"
}, - {
- "token": "21AUED7416QS",
- "amount_cents": 123456,
- "currency": "usd",
- "payment_method": "credit_card",
- "settlement_token": "MA123XYZABCD",
- "orders": [
- {
- "identifier": "1ESZXPKGAJCK",
- "number": "S-INV102229",
- "amount_cents": 123456
}
], - "payments": [
- {
- "identifier": "5VKMWCMBNMPZ",
- "display_identifier": "5VKMWCMBNMPZ",
- "amount_cents": 123456
}, - {
- "identifier": "5VKMWCMBNMPZ.REV",
- "display_identifier": "5VKMWCMBNMPZ.REV",
- "amount_cents": -123456
}
]
}
], - "watermark": 2
}, - {
- "token": "5EF5LDMY7628",
- "merchant_account_token": "8YA5NDMG5348",
- "batch_close_date": "2022-01-05",
- "batch_deposit_date": "2022-01-06",
- "batch_net_amount_cents": 2123457,
- "fee_withdrawal_amount_cents": 0,
- "deposit_amount_cents": 1123456,
- "deposit_currency": "usd",
- "deposit_routing_number": "123456780",
- "deposit_account_number": "*3211",
- "deposit_routing_account_hash_function": "sha-1",
- "deposit_routing_account_hash": "64984fa69d3aaeb30f77407bb08ada8e6dcfcf41",
- "fees": [
- {
- "token": "6KF7LIOY1975",
- "fee_withdrawal_date": "2022-01-06",
- "fee_amount_cents": 12000,
- "fee_currency": "usd",
- "fee_withdrawal_routing_number": "123456780",
- "fee_withdrawal_account_number": "*3211",
- "fee_routing_account_hash_function": "sha-1",
- "fee_routing_account_hash": "64984fa69d3aaeb30f77407bb08ada8e6dcfcf41",
- "fee_type": "interchange",
- "included_in_batch_deposit": false
}
], - "transactions": [
- {
- "token": "4EW5NDMG5348",
- "amount_cents": 2000000,
- "currency": "usd",
- "payment_method": "credit_card",
- "settlement_token": "MA123XYZABCD"
}, - {
- "token": "41AUED7416QS",
- "amount_cents": 123457,
- "currency": "usd",
- "payment_method": "credit_card",
- "settlement_token": "MA123XYZABCD"
}
], - "watermark": 3
}
]
}
List of exception transactions including ACH return/reject and CC chargeback.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
Successful Operation
Unauthorized
Production
UAT
{- "exceptions": [
- {
- "exception_type": "chargeback",
- "exception_description": "Chargeback",
- "exception_date": "2022-01-15",
- "exception_amount_in_cents": 500000,
- "exception_transaction": {
- "token": "2EW5NDMG5348",
- "amount_in_cents": 1000000,
- "currency": "usd",
- "payment_method": "credit_card",
- "settlement_token": "MA123XYZABCD"
}, - "watermark": 2
}, - {
- "exception_type": "return",
- "exception_description": "R10 CUSTOMER ADVISES NOT AUTHORIZED",
- "exception_date": "2022-01-15",
- "exception_amount_in_cents": 1000000,
- "exception_transaction": {
- "token": "2EW5NDMG5348",
- "amount_in_cents": 1000000,
- "currency": "usd",
- "payment_method": "credit_card",
- "settlement_token": "MA123XYZABCD"
}, - "watermark": 3
}
]
}
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.
Accessible wallets can be searched by contact email, customer identifier, fund token, or vault token.
type required | string Example: type=email The type of search |
locator required | string Example: locator=salesdemo@versapay.com The value used for search according to the type. |
Successful Operation
Unauthorized
Production
UAT
{- "wallets": [
- {
- "token": "77A81025AC3A",
- "credit_cards": [
- {
- "token": "CC54QRN1CLDX",
- "gateway_token": "k8oz6mz8w0ma",
- "cardholder": "John Adam",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 12,
- "expiry_year": 2025,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2020-09-02T10:50:54.000-04:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-03-31T16:48:33.000-04:00",
- "last_transaction": "2SWW4NXAQGEX",
- "last_payment": "3EHSHYGJKK3C",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "",
- "postal_code": "",
- "line_1": "",
- "line_2": "",
- "created_at": "2020-09-02T10:50:54.000-04:00",
- "updated_at": "2020-09-02T10:50:54.000-04:00"
}
}
], - "bank_accounts": [
- {
- "account_holder": "Solupay",
- "branch_number": "",
- "institution_number": "",
- "routing_number": "122000247",
- "sort_code": null,
- "iban": null,
- "account_number": " (1156)",
- "nickname": null,
- "state": "verified",
- "verification_attempts": 0,
- "token": "BA25BVH5HCRI",
- "gateway_token": null,
- "account_type": "checking",
- "external_name": null,
- "external_number": null,
- "display_name": " (1156)",
- "usage": "ap",
- "currency": "usd",
- "domicile": "US",
- "created": "2020-09-02T10:50:02.000-04:00",
- "is_default": false,
- "locked": false,
- "check_type": null,
- "inactive": false,
- "last_transaction_date": "2021-03-28T18:13:01.000-04:00",
- "last_transaction": "9BY2J2JK5JK3",
- "last_payment": "246X11DST8WL",
- "address": {
- "address_1": "",
- "address_2": "",
- "city": "",
- "state": null,
- "province": null,
- "country": "US",
- "country_name": "USA",
- "zip": "",
- "postal_code": "",
- "line_1": "",
- "line_2": "US",
- "created_at": "2020-09-02T10:50:02.000-04:00",
- "updated_at": "2020-09-02T10:50:02.000-04:00"
}
}
], - "customers": [
- {
- "identifier": "1715",
- "contacts": [
- {
- "email": "jdoe@versapay.com"
}
]
}, - {
- "identifier": "1764",
- "contacts": [
- {
- "email": "smith@versapay.com"
}, - {
- "email": "jdoe@versapay.com"
}
]
}
]
}, - {
- "token": "7EVZCIY25G9L",
- "credit_cards": [
- {
- "token": "CC3PTIFL9AEI",
- "gateway_token": "92g1xpkeocne",
- "cardholder": "John A. Appseed",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 1,
- "expiry_year": 2025,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-05-10T09:27:38.000-04:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-09-20T11:59:51.000-04:00",
- "last_transaction": "2FUSRN7VMZU9",
- "last_payment": "1QC8WS1GRHMC",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "",
- "postal_code": "",
- "line_1": "",
- "line_2": "",
- "created_at": "2021-05-10T09:27:38.000-04:00",
- "updated_at": "2021-05-10T09:27:38.000-04:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "ARC Customer",
- "contacts": [
- {
- "email": "salesdemo@versapay.com"
}, - {
- "email": "jdoe@versapay.com"
}
]
}
]
}, - {
- "token": "96CYTUXCHRWV",
- "credit_cards": [
- {
- "token": "CC7E7XD59YQC",
- "gateway_token": "ns4gzxbvq1ch",
- "cardholder": "test customer",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 10,
- "expiry_year": 2025,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-04-23T16:51:43.000-04:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-04-28T09:16:59.000-04:00",
- "last_transaction": "7BUQR4UZC85V",
- "last_payment": "3TVZ9UF5L7J5",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "L6X 0V4",
- "postal_code": "L6X 0V4",
- "line_1": "",
- "line_2": "L6X 0V4",
- "created_at": "2021-04-23T16:51:43.000-04:00",
- "updated_at": "2021-04-23T16:51:43.000-04:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "ARC Test",
- "contacts": [
- {
- "email": "email@gmail.com"
}, - {
- "email": "salesdemo@versapay.com"
}, - {
- "email": "jdoe@versapay.com"
}
]
}
]
}, - {
- "token": "3SGYEEUSTLTA",
- "credit_cards": [
- {
- "token": "CC66UIZD7MH7",
- "gateway_token": "jhrciteuh7hx",
- "cardholder": "Pam Beesly",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 4,
- "expiry_year": 2023,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-04-13T09:24:22.000-04:00",
- "locked": false,
- "inactive": true,
- "last_transaction_date": "2021-04-13T09:25:08.000-04:00",
- "last_transaction": "46Y315K2URPR",
- "last_payment": "3D5DESMMYF1P",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "",
- "postal_code": "",
- "line_1": "",
- "line_2": "",
- "created_at": "2021-04-13T09:24:22.000-04:00",
- "updated_at": "2021-04-13T09:24:22.000-04:00"
}
}, - {
- "token": "CC1AS2CXH1AX",
- "gateway_token": "531u115q27ms",
- "cardholder": "CBOE Holdings Inc",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 3,
- "expiry_year": 2023,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-04-13T09:27:42.000-04:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-06-03T13:29:05.000-04:00",
- "last_transaction": "8M3SFE1PN7VT",
- "last_payment": "3UVNF2VPVADL",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "",
- "postal_code": "",
- "line_1": "",
- "line_2": "",
- "created_at": "2021-04-13T09:27:42.000-04:00",
- "updated_at": "2021-04-13T09:27:42.000-04:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "Bubba Hoss",
- "contacts": [
- {
- "email": "versapayinvoices@gmail.com"
}, - {
- "email": "jdoe@versapay.com"
}
]
}
]
}
]
}
Create a new wallet (empty) and/or a new wallet with a payment method.
customer | object (WalletCustomer) Invoicing customer reference |
contact | object (WalletContact) Billing contact |
credit_card | object (WalletCreditCard) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccount) Alternative to fund_token, a bank account object or token reference to an existing credit card |
200 response
Precondition Failed - Wallet related errors
Production
UAT
{ }
{- "wallet_token": "5EJQM2RL4K2G",
- "fund_token": null,
- "wallets": [
- {
- "token": "5EJQM2RL4K2G",
- "credit_cards": [ ],
- "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "API-PTwDRl1PoialcnEHGv54V7Nj",
- "contacts": [ ]
}
]
}
]
}
View specific wallet given its wallet identifier/token.
wallet_token required | string Example: 77A81025AC3A The wallet identifier/token |
200 response
Precondition Failed - Wallet related errors
Production
UAT
{- "wallets": [
- {
- "token": "77A81025AC3A",
- "credit_cards": [
- {
- "token": "CC54QRN1CLDX",
- "gateway_token": "string",
- "cardholder": "string",
- "card_number": "string",
- "display_name": "string",
- "nickname": "string",
- "expiry_month": 0,
- "expiry_year": 0,
- "is_debit": true,
- "is_default": true,
- "is_single_use": true,
- "brand": "string",
- "created": "2024-11-11T23:18:11Z",
- "locked": true,
- "inactive": true,
- "last_transaction_date": "2024-11-11T23:18:11Z",
- "last_transaction": "string",
- "last_payment": "string",
- "address": {
- "address1": "1314 NW GLISAN ST",
- "address2": "Apartment 1",
- "city": "Portland",
- "state_province": "OR",
- "post_code": "97209",
- "country": "us",
- "override_validation": true
}
}
], - "bank_accounts": [
- {
- "currency": "usd",
- "business_name": "John Doe",
- "country": "CA",
- "account_number": "10101234",
- "account_type": "checking",
- "institution_number": "001",
- "branch_number": "03662",
- "routing_number": "",
- "token": "string",
- "nickname": "string",
- "masked_account_number": "string",
- "routing_account_hash_function": "string",
- "routing_account_hash": "string",
- "address": {
- "address_1": "string",
- "city": "string",
- "province": "string",
- "postal_code": "string",
- "country": "US"
}
}
], - "customers": [
- {
- "identifier": "C1234",
- "contacts": [
- {
- "email": "string"
}
]
}
]
}
]
}
Add payment methods to a known wallet given its identifier/token.
wallet_token required | string Example: 77A81025AC3A The wallet identifier/token |
credit_card | object (WalletCreditCard) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccount) Alternative to fund_token, a bank account object or token reference to an existing credit card |
200 response
Precondition Failed - Wallet related errors
Production
UAT
{- "credit_card": {
- "name": "FRANK SMITH",
- "expiry_month": 8,
- "expiry_year": 2020,
- "card_number": "5420923878724339",
- "cvv": "123",
- "address": {
- "address_1": "123 Abc St",
- "city": "Beverly Hills",
- "province": "CA",
- "postal_code": "90210",
- "country": "US"
}
}
}
{- "wallet_token": "string",
- "fund_token": "string",
- "wallets": [
- {
- "token": "77A81025AC3A",
- "credit_cards": [
- {
- "token": "CC54QRN1CLDX",
- "gateway_token": "string",
- "cardholder": "string",
- "card_number": "string",
- "display_name": "string",
- "nickname": "string",
- "expiry_month": 0,
- "expiry_year": 0,
- "is_debit": true,
- "is_default": true,
- "is_single_use": true,
- "brand": "string",
- "created": "2024-11-11T23:18:11Z",
- "locked": true,
- "inactive": true,
- "last_transaction_date": "2024-11-11T23:18:11Z",
- "last_transaction": "string",
- "last_payment": "string",
- "address": {
- "address1": "1314 NW GLISAN ST",
- "address2": "Apartment 1",
- "city": "Portland",
- "state_province": "OR",
- "post_code": "97209",
- "country": "us",
- "override_validation": true
}
}
], - "bank_accounts": [
- {
- "currency": "usd",
- "business_name": "John Doe",
- "country": "CA",
- "account_number": "10101234",
- "account_type": "checking",
- "institution_number": "001",
- "branch_number": "03662",
- "routing_number": "",
- "token": "string",
- "nickname": "string",
- "masked_account_number": "string",
- "routing_account_hash_function": "string",
- "routing_account_hash": "string",
- "address": {
- "address_1": "string",
- "city": "string",
- "province": "string",
- "postal_code": "string",
- "country": "US"
}
}
], - "customers": [
- {
- "identifier": "C1234",
- "contacts": [
- {
- "email": "string"
}
]
}
]
}
]
}
Updates a payment method given its wallet and fund identifier/token.
wallet_token required | string Example: 77A81025AC3A The wallet identifier/token |
fund_token required | string Example: CC98U7LI8H91 The fund identifier/token |
credit_card | object (WalletCreditCardPatch) Alternative to fund_token, a credit card object or token reference to an existing credit card |
bank_account | object (WalletBankAccountPatch) Alternative to fund_token, a bank account object or token reference to an existing credit card |
200 response
Precondition Failed - Wallet payment method related errors
Production
UAT
{- "credit_card": {
- "nickname": "Dividend Platinum"
}
}
{- "fund_token": "CC98U7LI8H91"
}
Removes a payment method from wallet given given its wallet and fund identifier/token.
wallet_token required | string Example: 77A81025AC3A The wallet identifier/token |
fund_token required | string Example: CC98U7LI8H91 The fund identifier/token |
200 response
Precondition Failed - Wallet payment method related errors
Production
UAT
{- "fund_token": "CC98U7LI8H91"
}
Payments made to your supplier account from your customers since watermark, limited to 100 payments at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for a subsequent calls.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "wallets": {
- "33196": {
- "token": "E38B7566FE90",
- "credit_cards": [
- {
- "token": "CC7ELZ3ZIRHC",
- "gateway_token": "k8oz6mz8w0ma",
- "cardholder": "Eric Tatum",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 12,
- "expiry_year": 2025,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2020-11-16T14:15:12.000-05:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2020-11-16T14:15:28.000-05:00",
- "last_transaction": "8QK4BYC5468S",
- "last_payment": "4SZR1ZB2GGFU",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "",
- "postal_code": "",
- "line_1": "",
- "line_2": "",
- "created_at": "2020-11-16T14:15:12.000-05:00",
- "updated_at": "2020-11-16T14:15:12.000-05:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3106",
- "contacts": [
- {
- "email": "eric@solupay.com"
}, - {
- "email": "pm@versapay.com"
}
]
}
], - "watermark": 33196
}, - "41383": {
- "token": "3K8ZJ4G663LL",
- "credit_cards": [
- {
- "token": "CC2I5LZZ71TG",
- "gateway_token": "ejia1yr1zbht",
- "cardholder": "Candy Cane",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 1,
- "expiry_year": 2024,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-02-25T11:45:46.000-05:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-02-25T11:46:08.000-05:00",
- "last_transaction": "1TTNG7U92AAD",
- "last_payment": "3553VC71RQIE",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "12345",
- "postal_code": "12345",
- "line_1": "",
- "line_2": "12345",
- "created_at": "2021-02-25T11:45:46.000-05:00",
- "updated_at": "2021-02-25T11:45:46.000-05:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3569",
- "contacts": [
- {
- "email": "abcxyz@abc.com"
}, - {
- "email": "abcxyz123@abc.com"
}
]
}
], - "watermark": 41383
}, - "42327": {
- "token": "6D99F9JX9NJB",
- "credit_cards": [
- {
- "token": "CC1F3BSBLQC1",
- "gateway_token": "ns4gzxbvq1ch",
- "cardholder": "Demo3 NS1",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 10,
- "expiry_year": 2025,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-03-03T22:11:21.000-05:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-03-03T22:26:01.000-05:00",
- "last_transaction": "2ZIMJMFVRG8L",
- "last_payment": "14ZIYYXYEZ38",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "",
- "postal_code": "",
- "line_1": "",
- "line_2": "",
- "created_at": "2021-03-03T22:11:21.000-05:00",
- "updated_at": "2021-03-03T22:11:21.000-05:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3580",
- "contacts": [
- {
- "email": "demo3ns1@abc.com"
}
]
}
], - "watermark": 42327
}, - "42328": {
- "token": "2GX14AMUHU2B",
- "credit_cards": [
- {
- "token": "CC5CGT99ZIU5",
- "gateway_token": "92g1xpkeocne",
- "cardholder": "Jose Parent",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 1,
- "expiry_year": 2025,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-03-04T00:31:44.000-05:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-03-04T00:34:57.000-05:00",
- "last_transaction": "4VV82VHNI6JC",
- "last_payment": "1JBVEQR17U35",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "44087",
- "postal_code": "44087",
- "line_1": "",
- "line_2": "44087",
- "created_at": "2021-03-04T00:31:44.000-05:00",
- "updated_at": "2021-03-04T00:31:44.000-05:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3589",
- "contacts": [
- {
- "email": "joseparent@solupay.com"
}
]
}
], - "watermark": 42328
}, - "42329": {
- "token": "1XMJTMUGISGI",
- "credit_cards": [ ],
- "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3590",
- "contacts": [
- {
- "email": "josechild@solupay.com"
}
]
}
], - "watermark": 42329
}
}
}
Payment records that have been updated in the past 7 days, since watermark, limited to 100 records at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for subsequent calls.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Production
UAT
{- "wallets": {
- "33196": {
- "token": "E38B7566FE90",
- "credit_cards": [
- {
- "token": "CC7ELZ3ZIRHC",
- "gateway_token": "k8oz6mz8w0ma",
- "cardholder": "Eric Tatum",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 12,
- "expiry_year": 2025,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2020-11-16T14:15:12.000-05:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2020-11-16T14:15:28.000-05:00",
- "last_transaction": "8QK4BYC5468S",
- "last_payment": "4SZR1ZB2GGFU",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "",
- "postal_code": "",
- "line_1": "",
- "line_2": "",
- "created_at": "2020-11-16T14:15:12.000-05:00",
- "updated_at": "2020-11-16T14:15:12.000-05:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3106",
- "contacts": [
- {
- "email": "eric@solupay.com"
}, - {
- "email": "pm@versapay.com"
}
]
}
], - "watermark": 33196
}, - "41383": {
- "token": "3K8ZJ4G663LL",
- "credit_cards": [
- {
- "token": "CC2I5LZZ71TG",
- "gateway_token": "ejia1yr1zbht",
- "cardholder": "Candy Cane",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 1,
- "expiry_year": 2024,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-02-25T11:45:46.000-05:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-02-25T11:46:08.000-05:00",
- "last_transaction": "1TTNG7U92AAD",
- "last_payment": "3553VC71RQIE",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "12345",
- "postal_code": "12345",
- "line_1": "",
- "line_2": "12345",
- "created_at": "2021-02-25T11:45:46.000-05:00",
- "updated_at": "2021-02-25T11:45:46.000-05:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3569",
- "contacts": [
- {
- "email": "abcxyz@abc.com"
}, - {
- "email": "abcxyz123@abc.com"
}
]
}
], - "watermark": 41383
}, - "42327": {
- "token": "6D99F9JX9NJB",
- "credit_cards": [
- {
- "token": "CC1F3BSBLQC1",
- "gateway_token": "ns4gzxbvq1ch",
- "cardholder": "Demo3 NS1",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 10,
- "expiry_year": 2025,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-03-03T22:11:21.000-05:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-03-03T22:26:01.000-05:00",
- "last_transaction": "2ZIMJMFVRG8L",
- "last_payment": "14ZIYYXYEZ38",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "",
- "postal_code": "",
- "line_1": "",
- "line_2": "",
- "created_at": "2021-03-03T22:11:21.000-05:00",
- "updated_at": "2021-03-03T22:11:21.000-05:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3580",
- "contacts": [
- {
- "email": "demo3ns1@abc.com"
}
]
}
], - "watermark": 42327
}, - "42328": {
- "token": "2GX14AMUHU2B",
- "credit_cards": [
- {
- "token": "CC5CGT99ZIU5",
- "gateway_token": "92g1xpkeocne",
- "cardholder": "Jose Parent",
- "card_number": "Visa **1111",
- "display_name": "Visa **1111",
- "nickname": null,
- "expiry_month": 1,
- "expiry_year": 2025,
- "is_debit": false,
- "is_default": false,
- "brand": "visa",
- "created": "2021-03-04T00:31:44.000-05:00",
- "locked": false,
- "inactive": false,
- "last_transaction_date": "2021-03-04T00:34:57.000-05:00",
- "last_transaction": "4VV82VHNI6JC",
- "last_payment": "1JBVEQR17U35",
- "address": {
- "address_1": null,
- "address_2": null,
- "city": null,
- "state": null,
- "province": null,
- "country": null,
- "country_name": null,
- "zip": "44087",
- "postal_code": "44087",
- "line_1": "",
- "line_2": "44087",
- "created_at": "2021-03-04T00:31:44.000-05:00",
- "updated_at": "2021-03-04T00:31:44.000-05:00"
}
}
], - "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3589",
- "contacts": [
- {
- "email": "joseparent@solupay.com"
}
]
}
], - "watermark": 42328
}, - "42329": {
- "token": "1XMJTMUGISGI",
- "credit_cards": [ ],
- "bank_accounts": [ ],
- "customers": [
- {
- "identifier": "3590",
- "contacts": [
- {
- "email": "josechild@solupay.com"
}
]
}
], - "watermark": 42329
}
}
}
When using Webhooks, your application will be notified when key events are triggered for a customer.
Create a customer using the following attributes (at minimum by providing values for required attributes). If providing an identifier for an existing customer, its information is updated.
Note: Any additional non-standard attribute will be stored with customer record and available for presentment rendering.
identifier required | string Customer number, must be unique within supplier. Alphanumeric. |
name required | string Customer name. |
string <email> Email address of the default contact. | |
first_name | string First name of the default contact. |
last_name | string Last name of the default contact. |
notes | string Optional text field up to 64K. |
address_1 | string Billing address line 1. |
address_2 | string Billing address line 2. |
city | string Billing address - city. |
province | string Billing address - state or province. |
postal_code | string Billing address - zip or postal code. |
country | string Billing address - country. |
telephone | string Customer phone number. |
fax | string Customer fax number. |
url | string <uri> Customer web site. |
business_number | string Customer EIN or Business Number. 20-character alphanumeric. |
locale | string Enum: "en" "fr" "es" Customer language, based on ISO 639-1 standard. |
parent_identifier | string Required if the customer is part of a hierarchy, and this customer has a level (parent) above it. This is the identifier of the customer immediately above this customer in the tree. |
pdf_attachment_opt_in | boolean Default: false If |
account_status | string Default: "open" Enum: "open" "closed" The status of the customer's account with the supplier. |
last_contact_date | string <date> The last time the customer was contacted. It is ignored if the customer already has a last contact date and it is more recent than this one. |
next_contact_date | string <date> The date of the next planned contact with the customer. This always overwrites what is on the customer. |
credit_limit_cents | integer The customer's credit limit. This is the maximum value of outstanding invoices before the supplier is alerted, if supplier is configured to monitor this. If the customer is a multi-currency customer, this is the total credit limit converted to a single currency (see next field.) |
credit_limit_currency | string Currency of the credit limit. If blank, defaults to the currency of the majority of the customer's invoices. If there are no invoices, defaults to the supplier’s default currency. |
credit_rating | string Credit rating for the customer. |
terms_type | string Enum: "date" "day" This field and |
terms_value | integer This field and If terms_type is 'day':
If terms_type is 'date':
|
company_bio | string Short description of products and services that the customer offers. |
ignores_cc_payment_rules | boolean Default: false If this is |
notification_suppressed | boolean Default: false If this is |
tags | string One or more tags separated by semi-colons. |
external_id | string External (ERP-based) identifier for the customer record. |
external_group_identifier | string External (ERP-based) identifier used to control customer grouping. If the supplier is configured for restricted grouping, the system will not permit a user to group customers together that have different values for If the supplier is not configured for restricted grouping, this value is saved but ignored. |
replace_contacts | boolean Default: false When |
line_item_attributes | Array of objects (Contact) |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "identifier": "C1234",
- "name": "Acme Inc.",
- "email": "bob.smith@example.com",
- "first_name": "Bob",
- "last_name": "Smith",
- "notes": "Payment terms will be revised next year.",
- "address_1": "200 Main Street",
- "address_2": "Suite 250",
- "city": "Toronto",
- "province": "ON",
- "postal_code": "M5M 5M5",
- "country": "CA",
- "telephone": "(416) 123-4567",
- "fax": "(416) 100-1020",
- "url": "www.acmeinc.com",
- "business_number": "GS324587987",
- "locale": "en",
- "parent_identifier": "P3212",
- "pdf_attachment_opt_in": false,
- "account_status": "open",
- "last_contact_date": "2017-12-04",
- "next_contact_date": "2018-02-15",
- "credit_limit_cents": "2000000",
- "credit_limit_currency": "CAD",
- "credit_rating": "AA",
- "terms_type": "date",
- "terms_value": 15,
- "company_bio": "Acme Inc. sells cutting-edge widgets.",
- "ignores_cc_payment_rules": "false",
- "notification_suppressed": "false",
- "tags": "Blue;Green;Yellow",
- "external_id": "string",
- "external_group_identifier": "string",
- "replace_contacts": false,
- "line_item_attributes": [
- {
- "email": "jane.smith@example.com",
- "first_name": "Jane",
- "last_name": "Smith",
- "telephone": "809-888-1234",
- "title": "Buyer"
}, - {
- "email": "bob.smith@example.com",
- "first_name": "Bob",
- "last_name": "Smith",
- "title": "Manager",
- "department": "Accounts Payable",
- "telephone": "809-345-9833"
}, - {
- "email": "steve.jobs@example.com",
- "first_name": "Steve",
- "last_name": "Jobs",
- "title": "CEO"
}
]
}
{- "identifier": "C1234",
- "message": "1 customer with 3 contacts"
}
View a customer based on the identifier
provided.
identifier required | string
|
Successful Operation
Unauthorized
Not Found
Production
UAT
{- "identifier": "163627",
- "name": "21st Century Media",
- "business_number": "",
- "first_name": "",
- "last_name": "",
- "email": "customer+21st@versapay.com",
- "address_1": "",
- "address_2": "",
- "postal_code": "",
- "city": "",
- "province": "",
- "country": "",
- "telephone": "",
- "fax": "",
- "status": "Signed Up",
- "auto_debit": "N",
- "invite_sent": "2016-03-29",
- "signed_up": "2016-03-29",
- "notification_suppressed": "N",
- "notification_override": "N",
- "paper_invoices": "N",
- "paper_statements": "N",
- "balance": "$26,185.00",
- "credit": "$0.00",
- "current": "$0.00",
- "unapplied_payment": "$0.00",
- "aging": "$26,185.00",
- "aging_30": "$0.00",
- "aging_60": "$0.00",
- "aging_90": "$0.00",
- "aging_older": "$26,185.00",
- "notes": "",
- "parent_identifier": "161803",
- "parent_name": "Digital First Media",
- "parent_email": "customer+dfm@versapay.com",
- "adp": "",
- "adp_arc": "",
- "adp_external": "",
- "last_contact_date": "",
- "next_contact_date": "",
- "credit_limit": "$0.00",
- "oldest_open_invoice": "5557488",
- "oldest_open_invoice_age": "1726",
- "oldest_open_invoice_balance": "$1,325.00",
- "last_payment_date": "",
- "last_payment_amount": "$0.00",
- "last_payment_source": "",
- "account_status": "open",
- "tags": "",
- "user_tags": "A+ Customer;Tester A;91+ $2500+ Test Tag",
- "divisions_names": "",
- "divisions_codes": "",
- "group_id": "",
- "external_group_identifier": "",
- "credit_card_fee_exempt": "N",
- "auto_update_cc_expiry": "N",
- "cash_on_delivery": "N",
- "watermark": 10917589,
- "contacts": [
- {
- "email": "customer+21st@versapay.com",
- "first_name": null,
- "last_name": null,
- "telephone": null,
- "title": null,
- "department": null,
- "activated_at": "2016-03-29T18:41:19.000Z",
- "invited_at": "2016-03-29T18:41:19.000Z",
- "login_at": "2016-05-19T19:03:07.000Z",
- "user_first_name": null,
- "user_last_name": null,
- "user_role": "admin",
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}, - {
- "email": "dteets@21st-centurymedia.com",
- "first_name": null,
- "last_name": null,
- "telephone": null,
- "title": null,
- "department": null,
- "activated_at": null,
- "invited_at": null,
- "login_at": null,
- "user_first_name": null,
- "user_last_name": null,
- "user_role": null,
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}
]
}
Customer records that have been created since watermark, limited to 100 records at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for subsequent calls.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "customers": {
- "11748591": {
- "identifier": "163067",
- "name": "21st Century Media",
- "business_number": "",
- "first_name": "",
- "last_name": "",
- "email": "ssc-ap@medianewsgroup.com",
- "address_1": "",
- "address_2": "",
- "postal_code": "",
- "city": "",
- "province": "",
- "country": "",
- "telephone": "",
- "fax": "",
- "status": "Paying",
- "auto_debit": "N",
- "invite_sent": "2016-06-24",
- "signed_up": "",
- "notification_suppressed": "N",
- "notification_override": "N",
- "paper_invoices": "N",
- "paper_statements": "N",
- "balance": "$232,720.00",
- "credit": "$0.00",
- "current": "$222,220.00",
- "unapplied_payment": "$0.00",
- "aging": "$10,500.00",
- "aging_30": "$0.00",
- "aging_60": "$0.00",
- "aging_90": "$0.00",
- "aging_older": "$10,500.00",
- "notes": "",
- "parent_identifier": "162308",
- "parent_name": "21st Century Newspapers",
- "parent_email": "customer+century21news@versapay.com",
- "adp": "",
- "adp_arc": "",
- "adp_external": "",
- "last_contact_date": "",
- "next_contact_date": "",
- "credit_limit": "$0.00",
- "oldest_open_invoice": "5557819",
- "oldest_open_invoice_age": "1729",
- "oldest_open_invoice_balance": "$10,500.00",
- "last_payment_date": "2016-05-03",
- "last_payment_amount": "$2,088.00",
- "last_payment_source": "arc",
- "account_status": "open",
- "tags": "",
- "user_tags": "B customres;91+ $2500+ Test Tag",
- "divisions_names": "REED",
- "divisions_codes": "REED",
- "credit_card_fee_exempt": "N",
- "auto_update_cc_expiry": "N",
- "cash_on_delivery": "N",
- "watermark": 11748591,
- "contacts": [
- {
- "email": "ssc-ap@medianewsgroup.com",
- "first_name": null,
- "last_name": null,
- "telephone": null,
- "title": null,
- "department": null,
- "activated_at": "2016-06-24T14:18:23.000Z",
- "invited_at": "2016-06-24T14:18:23.000Z",
- "login_at": null,
- "user_first_name": null,
- "user_last_name": null,
- "user_role": null,
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}
]
}, - "11748595": {
- "identifier": "10552",
- "name": "Porsche Corp",
- "business_number": "",
- "first_name": "one",
- "last_name": "customer+pd1@versapay.com",
- "email": "customer+abcmedia-porsche@versapay.com",
- "address_1": "",
- "address_2": "",
- "postal_code": "",
- "city": "",
- "province": "",
- "country": "",
- "telephone": "",
- "fax": "",
- "status": "Express",
- "auto_debit": "N",
- "invite_sent": "2016-04-21",
- "signed_up": "",
- "notification_suppressed": "N",
- "notification_override": "N",
- "paper_invoices": "N",
- "paper_statements": "N",
- "balance": "$1,133,854.00",
- "credit": "$-2,626.00",
- "current": "$1,000,000.00",
- "unapplied_payment": "$0.00",
- "aging": "$136,480.00",
- "aging_30": "$0.00",
- "aging_60": "$0.00",
- "aging_90": "$0.00",
- "aging_older": "$136,480.00",
- "notes": "Reindex this please",
- "parent_identifier": "",
- "parent_name": "",
- "parent_email": "",
- "adp": "",
- "adp_arc": "",
- "adp_external": "",
- "last_contact_date": "",
- "next_contact_date": "2020-02-11",
- "credit_limit": "$0.00",
- "oldest_open_invoice": "5557833",
- "oldest_open_invoice_age": "1697",
- "oldest_open_invoice_balance": "$70,000.00",
- "last_payment_date": "",
- "last_payment_amount": "$0.00",
- "last_payment_source": "",
- "account_status": "open",
- "tags": "",
- "user_tags": "B customres;91+ $2500+ Test Tag;5 people",
- "divisions_names": "REED;TMS",
- "divisions_codes": "REED;TMS",
- "credit_card_fee_exempt": "N",
- "auto_update_cc_expiry": "N",
- "cash_on_delivery": "N",
- "watermark": 11748595,
- "contacts"": [
- {
- "email": "customer+abcmedia-porsche@versapay.com",
- "first_name": null,
- "last_name": null,
- "telephone": null,
- "title": null,
- "department": null,
- "activated_at": "2016-04-21T18:08:36.000Z",
- "invited_at": "2016-04-21T18:08:36.000Z",
- "login_at": "2017-01-10T15:39:31.000Z",
- "user_first_name": null,
- "user_last_name": null,
- "user_role": "admin",
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}, - {
- "email": "customer+pd1@versapay.com",
- "first_name": "pd",
- "last_name": "one",
- "telephone": "416 212-0000",
- "title": null,
- "department": null,
- "activated_at": null,
- "invited_at": null,
- "login_at": null,
- "user_first_name": null,
- "user_last_name": null,
- "user_role": null,
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}, - {
- "email": "customer+pd2@versapay.com",
- "first_name": "pd",
- "last_name": "two",
- "telephone": "416 212-0000",
- "title": null,
- "department": null,
- "activated_at": null,
- "invited_at": null,
- "login_at": null,
- "user_first_name": null,
- "user_last_name": null,
- "user_role": null,
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}, - {
- "email": "customer+pd3@versapay.com",
- "first_name": "pd",
- "last_name": "three",
- "telephone": "416 212-0000",
- "title": null,
- "department": null,
- "activated_at": null,
- "invited_at": null,
- "login_at": null,
- "user_first_name": null,
- "user_last_name": null,
- "user_role": null,
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}
]
}
}
}
Customer records that have been updated in the past 7 days, since watermark, limited to 100 records at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for subsequent calls.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "customers": {
- "11748591": {
- "identifier": "163067",
- "name": "21st Century Media",
- "business_number": "",
- "first_name": "",
- "last_name": "",
- "email": "ssc-ap@medianewsgroup.com",
- "address_1": "",
- "address_2": "",
- "postal_code": "",
- "city": "",
- "province": "",
- "country": "",
- "telephone": "",
- "fax": "",
- "status": "Paying",
- "auto_debit": "N",
- "invite_sent": "2016-06-24",
- "signed_up": "",
- "notification_suppressed": "N",
- "notification_override": "N",
- "paper_invoices": "N",
- "paper_statements": "N",
- "balance": "$232,720.00",
- "credit": "$0.00",
- "current": "$222,220.00",
- "unapplied_payment": "$0.00",
- "aging": "$10,500.00",
- "aging_30": "$0.00",
- "aging_60": "$0.00",
- "aging_90": "$0.00",
- "aging_older": "$10,500.00",
- "notes": "",
- "parent_identifier": "162308",
- "parent_name": "21st Century Newspapers",
- "parent_email": "customer+century21news@versapay.com",
- "adp": "",
- "adp_arc": "",
- "adp_external": "",
- "last_contact_date": "",
- "next_contact_date": "",
- "credit_limit": "$0.00",
- "oldest_open_invoice": "5557819",
- "oldest_open_invoice_age": "1729",
- "oldest_open_invoice_balance": "$10,500.00",
- "last_payment_date": "2016-05-03",
- "last_payment_amount": "$2,088.00",
- "last_payment_source": "arc",
- "account_status": "open",
- "tags": "",
- "user_tags": "B customres;91+ $2500+ Test Tag",
- "divisions_names": "REED",
- "divisions_codes": "REED",
- "credit_card_fee_exempt": "N",
- "auto_update_cc_expiry": "N",
- "cash_on_delivery": "N",
- "watermark": 11748591,
- "contacts": [
- {
- "email": "ssc-ap@medianewsgroup.com",
- "first_name": null,
- "last_name": null,
- "telephone": null,
- "title": null,
- "department": null,
- "activated_at": "2016-06-24T14:18:23.000Z",
- "invited_at": "2016-06-24T14:18:23.000Z",
- "login_at": null,
- "user_first_name": null,
- "user_last_name": null,
- "user_role": null,
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}
]
}, - "11748595": {
- "identifier": "10552",
- "name": "Porsche Corp",
- "business_number": "",
- "first_name": "one",
- "last_name": "customer+pd1@versapay.com",
- "email": "customer+abcmedia-porsche@versapay.com",
- "address_1": "",
- "address_2": "",
- "postal_code": "",
- "city": "",
- "province": "",
- "country": "",
- "telephone": "",
- "fax": "",
- "status": "Express",
- "auto_debit": "N",
- "invite_sent": "2016-04-21",
- "signed_up": "",
- "notification_suppressed": "N",
- "notification_override": "N",
- "paper_invoices": "N",
- "paper_statements": "N",
- "balance": "$1,133,854.00",
- "credit": "$-2,626.00",
- "current": "$1,000,000.00",
- "unapplied_payment": "$0.00",
- "aging": "$136,480.00",
- "aging_30": "$0.00",
- "aging_60": "$0.00",
- "aging_90": "$0.00",
- "aging_older": "$136,480.00",
- "notes": "Reindex this please",
- "parent_identifier": "",
- "parent_name": "",
- "parent_email": "",
- "adp": "",
- "adp_arc": "",
- "adp_external": "",
- "last_contact_date": "",
- "next_contact_date": "2020-02-11",
- "credit_limit": "$0.00",
- "oldest_open_invoice": "5557833",
- "oldest_open_invoice_age": "1697",
- "oldest_open_invoice_balance": "$70,000.00",
- "last_payment_date": "",
- "last_payment_amount": "$0.00",
- "last_payment_source": "",
- "account_status": "open",
- "tags": "",
- "user_tags": "B customres;91+ $2500+ Test Tag;5 people",
- "divisions_names": "REED;TMS",
- "divisions_codes": "REED;TMS",
- "credit_card_fee_exempt": "N",
- "auto_update_cc_expiry": "N",
- "cash_on_delivery": "N",
- "watermark": 11748595,
- "contacts"": [
- {
- "email": "customer+abcmedia-porsche@versapay.com",
- "first_name": null,
- "last_name": null,
- "telephone": null,
- "title": null,
- "department": null,
- "activated_at": "2016-04-21T18:08:36.000Z",
- "invited_at": "2016-04-21T18:08:36.000Z",
- "login_at": "2017-01-10T15:39:31.000Z",
- "user_first_name": null,
- "user_last_name": null,
- "user_role": "admin",
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}, - {
- "email": "customer+pd1@versapay.com",
- "first_name": "pd",
- "last_name": "one",
- "telephone": "416 212-0000",
- "title": null,
- "department": null,
- "activated_at": null,
- "invited_at": null,
- "login_at": null,
- "user_first_name": null,
- "user_last_name": null,
- "user_role": null,
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}, - {
- "email": "customer+pd2@versapay.com",
- "first_name": "pd",
- "last_name": "two",
- "telephone": "416 212-0000",
- "title": null,
- "department": null,
- "activated_at": null,
- "invited_at": null,
- "login_at": null,
- "user_first_name": null,
- "user_last_name": null,
- "user_role": null,
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}, - {
- "email": "customer+pd3@versapay.com",
- "first_name": "pd",
- "last_name": "three",
- "telephone": "416 212-0000",
- "title": null,
- "department": null,
- "activated_at": null,
- "invited_at": null,
- "login_at": null,
- "user_first_name": null,
- "user_last_name": null,
- "user_role": null,
- "user_telephone": null,
- "user_title": null,
- "user_department": null
}
]
}
}
}
Invoice records with an open balance for the customer based on the identifier
provided,
limited to 100 records at a time.
A consumer should store the last watermark
value of each
response and include it as the watermark parameter for subsequent calls.
identifier required | string
|
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Not Found
Precondition Failed
Production
UAT
{- "open_invoices": [
- {
- "number": "sh763-h3454-dh3432",
- "display_number": "INV1234",
- "currency": "usd",
- "amount_cents": 40000,
- "owing_cents": 30000,
- "customer_identifier": "CUS001",
- "watermark": 8123612
}, - {
- "number": "pq7d2-h3124-jl3937",
- "display_number": "INV5678",
- "currency": "usd",
- "amount_cents": -10000,
- "owing_cents": -10000,
- "customer_identifier": "CUS001",
- "watermark": 8123615
}
]
}
Issue a new contact invitation for the specified customer. The recipient of the invitation will begin to receive other Collaborative AR notifications, subject to the configuration of the supplier.
Note: If the provided email is not an existing contact of the specified customer, a new contact will be created.
identifier required | string the |
email required | string Contact email address. |
Successfully Invited
Bad Request
Unauthorized
Forbidden
Not Found
Production
UAT
{- "identifier": "CUS001",
- "email": "bob.smith@example.com"
}
{ }
Cancel an existing contact invitation for the specified customer.
Note: 403
will be returned if the specified customer is closed, or if the specified email was invited by a customer user
identifier required | string the |
email required | string Contact email address. |
Invitation Successfully Cancelled
Bad Request
Unauthorized
Forbidden
Not Found
Production
UAT
{- "identifier": "CUS001",
- "email": "bob.smith@example.com"
}
{ }
Update a customer's identifier and any associations where identifier is being stored.
Note: 412
will be returned if the specified customer cannot be found or the identifier has already been taken.
identifier required | string
|
new_identifier required | string Customer's new identifier to be used. Must be unique within supplier. |
Customer Successfully Updated.
Precondition failed.
Production
UAT
{- "new_identifier": "CUS-1001"
}
{- "message": "customer identifier updated",
- "identifier": "CUS-1001"
}
When using Webhooks, your application will be notified when key events are triggered for an invoice.
Create and update invoices. If the invoice already exists when a request is processed, it will be updated. If attachment is provided, will include the document in the invoice.
The set of attributes to send in the request body may vary based on the account configuration. Please contact the implementation specialist for more information.
Note:
number required | string Invoice number, must be unique within supplier. |
display_number | string Invoice number as displayed to customers. Optional if this is the same as |
currency | string Currency code, based on ISO-4217. E.g. |
amount | integer The invoice amount in cents. |
replace_line_items | boolean When provided and True, line items in the DB that are not in the input file will be deleted. |
amount_override | boolean When provided and True, the amount provided in an update import will overwrite the amount that would normally be calculated from line items. |
attachment | object When provided, it uses the provided inline pdf (as base64) as the invoice template/rendering. |
subtotal_tax1 | integer Tax amount in cents. |
subtotal_tax2 | integer Additional field to carry tax amount (in cents). For example, when invoice shows state (provincial) and federal taxes. |
customer_identifier required | string Unique identifier for customer. |
date | string <date> Invoice date, YYYY-MM-DD, based on ISO-8601. |
order_date | string <date> Order date, YYYY-MM-DD. |
due_date | string <date> Invoice due date, YYYY-MM-DD. |
purchase_order_number | string Purchase order number. |
notes_text | string Optional text field up to 64K. |
shipping_name | string Shipping address: recipient name |
shipping_address_1 | string Shipping address: line 1 |
shipping_address_2 | string Shipping address: line 2 |
shipping_city | string Shipping address: city |
shipping_province | string Shipping address: state or province. Based on the second part (after hyphen) of codes in ISO 3166-2 standard. E.g. "ON" for Ontario, "CA" for California |
shipping_postal_code | string Shipping address: zip or postal code |
shipping_country | string Shipping address: country |
line_item_attributes | Array of objects (LineItem) Details of each line-item for the invoice. Any additional non-standard attribute will be stored with the line-item record and available for presentment rendering. |
auto_debit | string Enum: "Y" "N" Explicitly states whether an invoice, having an owing/open balance, |
division | string Division Code. Required only if supplier supports divisions. If supplier supports divisions and is configured for dynamic division creation, this value is used to create a new division if one does not already exist. |
division_name | string Division Name. Optional value. Relevant only if supplier supports divisions and is configured for dynamic division creation, otherwise ignored. This value is assigned to the name of a newly created division. Existing divisions will not be updated by this value. |
auto_debit_reference | string For AutoPay agreements that reference a policy# or contract#, etc., specify that number. |
owing_cents | integer Balance remaining on this invoice or credit memo. Required if supplier is configured for Balance Sync, otherwise ignored. |
ref1 | string A reference that is meaningful to the customer, e.g. Policy number, contract number, etc. |
ref2 | string As above. |
ref3 | string As above. |
adjustments_attributes | Array of objects Adjustments such as Fuel Surcharge. |
plan_identifier | string Payment plan template identifier. If populated, this puts the invoice on a payment plan. Required if supplier is configured for payment plans. |
plan_start_date | string <date> Payment plan start date. Required if supplier is configured for payment plans. |
plan_end_date | string <date> Payment plan end date. Required if supplier is configured for payment plans. |
plan_payment_cents | integer Payment plan recurring payment amount. Required if supplier is configured for payment plans. |
annualized_amount_cents | integer The annual invoice amount. When this is populated, the importer will calculate a pro-rated invoice amount based on the next two dates. Required if the supplier is configured for payment plans. |
annualized_effective_date | string <date> The date that the annualized_amount takes effect. Mandatory if annualized_amount is populated. |
annualized_expiry_date | string <date> The end date of the period for which the annualized_amount is in effect. Mandatory if annualized_amount is populated. The difference between this date and the effective date (inclusive) is used to pro-rate the invoice amount or any adjustments to the amount. |
external_id | string Optional external identifier for the invoice to be included in payment exports. |
summary_invoice_parent | string Flag that indicates if the invoice is a summary invoice. Default is 0 (invoice is not a summary invoice). |
summary_invoice_number | string If the invoice in the row is a child of a summary invoice, that summary invoice's identifier appears here. |
service_rep_email | string One or more supplier user email addresses (semi-colon delimited) that will be used for notification routing eg when in dispute each specified rep is notified only. |
discount_amount_cents | integer Amount in cents of already computed discount. Requires supplier discount configuration to be enabled. |
discount_rate | float Floating point rate of discount. For example, .05 represents 5%. The importer will calculate discount_amount_cents based on this field and the invoice amount. Note: if this field is provided, the amount will always be calculated, even if discount_amount_cents is provided. Therefore only include this field if the intention is to have the importer calculate. Requires supplier discount configuration to be enabled. |
discount_expiry_date | date The date by which the discount should expire. Requires supplier discount configuration to be enabled. |
echo | string Optional setting. When set to |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "number": "sh763-h3454-dh3432",
- "display_number": "INV1234",
- "customer_identifier": "CUS001",
- "purchase_order_number": "PO-3847",
- "amount": 40000,
- "currency": "usd",
- "date": "2017-11-01",
- "due_date": "2017-12-15",
- "notes_text": "Thank you for your business",
- "shipping_name": "Acme Inc.",
- "shipping_address_1": "1 Main Street",
- "shipping_address_2": "Suite 600",
- "shipping_postal_code": "90210",
- "shipping_city": "New York",
- "shipping_province": "NY",
- "owing_cents": 30000,
- "discount_amount_cents": 39999,
- "discount_expiry_date": "2017-11-15",
- "replace_line_items": false,
- "amount_override": false,
- "line_item_attributes": [
- {
- "number": "1",
- "item_number": "A3947C9878",
- "description": "Modems",
- "quantity": 40,
- "unit_cost_cents": 1000,
- "amount": 40000
}
], - "echo": "pay_urls"
}
{- "identifier": "INV002",
- "message": "1 invoice 1 line items",
- "pay_urls": {
}
}
View an invoice.
The path parameter number_or_id
is matched to the invoice number
, display_number
or id
, in that order.
number_or_id required | string
|
options | any An array of additional options that determine if extra data should be fetched for the invoice |
options[payments] | any When this option is present: |
Successful Operation
Unauthorized
Not Found
Production
UAT
{- "number": "sh763-h3454-dh3432",
- "display_number": "INV1234",
- "customer_identifier": "CUS001",
- "amount_cents": 40000,
- "owing_cents": 30000,
- "subtotal_tax1": "$0.00",
- "subtotal_tax2": "$0.00",
- "currency": "usd",
- "date": "2017-11-01",
- "due_date": "2017-12-15",
- "order_date": null,
- "purchase_order_number": "PO-3847",
- "notes_text": "Thank you for your business",
- "shipping_name": "Acme Inc.",
- "shipping_address": {
- "address_1": "1 Main Street",
- "address_2": "Suite 600",
- "city": "New York",
- "state": "NY",
- "zip": "90210",
- "country": "US",
- "country_name": "United States",
- "line_1": "1 Main Street, Suite 600",
- "line_2": "New York, NY 90210"
}, - "line_item_attributes": [
- {
- "number": "001",
- "description": "Modems",
- "amount_cents": 40000,
- "balance_cents": 40000,
- "quantity": 40,
- "unit_cost_cents": 1000,
- "id": 6935660,
- "identifier": "acme|sh763-h3454-dh3432|001",
- "invoice_id": 4344538,
- "order_key": null,
- "purchase_order_number": null,
- "recurring_invoice_id": null,
- "extended_attributes": {
- "item_number": "A3947C9878"
}
}
], - "auto_debit": true,
- "division": "770",
- "auto_pay_reference": null,
- "ref1": null,
- "ref2": null,
- "ref3": null,
- "adjustments_attributes": [
- {
- "label": "Surcharge",
- "amount_cents": 2000,
- "id": 2212,
- "invoice_id": 4344538,
- "recurring_invoice_id": null
}
], - "plan_identifier": null,
- "plan_start_date": null,
- "plan_end_date": null,
- "plan_payment_cents": null,
- "annualized_amount_cents": null,
- "annualized_effective_date": null,
- "annualized_expiry_date": null,
- "external_id": null,
- "status": "CURRENT",
- "delivery_status": "not_sent",
- "extended_attributes": {
- "lease_type": "LS",
- "currency_mode": "D"
}, - "summary_invoice_parent": 0,
- "summary_invoice_number": null,
- "service_rep_email": "john.doe@supplier.com;jane.doe@supplier.com",
- "pay_urls": {
}, - "payments": [
- {
- "payment_reference": "959YTHNMESPV",
- "invoice_number": 1,
- "date": "2022-10-26T00:00:00.000Z",
- "amount": 870,
- "plan_fee": 0,
- "payment_amount": 870,
- "payment_transaction_amount": 870,
- "payment_transaction_token": "9559NENM23SK",
- "payment_method": "(0013)",
- "payment_from_bank_account": true,
- "payment_from_credit_card": false,
- "payment_institution_name": null,
- "payment_credit_card_brand": null,
- "short_pay_indicator": "Y",
- "payment_note": null,
- "auto_debit_indicator": "N",
- "invoice_balance": 5030,
- "payment_timestamp": "2022-10-26T16:40:36.000Z",
- "invoice_division": "CTL",
- "invoice_division_number": null,
- "invoice_division_name": "Central",
- "pay_to_bank_account": 100007,
- "pay_to_bank_account_name": "(0007)",
- "settlement_token": "BA7G777DNABC",
- "customer_identifier": "C10",
- "customer_name": "Customer 10 Williamson",
- "status": "PAID",
- "payment_source": "ARC",
- "payment_code": null,
- "payment_description": null,
- "gateway_authorization_code": "TM37E6",
- "purchase_order_number": null,
- "ref1": null,
- "ref2": null,
- "ref3": null,
- "short_pay_reason_identifier": null,
- "short_pay_reason": null,
- "dispute_reason_identifier": null,
- "dispute_reason": null,
- "invoice_amount_paid": 870,
- "invoice_amount": 5900,
- "invoice_identifier": "global|1",
- "invoice_date": "2022-10-26T00:00:00.000Z",
- "invoice_external_id": null,
- "invoice_currency": "usd",
- "invoice_purchase_order_number": "new_line_item_short_pay_invoice_1",
- "invoice_ref1": null,
- "invoice_ref2": null,
- "invoice_ref3": null,
- "cumulative_customer_amount": 870,
- "checkout_token": "6JQSRWISTPA4",
- "status_reason": null,
- "payment_transaction_fee": 0,
- "settlement_date": null,
- "customer_address": null,
- "payor_name": null,
- "payor_phone": null,
- "payor_email": "multi@example.com",
- "cardholder_name": null,
- "fund_token": "BA1WYKRYHLLS",
- "card_expiry_year": null,
- "card_expiry_month": null,
- "order_identifier": null,
- "order_number": null,
- "order_document_type": null,
- "external_payment_number": null,
- "external_payment_type": null,
- "ref4": null,
- "invoice_ref4": null,
- "watermark": 1888,
- "line_item_transactional_amounts": [
- {
- "line_item_number": "8cc21f8a-ddcd-4bfe-915f-3e7480068444",
- "line_item_payment_amount": 20,
- "line_item_balance": 0,
- "line_item_short_pay_indicator": "N",
- "line_item_payment_note": "will pay later",
- "line_item_short_pay_reason_identifier": null,
- "line_item_short_pay_reason": null,
- "line_item_dispute_reason_identifier": null,
- "line_item_dispute_reason": null,
- "line_item_extended_attributes": { }
}, - {
- "line_item_number": "214db37e-3b92-4705-960f-ccb585bc0fce",
- "line_item_payment_amount": 210,
- "line_item_balance": 0,
- "line_item_short_pay_indicator": "N",
- "line_item_payment_note": "will pay later",
- "line_item_short_pay_reason_identifier": null,
- "line_item_short_pay_reason": null,
- "line_item_dispute_reason_identifier": null,
- "line_item_dispute_reason": null,
- "line_item_extended_attributes": { }
}, - {
- "line_item_number": "a32a21c0-01f0-43b7-be2e-8f45504e5800",
- "line_item_payment_amount": 640,
- "line_item_balance": 0,
- "line_item_short_pay_indicator": "N",
- "line_item_payment_note": "sorry",
- "line_item_short_pay_reason_identifier": null,
- "line_item_short_pay_reason": null,
- "line_item_dispute_reason_identifier": null,
- "line_item_dispute_reason": null,
- "line_item_extended_attributes": { }
}
]
}
]
}
Invoice records that have been updated in the past 7 days, since watermark, limited to 100 records at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for subsequent calls.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "invoices": {
- "13207501": {
- "number": "sh763-h3454-dh3432",
- "display_number": "INV1234",
- "customer_identifier": "CUS001",
- "amount_cents": 40000,
- "owing_cents": 30000,
- "subtotal_tax1": "$0.00",
- "subtotal_tax2": "$0.00",
- "currency": "usd",
- "date": "2017-11-01",
- "due_date": "2017-12-15",
- "order_date": null,
- "purchase_order_number": "PO-3847",
- "notes_text": "Thank you for your business",
- "shipping_name": "Acme Inc.",
- "shipping_address": {
- "address_1": "1 Main Street",
- "address_2": "Suite 600",
- "city": "New York",
- "state": "NY",
- "zip": "90210",
- "country": "US",
- "country_name": "United States",
- "line_1": "1 Main Street, Suite 600",
- "line_2": "New York, NY 90210"
}, - "line_item_attributes": [
- {
- "number": "001",
- "description": "Modems",
- "amount_cents": 40000,
- "balance_cents": 40000,
- "quantity": 40,
- "unit_cost_cents": 1000,
- "id": 6935660,
- "identifier": "acme|sh763-h3454-dh3432|001",
- "invoice_id": 4344538,
- "order_key": null,
- "purchase_order_number": null,
- "recurring_invoice_id": null,
- "extended_attributes": {
- "item_number": "A3947C9878"
}
}
], - "auto_debit": true,
- "division": "770",
- "auto_pay_reference": null,
- "ref1": null,
- "ref2": null,
- "ref3": null,
- "adjustments_attributes": [
- {
- "label": "Surcharge",
- "amount_cents": 2000,
- "id": 2212,
- "invoice_id": 4344538,
- "recurring_invoice_id": null
}
], - "plan_identifier": null,
- "plan_start_date": null,
- "plan_end_date": null,
- "plan_payment_cents": null,
- "annualized_amount_cents": null,
- "annualized_effective_date": null,
- "annualized_expiry_date": null,
- "external_id": null,
- "status": "CURRENT",
- "delivery_status": "not_sent",
- "extended_attributes": {
- "lease_type": "LS",
- "currency_mode": "D"
}, - "summary_invoice_parent": 0,
- "summary_invoice_number": null,
- "service_rep_email": "john.doe@supplier.com;jane.doe@supplier.com"
}
}
}
Invoice records with an open balance, limited to 100 records at a time.
A supplier should store the last watermark
value of each
response and include it as the watermark parameter for subsequent calls.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "invoices": {
- "13207501": {
- "identifier": "example|invoice1SZTYMS",
- "number": "invoice1SZTYMS",
- "display_number": "invoice1SZTYMS",
- "amount_cents": 249530,
- "currency": "usd",
- "subtotal_cents": 249530,
- "subtotal1_tax_cents": null,
- "subtotal2_tax_cents": null,
- "customer_identifier": "CUS001",
- "date": "2022-08-29",
- "due_date": "2022-08-29",
- "purchase_order_number": "PO-BZMGNZIZ",
- "notes_text": null,
- "shipping_name": null,
- "shipping_address_1": null,
- "shipping_address_2": null,
- "shipping_city": null,
- "shipping_state": null,
- "shipping_zip": null,
- "auto_debit": 1,
- "division": "ATL",
- "auto_debit_reference": null,
- "auto_pay_reference": null,
- "owing_cents": 249530,
- "ref1": null,
- "ref2": null,
- "ref3": null,
- "ref4": null,
- "external_id": null,
- "delivery_status": "not_sent",
- "payment_date": null,
- "discount_expiry_date": null,
- "discount_rate": null,
- "discount_amount_cents": 0
}, - "13207502": {
- "identifier": "example|invoice2TRVEPE",
- "number": "invoice2TRVEPE",
- "display_number": "invoice2TRVEPE",
- "amount_cents": -158088,
- "currency": "usd",
- "subtotal_cents": -158088,
- "subtotal1_tax_cents": null,
- "subtotal2_tax_cents": null,
- "customer_identifier": "CUS002",
- "date": "2022-11-05",
- "due_date": "2022-12-05",
- "purchase_order_number": "PO-SWGHBBRN",
- "notes_text": null,
- "shipping_name": null,
- "shipping_address_1": null,
- "shipping_address_2": null,
- "shipping_city": null,
- "shipping_state": null,
- "shipping_zip": null,
- "auto_debit": 1,
- "division": "CTL",
- "auto_debit_reference": null,
- "auto_pay_reference": null,
- "owing_cents": -158088,
- "ref1": null,
- "ref2": null,
- "ref3": null,
- "ref4": null,
- "external_id": null,
- "delivery_status": "not_sent",
- "payment_date": null,
- "discount_expiry_date": null,
- "discount_rate": null,
- "discount_amount_cents": 0
}
}
}
Autopays are a digital analog to paper pre-authorized debit agreements that businesses could use, for instance, for monthly billing.
autopay_reference | Array of strings or string |
customer_identifier required | string Customer Identifier. |
fund_token required | string The fund token to be used for autopay. |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "autopay_reference": [
- "REF123",
- "REF234"
], - "customer_identifier": "CUS123",
- "fund_token": "TOKEN123"
}
{- "token": "TOKEN123"
}
Updates a autopay fund
customer_identifier required | string Customer Identifier. |
fund_token required | string New token of the required fund. |
token required | string Old token of the required fund. |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "customer_identifier": "CUS123",
- "fund_token": "NEWTOKEN123",
- "token": "OLDTOKEN123"
}
{- "error": "You need to sign in or create an account before continuing."
}
Gets all the autopay for a customer
customer_identifier required | string Customer Identifier. |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "customer_identifier": "CUS123"
}
{- "agreement_token": "TOKEN123",
- "fund_token": "TOKEN123",
- "timing": "AutoPay on Due Date",
- "autopay_limit": "None",
- "autopay_reference": "TOKEN123",
- "autopay_inherited_from_customer_identifier": "CUST123",
- "can_delete": true
}
Revoke an approved autopay for your account by supplying an agreement's token attribute. The agreement's creator will no longer be able to debit your account using this autopay agreement.
customer_identifier required | string Customer Identifier. |
token required | string The token of the autopay agreement. |
Successful Operation
Production
UAT
{- "customer_identifier": "CUS123",
- "token": "TOKEN123"
}
When using Webhooks, your application will be notified when key events are triggered for a payment.
Create and update external payments.
The set of attributes to send in the request body may vary based on the account configuration. Please contact the implementation specialist for more information.
The request schema for posting a payment for a single invoice is slightly different than that for posting a payment for multiple invoices.
For instance, sample request for posting payment for a single invoice looks like:
{
"identifier": "PMT0010-05",
"invoice_number": "INV1234-01",
"amount": 10000,
"currency": "usd",
"date": "2018-01-10",
"customer_identifier": "C1234",
"customer_name": "Acme Inc.",
"notes": "Notes",
"ref1": "1234",
"ref2": "PO# 84767"
}
Note: Customer will be created using the customer_* attributes if it doesn’t already exist at the time of payment import.
identifier required | string Payment identifier; must be unique within supplier. May appear multiple times in a single file if payment was applied to multiple invoices. |
amount_cents | integer The amount of total payment, in cents. Note: when providing data in a CSV layout this field can also be represented as payment_total; however, in JSON layout this field must be called amount_cents. Note 2: For the update of a payment originated in Versapay, only the total payment amount without fees, or the total payment amount with fees will be accepted. Any other value will be rejected. |
date | string <date> Payment date, in the format YYYY-MM-DD. |
currency | string Currency code, based on ISO-4217. |
invoice_number | string Invoice number associated with this payment (if payment covers single invoice).
If payment covers multiple invoices, provide |
payment_code | string Payment code |
payment_description | string Description corresponding to payment code. |
payment_amounts_attributes | Array of objects Applicable only when payment covers multiple invoices. |
division | string Division code, if divisions are set up. This value will be used for all |
customer_identifier | string Customer identifier. |
customer_name | string Customer name. |
external_payment_type | string When provided identifies this payment as having been processed externally E.g. cash, check/cheque, wire, ACH, Paypal, etc. |
external_payment_number | string When provided identifies this payment as having been processed externally, its value corresponding to the type above. E.g. the actual cheque number. |
payor_bank_branch_number | string Branch (if CAD) or Routing number (if USD). Useful when external_payment_type = check/cheque. |
payor_bank_account_number | string Bank account number. Useful when external_payment_type = check/cheque. |
payor_name | string Name of entity or business making the payment. May or may not be the same as customer name on invoice. |
settlement_date | string <date> Settlement date, in the format YYYY-MM-DD. |
external_id | string The internal reference of the payment as originated from a source system, typically used by ERP connectors to aid in synchronizing payment data. |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "identifier": "PMT001-05",
- "amount_cents": 10000,
- "currency": "usd",
- "date": "2017-12-02",
- "customer_identifier": "CUS001",
- "payment_amounts_attributes": [
- {
- "invoice_number": "INV004",
- "amount": 8000
}, - {
- "invoice_number": "INV010",
- "amount": 2000
}
]
}
{- "identifier": "PMT123",
- "message": "1 payment 1 invoice amounts"
}
View a payment.
The path parameter reference_or_token
is matched to the payment's payment_reference
or payment_transaction_token
, in that order.
reference_or_token required | string The payment's |
options[export_payment_tree] | any When present: |
Successful Operation
Unauthorized
Not Found
Production
UAT
{- "payment_reference": "string",
- "date": "2024-11-11",
- "payment_amount": "string",
- "payment_transaction_amount": "string",
- "payment_method": "string",
- "auto_debit_indicator": "string",
- "payment_timestamp": "string",
- "customer_identifier": "string",
- "customer_name": "string",
- "status": "IN PROGRESS",
- "status_reason": "string",
- "payment_source": "string",
- "payment_code": "string",
- "payment_description": "string",
- "gateway_authorization_code": "string",
- "pay_to_bank_account": "string",
- "pay_to_bank_account_name": "string",
- "display_identifier": "string",
- "payment_amounts": [
- {
- "payment_reference": "string",
- "checkout_token": "string",
- "invoice_number": "string",
- "date": "2024-11-11",
- "amount": "string",
- "plan_fee": "string",
- "payment_amount": "string",
- "payment_transaction_amount": "string",
- "payment_transaction_token": "string",
- "payment_method": "string",
- "payment_from_bank_account": "string",
- "payment_from_credit_card": "string",
- "payment_institution_name": "string",
- "payment_credit_card_brand": "string",
- "settlement_token": "string",
- "short_pay_indicator": "string",
- "payment_note": "string",
- "auto_debit_indicator": "string",
- "invoice_balance": "string",
- "payment_timestamp": "string",
- "invoice_division": "string",
- "invoice_division_number": "string",
- "invoice_division_name": "string",
- "pay_to_bank_account": "string",
- "pay_to_bank_account_name": "string",
- "customer_identifier": "string",
- "customer_name": "string",
- "status": "IN PROGRESS",
- "status_reason": "string",
- "payment_source": "string",
- "payment_code": "string",
- "payment_description": "string",
- "gateway_authorization_code": "string",
- "purchase_order_number": "string",
- "ref1": "string",
- "ref2": "string",
- "ref3": "string",
- "short_pay_reason_identifier": "string",
- "short_pay_reason": "string",
- "dispute_reason_identifier": "string",
- "dispute_reason": "string",
- "invoice_amount_paid": "string",
- "invoice_identifier": "string",
- "invoice_date": "2024-11-11",
- "invoice_external_id": "string",
- "invoice_currency": "string",
- "invoice_purchase_order_number": "string",
- "invoice_ref1": "string",
- "invoice_ref2": "string",
- "invoice_ref3": "string",
- "cumulative_customer_amount": "string",
- "display_identifier": "string",
- "line_item_transactional_amounts": [
- {
- "line_item_number": "string",
- "line_item_payment_amount": "string",
- "line_item_balance": "string",
- "line_item_short_pay_indicator": "string",
- "line_item_payment_note": "string",
- "line_item_short_pay_reason_identifier": "string",
- "line_item_short_pay_reason": "string",
- "line_item_dispute_reason_identifier": "string",
- "line_item_dispute_reason": "string"
}
], - "batch_number": "string",
- "batch_amount": "string",
- "invoice_display_number": "string",
- "invoice_internal_number": "string"
}
], - "batch_number": "string",
- "batch_amount": "string",
- "payment_tree": {
- "root": "string",
- "children": [
- "string"
]
}
}
Payments made/recorded to your supplier account from your customers since watermark, limited to 100 payment amounts at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for a subsequent calls.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "payment_amounts": {
- "1591737": {
- "payment_reference": "4TQRLRCHY7TT",
- "checkout_token": "XYZABADXO7XX",
- "invoice_number": "INV001",
- "date": "2017-12-16",
- "amount": "10.00",
- "plan_fee": "0.00",
- "payment_amount": "10.00",
- "payment_transaction_amount": "10.00",
- "payment_transaction_token": "8MSPMBLBG6VK",
- "payment_method": " (6567)",
- "payment_from_bank_account": true,
- "payment_from_credit_card": false,
- "payment_institution_name": null,
- "payment_credit_card_brand": null,
- "settlement_token": "MAY7USR7KABC",
- "short_pay_indicator": "Y",
- "payment_note": null,
- "auto_debit_indicator": "N",
- "invoice_balance": "140.00",
- "payment_timestamp": "2017-12-16T20:18:30-05:00",
- "invoice_division": null,
- "invoice_division_number": null,
- "invoice_division_name": null,
- "pay_to_bank_account": "300987898",
- "pay_to_bank_account_name": " (7898)",
- "customer_identifier": "CUS001",
- "customer_name": "Acme Inc.",
- "status": "PAID",
- "status_reason": "",
- "payment_source": "ARC",
- "payment_code": null,
- "payment_description": null,
- "gateway_authorization_code": "TM0FED",
- "purchase_order_number": null,
- "ref1": null,
- "ref2": null,
- "ref3": null,
- "short_pay_reason_identifier": null,
- "short_pay_reason": null,
- "dispute_reason_identifier": null,
- "dispute_reason": null,
- "invoice_amount_paid": "30.00",
- "invoice_identifier": "supplier|INV001",
- "invoice_date": "2017-11-01",
- "invoice_external_id": null,
- "invoice_currency": "usd",
- "invoice_purchase_order_number": "PO-3847",
- "invoice_ref1": null,
- "invoice_ref2": null,
- "invoice_ref3": null,
- "cumulative_customer_amount": "10.00",
- "line_item_transactional_amounts": [
- {
- "line_item_number": "001",
- "line_item_payment_amount": "8.00",
- "line_item_balance": "50.00",
- "line_item_short_pay_indicator": "Y",
- "line_item_payment_note": "will pay tomorrow",
- "line_item_short_pay_reason_identifier": null,
- "line_item_short_pay_reason": null,
- "line_item_dispute_reason_identifier": null,
- "line_item_dispute_reason": null
}, - {
- "line_item_number": "002",
- "line_item_payment_amount": "2.00",
- "line_item_balance": "90.00",
- "line_item_short_pay_indicator": "Y",
- "line_item_payment_note": "will pay tomorrow",
- "line_item_short_pay_reason_identifier": null,
- "line_item_short_pay_reason": null,
- "line_item_dispute_reason_identifier": null,
- "line_item_dispute_reason": null
}
], - "batch_number": "2199312514",
- "batch_amount": "48.25",
- "invoice_display_number": "INV001",
- "invoice_internal_number": "INV001"
}
}
}
Payments made/recorded to your supplier account from your customers since watermark, limited to 100 payments at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for a subsequent calls.
options[export_payment_tree] | any When present: |
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "payments": {
- "13367716": {
- "payment_reference": "92YQ57XNXXW5",
- "date": "2018-11-05",
- "payment_amount": "20.00",
- "payment_transaction_amount": "20.00",
- "payment_method": " (9876)",
- "auto_debit_indicator": "N",
- "payment_timestamp": "2018-11-05T21:51:02-05:00",
- "customer_identifier": "101acme1",
- "customer_name": "ACME Specialties Inc.",
- "status": "PAID",
- "payment_source": "ARC",
- "payment_code": null,
- "payment_description": null,
- "gateway_authorization_code": "123456",
- "pay_to_bank_account": "0888111122",
- "pay_to_bank_account_name": " (1122)",
- "status_reason": "",
- "watermark": 13367716,
- "signature": "Dc5oLlk3sxAExI7K77BOyN6AAfvqo5naqYFtyxT7%2BCU%3D%0A"
}
}
}
Payment records that have been updated in the past 7 days, since watermark, limited to 100 records at a time.
A consumer should store the last id
value of each response and include it as the watermark parameter for subsequent calls.
options[export_payment_tree] | any When present: |
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "payments": {
- "13367716": {
- "payment_reference": "92YQ57XNXXW5",
- "date": "2018-11-05",
- "payment_amount": "20.00",
- "payment_transaction_amount": "20.00",
- "payment_method": " (9876)",
- "auto_debit_indicator": "N",
- "payment_timestamp": "2018-11-05T21:51:02-05:00",
- "customer_identifier": "101acme1",
- "customer_name": "ACME Specialties Inc.",
- "status": "PAID",
- "payment_source": "ARC",
- "payment_code": null,
- "payment_description": null,
- "gateway_authorization_code": "123456",
- "pay_to_bank_account": "0888111122",
- "pay_to_bank_account_name": " (1122)",
- "status_reason": "",
- "watermark": 13367716,
- "signature": "Dc5oLlk3sxAExI7K77BOyN6AAfvqo5naqYFtyxT7%2BCU%3D%0A"
}
}
}
Create and update divisions. If the division already exists when a request is processed, it will be updated.
Note:
code required | string Division Code used on invoices |
name required | string Division Name |
external_id | string Optional external identifier for the division |
deleted | boolean Optional value that indicates if the division is inactive (true) or active (false) |
parent_code | string Optional value that indicates this is a child of another division. The value must be an existing division code to make this division part of a hierarchy. |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "code": "DIV1",
- "name": "Division One",
- "external_id": "45332",
- "deleted": false,
- "parent_code": ""
}
{- "identifier": "DIV1",
- "message": "1 division"
}
Issue an invoice reminder to the relevant recipients for the specified invoice.
number_or_id required | string
|
Successful Operation
Unauthorized
Production
UAT
{- "requested": 1,
- "sent": 1,
- "not_found": 0,
- "suppressed": 0,
- "not_invited": 0,
- "paid": 0,
- "draft": 0,
- "credit": 0,
- "scheduled": 0,
- "on_plan": 0
}
Issue an invoice reminder to the relevant recipients for the specified invoices.
ids | array A list of |
Successful Operation
Unauthorized
Production
UAT
{- "ids": [
- "INV01",
- "INV02",
- "INV03",
- "INV04",
- "INV05",
- "INV06",
- "INV07",
- "INV08",
- "INV09",
- "INV10"
]
}
{- "requested": 10,
- "sent": 7,
- "not_found": 1,
- "suppressed": 0,
- "not_invited": 1,
- "paid": 0,
- "draft": 0,
- "credit": 1,
- "scheduled": 0,
- "on_plan": 0
}
Issue a direct message to just the specified email address regarding the declared object.
Note: When certain conditions are not met for an order
the response code 400
will be returned. Conditions are:
email required | string the notification recipient email address |
object_type required | string Enum: "invoice" "order" the type of object that is the subject of the notification |
object_identifier required | string
|
create_contact | boolean when |
first_name | string Optional, the contact first name. |
last_name | string Optional, the contact last name. |
Successful Operation
Bad Request
Unauthorized
Production
UAT
{- "email": "email@example.com",
- "object_type": "invoice",
- "object_identifier": "INV01",
- "create_contact": true,
- "first_name": "string",
- "last_name": "string"
}
{ }
As a supplier your customers collaborate with you through comments about invoices and/or payments.
Open and closed disputes since watermark, limited to 100 disputes at a time per category (open/closed).
watermark | string Example: watermark=2017-12-16T20:44:37 The date/datetime (yyyy-mm-dd, yyyy-mm-ddThh:mm:ss) value to base a subsequent extract of the next 100 open and the next 100 closed disputes. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. Note the watermark is a date/datetime, and the response watermark is the dispute.id and is not to be used as the input. |
Successful Operation
Unauthorized
Production
UAT
{- "disputes": {
- "518": {
- "closed_at": "2018-01-01T13:06:56-05:00",
- "opened_at": "2017-12-16T20:44:37-05:00",
- "opener": "customer@example.com",
- "closer": "supplier@example.com",
- "opening_comment_text": "Damaged goods. Please correct the amount.",
- "closing_comment_text": "Invoice will be credited. Please pay the rest.",
- "invoice_number": "INV001",
- "invoice_balance": {
- "usd": 12000
}, - "dispute_reason_identifier": null,
- "dispute_reason_label_en": "",
- "dispute_reason_label_fr": "",
- "opening_comment_users_notified": [ ],
- "closing_comment_user_notified": [ ],
- "creator_business_name": "Acme Inc.",
- "closer_business_name": "Supplier Corp.",
- "invoice_amount_paid": "30.00",
- "invoice_identifier": "supplier|INV001",
- "invoice_external_id": null
}
}
}
Customer and invoice comments (including disputes) since watermark, limited to 100 comments at a time.
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "comments": {
- "1568": {
- "identifier": "1568",
- "customer_identifier": "13666",
- "customer_name": "Acme Inc.",
- "comment": "This is a comment",
- "regarding": "Invoice INV-0001",
- "target_users": "",
- "dispute": "N",
- "internal": "Y",
- "timestamp": "2017-09-20T15:09:05-04:00",
- "user": "Bob Smith",
- "email": "bob.smith@example.com",
- "organization": "Acme Inc."
}
}
}
When uploading a CSV-formatted file it’s helpful to use your language/framework tooling to simplify the multipart/form-data file upload.
The file cannot exceed 25MB.
Please contact support@versapay.com or reach out to your implementation specialist for standard inbound CSV file layouts.
file | string The file to upload. |
filename | string Name of original file. |
Created
Unauthorized
Production
UAT
curl \ -u "Nvax...:UN0I..." \ -F "filename=data.csv" \ -F "file=@/home/user/Desktop/data.csv" \ https://secure.versapay.com/api/imports/
{- "id": 21877,
- "file_name": "invoices.csv",
- "file_size": 1024,
- "file_content_type": "text/plain",
- "file_fingerprint": "bf817b5548d69f6a3a49b6bb872fb906",
- "file_errors_count": 5,
- "error": "",
- "result_message": "5487 invoices",
- "complete_at": "2016-08-30T15:39:30-04:00"
}
View recent in-progress and completed import batches.
page | integer 50 items are displayed per page. |
Successful Operation
Unauthorized
Production
UAT
[- {
- "id": 21877,
- "file_name": "invoices.csv",
- "file_size": 1024,
- "file_content_type": "text/plain",
- "file_fingerprint": "bf817b5548d69f6a3a49b6bb872fb906",
- "file_errors_count": 5,
- "error": "",
- "result_message": "5487 invoices",
- "complete_at": "2016-08-30T15:39:30-04:00"
}
]
View only recent in-progress import batches.
page | integer 50 items are displayed per page. |
Successful Operation
Unauthorized
Production
UAT
[- {
- "id": 21877,
- "file_name": "invoices.csv",
- "file_size": 1024,
- "file_content_type": "text/plain",
- "file_fingerprint": "bf817b5548d69f6a3a49b6bb872fb906",
- "file_errors_count": 5,
- "error": "",
- "result_message": "5487 invoices",
- "complete_at": "2016-08-30T15:39:30-04:00"
}
]
View only recent completed import batches.
page | integer 50 items are displayed per page. |
Successful Operation
Unauthorized
Production
UAT
[- {
- "id": 21877,
- "file_name": "invoices.csv",
- "file_size": 1024,
- "file_content_type": "text/plain",
- "file_fingerprint": "bf817b5548d69f6a3a49b6bb872fb906",
- "file_errors_count": 5,
- "error": "",
- "result_message": "5487 invoices",
- "complete_at": "2016-08-30T15:39:30-04:00"
}
]
id required | string The import batch identifier. |
Successful Operation
Unauthorized
Production
UAT
{- "id": 21877,
- "file_name": "invoices.csv",
- "file_size": 1024,
- "file_content_type": "text/plain",
- "file_fingerprint": "bf817b5548d69f6a3a49b6bb872fb906",
- "file_errors_count": 5,
- "error": "",
- "result_message": "5487 invoices",
- "complete_at": "2016-08-30T15:39:30-04:00"
}
Tokenized results of file imported payment methods are available up to 24hrs following a fund import. This results file echo's the original input lines - absent the original header line, with sensitive field masking - appending the imported items wallet token
, fund token
, and vault token
- i.e. essential references that can be used for subsequent payment/order transactions API usage.
id required | string The import batch identifier. |
Successful Operation
Unauthorized
Production
UAT
1. Example of credit card import source text/csv: customer_identifier,name,first_name,last_name,number,expiry,postal_code,create_debit_agreement,auto_debit_reference 10001,John Doe,John,Doe,4111111111111111,0318,H0H 0H0,Y,POLICY_10001 10001,John Doe,John,Doe,5473500000000014,0318,H0H 0H0,Y,10001,John Doe,John,Doe,372700699251018,0318,H0H 0H0,N, 10004,Mary Smith,Mary,Smith,4111111111111111,0318,H0H 0H0,Y,POLICY_10004 10004,Mary Smith,Mary,Smith,5473500000000014,0318,H0H 0H0,Y,10004,Mary Smith,Mary,Smith,372700699251018,0318,H0H 0H0,N, 2. Example of credit card import results text/csv: 10001,John Doe,John,Doe,************1111,****,H0H 0H0,Y,POLICY_10001,1L8DN37Y6TL8,CC8KCKWWL8UT,ccuq905fyzruz9 10001,John Doe,John,Doe,************0014,****,H0H 0H0,Y,,1L8DN37Y6TL8,CC3R9L5BDHI3,ccghc1fsa52tko 10004,Mary Smith,Mary,Smith,************1111,****,H0H 0H0,Y,POLICY_10004,4JL6FH2L7LKN,CC851RBU5WGJ,ccg8c12dymulm1 10004,Mary Smith,Mary,Smith,************0014,****,H0H 0H0,Y,,4JL6FH2L7LKN,CC2YDCF82NQK,ccom320nfnozj8
View the error results for a given batch import. This endpoint returns by default a json
type response. But you can specify the extension in which you want to see the response, the accepted extensions are json
and csv
id required | string The import batch identifier. |
Successful Operation
Unauthorized
Production
UAT
{- "message": [
- {
- "line_number": 2,
- "error": "division id not specified",
- "id": null,
- "amount_cents": 73570,
- "number": "A00359X",
- "due_date": "2022-08-01T00:00:00.000Z",
- "created_at": null,
- "updated_at": null,
- "sender_id": 4,
- "customer_id": null,
- "batch_id": 485,
- "read_at": null,
- "currency": "cad",
- "company_name": null,
- "notes_header": null,
- "notes_text": null,
- "invoice_style": "Product",
- "date": "2022-07-01T00:00:00.000Z",
- "address_id": null,
- "telephone": null,
- "fax": null,
- "currencies": null,
- "external_id": null,
- "sent_at": null,
- "balance_adjustment": null,
- "owing_cents": 73570,
- "shipping_name": null,
- "shipping_address_id": null,
- "purchase_order_number": null,
- "auto_debit": true,
- "payment_date": null,
- "bad_debt_cents": null,
- "draft": false,
- "published_at": null,
- "division_id": null,
- "identifier": "cadbalance|A00359X",
- "auto_debit_reference": null,
- "display_number": null,
- "deleted": false,
- "deleted_at": null,
- "insert_token": "8ece9938-dd53-41be-979e-7ed962c9c082",
- "update_token": "8ece9938-dd53-41be-979e-7ed962c9c082",
- "subtotal_cents": 73570,
- "subtotal_tax1": null,
- "subtotal_tax2": null,
- "address_1": null,
- "address_2": null,
- "city": null,
- "province": null,
- "postal_code": null,
- "balance_mode": true,
- "disputed": false,
- "recurring_invoice_id": null,
- "offer": false,
- "scheduled_payment_id": null,
- "paid_by_auto_debit": null,
- "converted_amount_cents": 73570,
- "converted_owing_cents": 73570,
- "customer_name": null,
- "net_days": null,
- "email_delivered_at": null,
- "email_opened_at": null,
- "delivery_status": "new",
- "email_not_delivered_reason": null,
- "ref1": null,
- "ref2": null,
- "ref3": null,
- "match_at": null,
- "plan_identifier": null,
- "plan_start_date": null,
- "plan_end_date": null,
- "plan_payment_cents": null,
- "plan_suspended": null,
- "annualized_amount_cents": null,
- "annualized_effective_date": null,
- "annualized_expiry_date": null,
- "plan_invalid": false,
- "annualization_history": { },
- "last_payment_failed": false,
- "autopay_on_hold": false,
- "email_sent_at": null,
- "printed": false,
- "paper_delivery_state": null,
- "paper_state_change_at": null,
- "printer_queued_at": null,
- "printer_received_at": null,
- "printer_printed_at": null,
- "printer_mailed_at": null,
- "printer_failed_at": null,
- "printer_failed_message": null,
- "balance_updated_at": null,
- "last_payment_at": null,
- "checkout_payment": false,
- "approval_status": "none",
- "first_pending_at": null,
- "summary_invoice_parent": false,
- "summary_invoice_number": null,
- "summary_discrepancy_currency": false,
- "summary_discrepancy_amount": false,
- "summary_orphan": false,
- "discount_expiry_date": null,
- "discount_rate": null,
- "discount_amount_cents": null,
- "converted_discount_amount_cents": null,
- "ref4": null,
- "line_item_tax_warning": false,
- "discount_cancelled_at": null,
- "card_number": null
}
]
}
View the most recent, or for a given batch import, invoice reconciliation results.
batch_file_id | integer Optional, the |
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "reconciliation_invoices": {
- "213635737": {
- "number": "0012",
- "division_code": null,
- "customer_number": "",
- "customer_name": "",
- "invoice_date": null,
- "payment_identifier": null,
- "payment_date": null,
- "orphaned_payment_amount": "",
- "balance_in_arc": "",
- "balance_in_source_system": "$11,200.00",
- "discrepancy_message": "Invoice Not Present in ARC"
}
}
}
View the most recent, or for a given batch import, payment reconciliation results.
batch_file_id | integer Optional, the |
watermark | integer <int64> (Watermark) Example: watermark=0 The value to base a subsequent extract of the next 100 items. |
list | boolean Example: list=true See Watermark & Limit for more information on response structure. |
Successful Operation
Unauthorized
Production
UAT
{- "reconciliation_payments": {
- "213635737": {
- "payment_reconciliation_identifier": "7TSX9SFRY",
- "unapplied_amount": "$3,000.00",
- "unapplied_amount_in_source_system": "$90.00",
- "customer_identifier": "CUST123",
- "discrepancy_message": "These fields do not match: Payment date, Payment amount, Applied amount, Unapplied amount",
- "payment_amount": "$3,000.00",
- "payment_amount_in_source_system": "$4,805.87",
- "applied_amount": "$0.00",
- "applied_amount_in_source_system": "$900.00",
- "payment_date": "2021-08-31",
- "payment_date_in_source_system": "2023-08-07"
}
}
}
This endpoint is not applicable to Collaborative AR based suppliers.`
Fund Sources include bank accounts, credit cards, and balance associated with your account. The tokenized representation of these fund sources can be used to specify which fund to use when working with Transactions and Debit Agreements.
Production
UAT
[- {
- "type": "bank_account",
- "token": "BA7YQ5881W8Q",
- "name": "TD Canada Trust (2929)",
- "state": "verified"
}, - {
- "type": "credit_card",
- "token": "CC7HPKMIUP2D",
- "name": "VISA **2224"
}, - {
- "type": "balance",
- "token": "VPB2VJ7W9UVW",
- "name": "Versapay Account"
}
]
Vault a Bank Account for subsequent Transaction Use/Creation
Bank account to vault.
currency | string Enum: "usd" "gbp" "eur" "cad" "aud" |
business_name | string Name of account holder. |
country | string CA (default), US, AU |
account_number | string Bank account number. |
account_type | string checking or savings, defaults checking (required country = US) |
institution_number | string Financial institution number (required country = CA). |
branch_number | string Financial institution branch/transit (required country = CA). |
routing_number | string Financial institution branch/location (required country = US, AU). |
token | string the bank account token |
nickname | string optional value that describes the bank account |
masked_account_number | string a masked version of the account number |
routing_account_hash_function | string the hash function used to mask the routing number and account number |
routing_account_hash | string the hash value used to mask the routing number and account number. |
address | object |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "currency": "usd",
- "business_name": "John Doe",
- "country": "CA",
- "account_number": "10101234",
- "account_type": "checking",
- "institution_number": "001",
- "branch_number": "03662",
- "routing_number": "",
- "token": "string",
- "nickname": "string",
- "masked_account_number": "string",
- "routing_account_hash_function": "string",
- "routing_account_hash": "string",
- "address": {
- "address_1": "string",
- "city": "string",
- "province": "string",
- "postal_code": "string",
- "country": "US"
}
}
{- "token": "79VMZNLXCBL9",
- "name": "TD Canada Trust (1234)",
- "type": "bank_account"
}
This endpoint is not applicable to Collaborative AR based suppliers.`
Transactions are used to move funds between fund sources. The directionality of the money transfer depends on the transaction type and the specified from/to fund tokens.
The lifecycle states of transaction settlement/flow are:
State | Context | Action to Take |
---|---|---|
new |
The initial state for a new transaction. | N/A |
wait_for_claim |
The transaction has been created and an email delivered to the other party. They have not yet signed up and approved the transaction. | None. You may want to remind the other party if the payment has not been approved for a sufficient length of time. |
wait_for_request_approval |
The requestee has an account already. They have not yet approved the transaction. | None. You may want to remind the other party if the payment has not been approved for a sufficient length of time. |
wait_for_bank_account_verification |
The requestee has signed up and accepted the transaction, however they have not yet verified their bank account. Note: Users are required to verify their bank account by going through the micro-debit process in which Versapay debits and credits the user’s bank account an undisclosed amount. The user then checks their online banking and fills in the amount on the Versapay website. |
None. You may want to remind the other party if the bank has not been verified in a sufficient length of time. |
rejected |
The transaction was rejected by the requestee. | Review the rejection message. |
in_progress |
The transaction has been sent to the bank and is in progress. | N/A |
error |
There was an error while processing the transaction. | Contact your bank if the error pertains to your bank account. Contact client or create a new transaction if the error is with the other party’s bank account. |
nsfed |
The transaction's selected fund has in-sufficient funds and the transaction has been cancelled. | Contact your bank if the error pertains to your bank account. Contact client or create a new transaction if the error is with the other party’s bank account. |
cancelled |
The transaction has been cancelled by an administrator. A transaction can only be cancelled before the debit has been sent to the bank. | N/A |
completed |
The transaction has been completed successfully. | Update your order to "Paid". |
completed_but_nsfed |
The transaction was completed successfully, but has been returned by the bank as in-sufficient funds. | Update your order to "Un-paid". |
When using Webhooks, your application will be notified any time a transaction's status has been updated. Note that for a variety of reasons strict ordering of notifications cannot be guaranteed. We recommend any integrations that track a "last seen" state either be aware of the flow of states (downward on the preceding list), or only track actionable states.
transaction_type required | string send |
amount_in_cents required | integer Transaction amount in cents. |
email required | string <email> Recipient email address. |
message | string A message describing the transaction. |
transaction_reference | string Nullable Extra useful data to help link transactions to other systems e.g. PO numbers, account numbers etc. |
unique_reference | string Similar to transaction_reference, except it must be unique. Can be used as a duplicate transaction check. |
process_on | string <date> The date |
auto_withdraw | boolean Set |
debit_agreement_token | string The token that represents a pre-authorized agreement, see Agreements. |
fund_token | string Token of fund to use as the source. |
credit | boolean Set |
link_url | string A specified url associated with transaction for instance linking to an invoice. |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "transaction_type": "send",
- "amount_in_cents": 20000,
- "email": "bob@example.com",
- "message": "Thank you",
- "transaction_reference": "Order 3487",
- "process_on": "2018-01-05",
- "fund_token": "string",
- "debit_agreement_token": "string",
- "credit": true,
- "link_url": "string"
}
{- "token": "79VMZNLXCBL9",
- "amount_in_cents": 15000,
- "message": "Thank you for doing business",
- "type": "transaction",
- "transaction_type": "send_money",
- "email": "bob.smith@example.com",
- "state": "in_progress",
- "transaction_reference": "Lease 123",
- "unique_reference": null,
- "from_account": "John Doe",
- "to_account": "Jane Smith",
- "process_on": null,
- "from_fund": "TD Canada Trust",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7"
}
page | integer 50 items are displayed per page. |
Successful Operation
Unauthorized
Production
UAT
[- {
- "token": "79VMZNLXCBL9",
- "amount_in_cents": 15000,
- "message": "Thank you for doing business",
- "type": "transaction",
- "transaction_type": "send_money",
- "email": "bob.smith@example.com",
- "state": "in_progress",
- "transaction_reference": "Lease 123",
- "unique_reference": null,
- "from_account": "John Doe",
- "to_account": "Jane Smith",
- "process_on": null,
- "from_fund": "TD Canada Trust",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7"
}
]
token_or_unique_reference required | string The transaction identifier (or unique_reference). |
Successful Operation
Unauthorized
Production
UAT
{- "token": "79VMZNLXCBL9",
- "amount_in_cents": 15000,
- "message": "Thank you for doing business",
- "type": "transaction",
- "transaction_type": "send_money",
- "email": "bob.smith@example.com",
- "state": "in_progress",
- "transaction_reference": "Lease 123",
- "unique_reference": null,
- "from_account": "John Doe",
- "to_account": "Jane Smith",
- "process_on": null,
- "from_fund": "TD Canada Trust",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7"
}
Approve a new
or wait_for_request_approval
transaction.
An API key with administrative access is required to approve a transaction.
token required | string The transaction identifier. |
fund_token | string Your bank account or balance's token attribute. Omitting this option will approve the transaction using your default bank account. |
Successful Operation
Unauthorized
Precondition Failed
Production
UAT
{- "fund_token": "5TH3ACC3AU21"
}
{- "token": "79VMZNLXCBL9",
- "amount_in_cents": 15000,
- "message": "Thank you for doing business",
- "type": "transaction",
- "transaction_type": "send_money",
- "email": "bob.smith@example.com",
- "state": "in_progress",
- "transaction_reference": "Lease 123",
- "unique_reference": null,
- "from_account": "John Doe",
- "to_account": "Jane Smith",
- "process_on": null,
- "from_fund": "TD Canada Trust",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7"
}
Cancel a new
, wait_for_request_approval
or wait_for_bank_account_verification
transaction you created. Transactions cannot be cancelled after they have been sent to the bank and are in_progress
.
An API key with administrative access is required to approve a transaction.
token required | string The transaction identifier. |
Successful Operation
Precondition Failed
Production
UAT
{- "token": "79VMZNLXCBL9",
- "amount_in_cents": 15000,
- "message": "Thank you for doing business",
- "type": "transaction",
- "transaction_type": "send_money",
- "email": "bob.smith@example.com",
- "state": "in_progress",
- "transaction_reference": "Lease 123",
- "unique_reference": null,
- "from_account": "John Doe",
- "to_account": "Jane Smith",
- "process_on": null,
- "from_fund": "TD Canada Trust",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7"
}
In the uat environment, the following test bank accounts can be setup up in your account.
Institution | Institution Number | Branch | Account Number |
---|---|---|---|
TD | 004 | 99960 | 1-12 digits |
RBC | 003 | 16824 | 1-12 digits |
BMO | 001 | 99520 | 1-12 digits |
HSBC | 016 | 10880 | 1-12 digits |
When Versapay prompts you to verify these bank accounts enter a value of 1.23
for the verification amount.
To determine the outcome of a transaction funded by a bank account, set the amount accordingly:
Amount | Resulting State |
---|---|
$x.10 | nsfed |
$x.11 | completed_but_nsfed |
$x.30 | error |
anything else | completed |
Please contact support@versapay.com for support & setup of ACH acceptance and bank account numbers that can be used for testing.
Please contact support@versapay.com for support & setup of Credit Card acceptance and card brands/numbers that can be used for testing.
This endpoint is not applicable to Collaborative AR based suppliers.`
Debit Agreements are a digital analog to paper pre-authorized debit agreements that businesses could use, for instance, for monthly billing.
The creator of an agreement can cancel at any time. The other party can approve, reject, or later revoke an agreement at any time.
The lifecycle states of debit agreements are:
State | Context | Action to take |
---|---|---|
pending |
The recipient has been sent an email to approve the agreement. | N/A |
approved |
The agreement has been approved. | Create a pre-authorized debit transaction that references the agreement when you bill. |
rejected |
The agreement was rejected by the requestee. | Review the rejection message. |
cancelled |
The agreement was cancelled by the requestor. | Cancel the subscription with the other party. |
revoked |
The agreement was cancelled by the requestee. | Cancel the subscription with the other party. |
wait_for_bank_account_verification |
The associated bank account has not yet been verified. | None - The recipient has been notified. Email the recipient if the bank account is not verified within a reasonable amount of time. |
invalid_funding_source |
There were errors with the associated bank account or credit card. | None - The recipient has been notified to change the funding source. Email the recipient if the fund is not changed within a reasonable amount of time. |
When using Webhooks, your application will be notified any time an agreement’s status has been updated (see Lifecycle); allowing you to start billing when approved or cancel a subscription when rejected or revoked.
email required | string Recipient email address. |
reference | string Extra useful data to help link transactions to other systems e.g. PO numbers, account numbers etc. |
message | string A message describing what the agreement is for. |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "email": "bob.smith@example.com",
- "reference": "87769089",
- "message": "Debit agreement for order number - 87769089"
}
{- "token": "3TJWJB36M973",
- "state": "pending",
- "name": "John Doe",
- "email": "user@example.com",
- "reference": "Ad 123",
- "message": "Thank you for your business",
- "type": "debit_agreement",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7",
- "created_by_account": "Central Media News"
}
page | integer 50 items are displayed per page. |
Successful Operation
Unauthorized
Production
UAT
[- {
- "token": "3TJWJB36M973",
- "state": "pending",
- "name": "John Doe",
- "email": "user@example.com",
- "reference": "Ad 123",
- "message": "Thank you for your business",
- "type": "debit_agreement",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7",
- "created_by_account": "Central Media News"
}
]
page | integer 50 items are displayed per page. |
Successful Operation
Unauthorized
Production
UAT
[- {
- "token": "3TJWJB36M973",
- "state": "pending",
- "name": "John Doe",
- "email": "user@example.com",
- "reference": "Ad 123",
- "message": "Thank you for your business",
- "type": "debit_agreement",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7",
- "created_by_account": "Central Media News"
}
]
token required | string The agreement identifier. |
fund_token | string Your bank account or balance's token attribute. Omitting this option will approve the agreement using your default bank account. |
Created
Unauthorized
Precondition Failed
Production
UAT
{- "fund_token": "5TH3ACC3AU21"
}
{- "token": "3TJWJB36M973",
- "state": "pending",
- "name": "John Doe",
- "email": "user@example.com",
- "reference": "Ad 123",
- "message": "Thank you for your business",
- "type": "debit_agreement",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7",
- "created_by_account": "Central Media News"
}
token required | string The agreement identifier. |
Successful Operation
Unauthorized
Production
UAT
{- "token": "3TJWJB36M973",
- "state": "pending",
- "name": "John Doe",
- "email": "user@example.com",
- "reference": "Ad 123",
- "message": "Thank you for your business",
- "type": "debit_agreement",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7",
- "created_by_account": "Central Media News"
}
Reject a pending agreement by supplying an agreement's token attribute and providing a rejection_reason.
token required | string The agreement identifier. |
Successful Operation
Unauthorized
Production
UAT
{- "token": "3TJWJB36M973",
- "state": "pending",
- "name": "John Doe",
- "email": "user@example.com",
- "reference": "Ad 123",
- "message": "Thank you for your business",
- "type": "debit_agreement",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7",
- "created_by_account": "Central Media News"
}
Revoke an approved agreement for your account by supplying an agreement's token attribute. The agreement's creator will no longer be able to debit your account using this agreement.
token required | string The agreement identifier. |
Successful Operation
Production
UAT
{- "token": "3TJWJB36M973",
- "state": "pending",
- "name": "John Doe",
- "email": "user@example.com",
- "reference": "Ad 123",
- "message": "Thank you for your business",
- "type": "debit_agreement",
- "created_by_user": "Uf6TaxzBMBBT_rXjsrN7",
- "created_by_account": "Central Media News"
}
This endpoint is not applicable to Collaborative AR based suppliers.`
Hosted checkout is a URL based method for accepting a payment through your website or email without the need for custom programming.
Clients, customers, or donors, for instance, can send your organization money directly from their bank account or credit card simply by clicking a link which displays a page with your account name allowing your customer to make a payment to you for the specified dollar amount:
https://secure.versapay.com/send_money?api_token={your_api_token}&amount={dollar_amount_for_customer_to_pay}
Funds will go to the fund destination passed in the to_fund parameter. By default, the funds will be deposited into your default bank account once the transaction clears from the other party.
api_token required | string A valid API token generated from your account. |
amount required | number The amount in dollars that the transaction is for. |
message | string A message which will be stored with the transaction. |
return_to | string A url which will displayed to the user to return to your website after they finish the Signup and Confirmation. |
link_url | string A url that gets stored and displayed on the transaction for an invoice. |
pref | string The preferred payment type either |
to_fund | string The token of the bank account or balance where the funds should go to. |
reference | string Extra data (max 255 characters). Great for storing internal order or account number. |
locale | string Set the default language of the checkout, either |
Successful Operation
Production
UAT