ClientPay Documentation

Welcome to the ClientPay Developer Center!

With ClientPay API, you can make payments, generate invoices, get the status of a payments, and much more!

Get Started    

Invoice

In order to create an Invoice Payment Page, you need an invoice object. You can create single or multi-invoice payment pages with the Invoice call. The invoices array, with the Invoice call, can be used to create multiple invoice objects.

If the call is successful, an Invoice Payment Page URL will be returned in order to process a payment. A RequestID is created for the API Invoice Payment Page as a unique identifier.

 
posthttps://api.clientpay.com/Invoice/Forms/Add

Body Params

accessId
string
required

The accessId credential used to authenticate the requester

requestId
string
required

Unique identifier for the request

customerRefNumber
string

Provided by you in initial POST apiInvoice/Forms/Add request.

sessionId
string

The unique value optionally provided by API caller and added to payment

invoices
array of objects
required

Field containing collection one or more invoices to be displayed on the Invoice Payment pages.

InvoiceNumber
InvoiceDate
DueDate
SubtotalAmount
DiscountAmount
Tax
OutstandingBalance
PaymentAmount
ClientID
ClientName
PDFLink
cardholderName
string

Optional Field indicating the Name of the Card Account Holder on the Invoice Payment page; (100 Chars Max).

billingAddress
string

Optional Field indicating the Address Line 1 on the Invoice Payment page; (100 Chars Max).

billingCity
string

Optional Field indicating the City for the Invoice Payment page; (100 Chars Max).

billingCountry
string

Optional Field indicating the Country on the Invoice Payment page; (100 Chars Max).

duration
int32

Optional Field indicating the duration in seconds of payment page before expiring. Defaults at 15 mins. Max duration is 1 year.

billingZipCode
string

prepopulate the billing Zip on the payment form (Can be edited on the form by cardholder).

billingStateCode
string

Prepopulate the billing State on the payment form. Must be valid 2 letter code for US States and Canadian Provinces/Territories (Can be edited on the form by cardholder).

enableClientSidePostBack
boolean

Enables Windows Post message with payment information

clientSideReturnAddress
string

Optional string indicating the address a response should be sent to after the payment is made. Response includes same object that is returned from a getStatus call.

hideCustomerHeaderLogo
boolean

Flag if set will hide customer's logo shown on top of the invoice payment page

bccEmail
string

Upon completion of payment, any email addresses provided in this field (separate multiple with a comma) will receive a copy of the receipt email.

customFooterText
string

This text will appear at the bottom of the payment page above the "Submit" button.

Invoice Array Object Definitions

InvoiceNumber: Required Field in request indicating the Invoice number from customer to attach to each invoice payment page; (64 Chars Max).

InvoiceDate: Required Field in request indicating the Invoice Date of each invoice displayed on the invoice payment page.

DueDate: Required Field in request indicating the Invoice Due Date of each invoice displayed on the invoice payment page.

SubtotalAmount: Optional Field in request for subtotal amount of each invoice in invoice payment request.

DiscountAmount: Optional Field in request for discount amount applied off each invoice total display on invoice payment page.

Tax: Optional Field in request for tax amount of subtotal applied to each invoice total display on invoice payment page.

OutstandingBalance: Required Field in request for outstanding amount remaining amount for each payment amount displayed on invoice payment page.

PaymentAmount: Optional Field in request for suggested payment amount off outstanding balance for each invoice displayed on invoice payment page.

InvoiceAmountTotal: Optional Field in request for total amount of invoice request that includes total = (subtotal - discountAmount + tax) of each invoice total displayed on invoice payment page.

ClientID: Optional Field in request for Client ID applied to each invoice on invoice payment page.

ClientName: Optional Field in request for Client Name applied to each invoice on invoice payment page.

PDFLink: Optional Field in request for External link to invoice in PDF format to be shown on click event after each invoice on invoice payment page.

curl --request POST \
  --url https://api.clientpay.com/Invoice/Forms/Add
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/Invoice/Forms/Add' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Invoice/Forms/Add")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/Invoice/Forms/Add");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Invoice/Forms/Add"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "paymentPageUrl": "http://app.clientpay.com/app/Api/#/invoicePaymentPage/cff62a57-bc85-4151-XXXX-XXXXXXXXXXXX",
  "requestId": "cff62a57-bc85-4151-XXXX-XXXXXXXXXXXX",
  "duration": null,
  "createdDate": "2017-09-19T10:08:13.6603969-05:00",
  "createdDateUtc": "2017-09-19T15:08:13.6603969Z",
  "paymentItems": [
    {
      "clientID": "2313321",
      "clientName": "Harvey Specter",
      "invoiceNumber": "115444",
      "pdfLink": null,
      "subtotalAmount": 10,
      "taxAmount": 1,
      "paymentAmount": 11,
      "outstandingBalance": 11,
      "invoiceDate": "2017-11-11T00:00:00",
      "invoiceDueDate": "2017-11-11T00:00:00",
      "success": false,
      "errorMessage": ""
    }
  ],
  "success": true,
  "errorMessage": ""
}
 

Expire Invoice Payment Page

Use this to expire an outstanding Invoice Payment Page using the requestId that generated the Invoice Payment Page

 
posthttps://api.clientpay.com/Invoice/Forms/ExpireForm

Body Params

id
string
required

requestId matching invoice payment request page.

accessId
string
required

The accessId credential used to authenticate the requester

 
curl --request POST \
  --url https://api.clientpay.com/Invoice/Forms/ExpireForm
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/Invoice/Forms/ExpireForm' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Invoice/Forms/ExpireForm")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/Invoice/Forms/ExpireForm");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Invoice/Forms/ExpireForm"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results
 

Payment

The Payment call allows you to send ClientPay data to directly process a payment.

 
posthttps://api.clientpay.com/Payment/Create

Body Params

accessId
string
required

The accessId credential used to authenticate the requester

requestId
string
required

Unique identifier for the request

customerRefNumber
string

Provided by you in initial POST api payment request.

sessionId
string

The value provided by you in your initial POST api payment request call.

swipeData
string

Optional encrypted value containing the Card numer, cardholder name etc

swipeDataProcessorType
int32

Optional field indicating the Card numer, cardholder name etc

cardholderName
string
required

Optional Field indicating the Name of the Card Account Holder on the Invoice Payment page; (100 Chars Max).

cardNumber
string
required

Credit Card number

expirationDateMonth
int32
required

Month of expiration date

expirationDateYear
int32
required

Year of expiration date (4 digits)

cvv
string

Card code

description
string

Optional description field

receiptEmailAddresses
string

Email for receipt

totalAmount
double
required

Required Field in request for Total amount of each payment request.

tax
double

Optional Field in request for tax amount of payment.

orderNumber
string

Optional Field in request indicating the Order number from customer to attach to each payment; (64 Chars Max).

billingAddress
string
required

Optional Field indicating the Address Line 1 on the Invoice Payment page; (100 Chars Max).

billingAddress2
string

Optional Field indicating the Address Line 2 on the Invoice Payment page; (100 Chars Max). TBD.

billingCity
string

Optional Field indicating the City for the Invoice Payment page; (100 Chars Max).

billingStateCode
string

Prepopulate the billing State on the payment form. Must be valid 2 letter code for US States and Canadian Provinces/Territories (Can be edited on the form by cardholder).

billingZipCode
string
required

Prepopulate the billing Zip on the payment form (Can be edited on the form by cardholder).

billingCountry
string

Optional Field indicating the Country on the Invoice Payment page; (100 Chars Max).

 
curl --request POST \
  --url https://api.clientpay.com/Payment/Create
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/Payment/Create' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Payment/Create")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/Payment/Create");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Payment/Create"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "paymentDate": "11/8/2017 2:20:48 PM",
  "paymentTypeString": "Credit Card",
  "cardTypeString": "Visa",
  "totalTaxAmountPaid": 1,
  "totalAmountPaid": 10,
  "transactionTypeString": "Payment",
  "orderNumber": "56456564",
  "payment Status": "Approved",
  "customerRefNumber": "655456564",
  "requestId": "3077460a-eb11-4bc3-XXXX-XXXXXXXXXXXX",
  "paymentID": "10XXXXXX",
  "createdDate": "2017-11-08T14:20:46.4184905-06:00",
  "createdDateUtc": "2017-11-08T20:20:46.4184905Z",
  "success": true,
  "errorMessage": ""
}
 

Status

Status allows you to retrieve payment information from a previous payments. Use the Session ID, Payment ID, or Request ID to identify the payment. The integrator key must be authorized within a customer to retrieve payments on their merchant account.

 
gethttps://api.clientpay.com/Payment/Status

Query Params

id
string
required

Id provided in original payment request

type
string

type of Id: r=request; p=paymentId, or s=sessionId search.

accessId
string

accessId

 
curl --request GET \
  --url 'https://api.clientpay.com/Payment/Status?id=id'
var request = require("request");

var options = { method: 'GET',
  url: 'https://api.clientpay.com/Payment/Status',
  qs: { id: 'id' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Payment/Status?id=id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.clientpay.com/Payment/Status?id=id");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Payment/Status"

querystring = {"id":"id"}

response = requests.request("GET", url, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

[
  {
    "requestID": "3077460a-eb11-4bc3-XXXX-XXXXXXXXXX",
    "paymentID": "10XXXXXX",
    "sessionID": "123456",
    "customerRefNumber": "987654",
    "paymentStatus": "Approved",
    "paymentPageUrlStatus": "",
    "paymentDate": "2017-11-08T14:20:48.540082",
    "paymentDateUtc": "2017-11-08T20:20:48.540082Z",
    "statusByType": 2,
    "paymentAmount": 10,
    "paymentTaxAmount": 1,
    "paymentPageUrl": null,
    "paymentItems": [
      {
        "itemId": 0,
        "sku": null,
        "paymentAmount": 9,
        "paymentTaxAmount": 0,
        "clientId": "0000",
        "clientName": "API Order Number: 56456564",
        "invoiceId": 0,
        "invoiceNumber": "56456564",
        "orderNumber": "56456564",
        "description": null,
        "quantity": 0,
        "amountRefunded": 0,
        "amountVoided": 0,
        "isRefund": false,
        "isVoid": false
      }
    ],
    "cardInfo": {
      "cardNumberMasked": "****1111",
      "expirationDateMonth": 2,
      "expirationDateYear": 2018,
      "cardBrand": "Visa",
      "zipCode": "55328"
    },
    "success": true,
    "errorMessage": ""
  }
]
 

New Access ID

Generates a new accessId. If a current accessId exists, it will become expired.

 
posthttps://api.clientpay.com/Token/Access/New

Body Params

integratorKey
string
required

Required Field that contains Integrator key

accountKey
string
required

Required Field that contains the Account Key.

accountPin
string
required

Required Field that contains the Account PIN.

 
curl --request POST \
  --url https://api.clientpay.com/Token/Access/New
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/Token/Access/New' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Token/Access/New")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/Token/Access/New");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Token/Access/New"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "7fa3e4f7-530e-4d37-XXXX-XXXXXXXXXXXX",
  "success": true,
  "status": ""
}
 

Current Access ID

Returns existing unique accessId for payment processing requests.

 
posthttps://api.clientpay.com/Token/Access/Current

Body Params

integratorKey
string
required

Required Field that contains Integrator key

accountKey
string
required

Required Field that contains the Account Key.

accountPin
string
required

Required Field that contains the Account PIN.

 
curl --request POST \
  --url https://api.clientpay.com/Token/Access/Current
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/Token/Access/Current' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Token/Access/Current")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/Token/Access/Current");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Token/Access/Current"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "7fa3e4f7-530e-4d37-XXXX-XXXXXXXXXXXX",
  "success": true,
  "status": null
}
 

Validate Access ID

Validates that accessId is active.

 
posthttps://api.clientpay.com/Token/Access/Validate

Query Params

accessId
string
required

Token to validate access.

 
curl --request POST \
  --url 'https://api.clientpay.com/Token/Access/Validate?accessId=accessId'
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/Token/Access/Validate',
  qs: { accessId: 'accessId' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Token/Access/Validate?accessId=accessId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/Token/Access/Validate?accessId=accessId");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Token/Access/Validate"

querystring = {"accessId":"accessId"}

response = requests.request("POST", url, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "9afbdf93-9a5a-469d-XXXX-XXXXXXXXXXXX",
  "success": false,
  "status": "Access Expired"
}
 

Expire Access ID

Expires current accessId.

 
posthttps://api.clientpay.com/Token/Access/Expire

Query Params

accessId
string

The accessId credential used to authenticate the requester

Body Params

integratorKey
string

Required Field that contains Integrator key

accountKey
string
required

Required Field that contains the Account Key.

accountPin
string
required

Required Field that contains the Account PIN.

 
curl --request POST \
  --url https://api.clientpay.com/Token/Access/Expire
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/Token/Access/Expire' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Token/Access/Expire")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/Token/Access/Expire");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Token/Access/Expire"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "id": "9afbdf93-9a5a-469d-XXXX-XXXXXXXXXXXX",
  "success": true,
  "status": "Expired"
}
 

Generate Request ID

Returns a unique requestId. A new requestId is required for each request.

 
posthttps://api.clientpay.com/Token/Request/NewIdV2

Body Params

id
string

The accessId credential used to authenticate the requester

 
curl --request POST \
  --url https://api.clientpay.com/Token/Request/NewIdV2
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/Token/Request/NewIdV2' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Token/Request/NewIdV2")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/Token/Request/NewIdV2");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Token/Request/NewIdV2"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results
 

Validate Credentials

Validates that integratorKey, accountKey, and accountPin are active.

 
posthttps://api.clientpay.com/Token/Credentials/Validate

Body Params

integratorKey
string
required

Required Field that contains Integrator key

accountKey
string
required

Required Field that contains the Account Key.

accountPin
string
required

Required Field that contains the Account PIN.

 
curl --request POST \
  --url https://api.clientpay.com/Token/Credentials/Validate
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/Token/Credentials/Validate' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/Token/Credentials/Validate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/Token/Credentials/Validate");

xhr.send(data);
import requests

url = "https://api.clientpay.com/Token/Credentials/Validate"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results
 

Get Invoices

Only functions in tandem with an existing Connect integration. Accepts a query parameter and returns an array of invoice objects matching that parameter from the connected environment.

 
posthttps://api.clientpay.com/InvoiceConnect/Search

Body Params

accessId
string

Access token authorizing payments. If not present, must send inside request header

connectOption
int32
required

Type of Search; ProLaw = 1, Enterprise = 2, 3E = 3, Aderant = 4.

searchOption
int32
required

Search category for connect query. Invoice Or Statement = 1, Matter ID = 2, Client ID = 3

searchText
string

Exact search text. For multiple values, separate with a comma.

filterOption
int32

Filter option to filter search results matching filter text value. InvoiceOrStatement = 1, MatterID = 2, ClientID = 3

filterText
string

Filter text value used to limit the display and payment to exact match; eg client ID "A" Separate multiple values with a comma.

 
{
  "accessId": "string",
  "connectOption": 0,
  "searchOption": 0,
  "searchText": "string",
  "filterOption": 0,
  "filterText": "string"
}
A binary file was returned

You couldn't be authenticated

{
  "invoices": [
    {
      "invoicePK": "string",
      "invoiceNumber": "string",
      "invoiceDate": "2018-02-22T02:48:30.181Z",
      "balance": 0,
      "clientNumber": "string",
      "clientName": "string",
      "contactName": "string",
      "contactNumber": "string",
      "matterPK": "string",
      "matterNumber": "string",
      "matterDescription": "string",
      "isMultipay": "string",
      "totalAmount": 0,
      "selectedMerchantAccountId": 0,
      "amountToPay": 0,
      "selected": true,
      "subtotal": 0,
      "tax": 0,
      "totalPaid": 0,
      "matterIndex": 0,
      "companyName": "string",
      "originalTotal": "string",
      "companyOrContactName": "string"
    }
  ],
  "success": true,
  "errorMessage": "string"
}
 

Invoice

Creates a payment page with invoice objects. Payments made from these pages will generate posting records for the appropriate connect module.

 
posthttps://api.clientpay.com/InvoiceConnect/Forms/Add

Body Params

accessId
string

Optional access token authorizing payments. If not present, must include in request header["Authorization"] = "Bearer:" + accessToken

requestId
string
required

Unique Id for calling Api/Payment/Create method. Use "Generate Request ID" Endpoint to get new ID before each call.

connectOption
string
required

Integration Connect Type; ProLaw = 1, Enterprise = 2, 3E = 3, Aderant = 4

sessionId
string

The unique value optionally provided by API caller and added to payment

cardholderName
string

Prepopulate the cardholder name on the resulting payment page. Can be changed by payer.

billingAddress
string

Prepopulate address Line 1 on the Invoice Payment page. Can be changed by payer.

billingCity
string

Optional Field indicating the City for the Invoice Payment page; (100 Chars Max).

billingStateCode
string

Prepopulate the billing state on the invoice payment page. Must be valid 2 letter code for US States and Canadian Provinces/Territories. Can be edited by payer.

billingZipCode
string

Prepopulate the billing Zip on the payment form (Can be edited on the form by cardholder)

enableClientSidePostBack
boolean

Optional Flag indicating whether a Windows Post response should be sent after the payment is made.

clientSideReturnAddress
string

Optional string indicating the URL address our payment response is sent to after the payment is made.

hideCustomerHeaderLogo
boolean

Flag if set will hide customer's logo shown on top of the invoice payment page

duration
int32

Optional Field indicating the duration in seconds of payment page before expiring. Defaults at 15 mins. Max duration is 1 year.

bccEmail
string

Upon completion of payment, any email addresses provided in this field (separate multiple with a comma) will receive a copy of the receipt email.

customFooterText
string

This text will appear at the bottom of the payment page above the "Submit" button.

invoices
array of objects

List of invoice objects to be generated as line items on the payment page.

invoiceNumber
invoiceDate
outstandingBalance
paymentAmount
matterNumber
matterDescription
clientID
clientName
isMultiPay
pdfLink
matterPK
 
{
  "accessId": "string",
  "requestId": "string",
  "connectOption": 0,
  "sessionId": "string",
  "cardholderName": "string",
  "billingAddress": "string",
  "billingCity": "string",
  "billingCountry": "string",
  "billingZipCode": "string",
  "billingStateCode": "string",
  "enableClientSidePostBack": true,
  "clientSideReturnAddress": "string",
  "hideCustomerHeaderLogo": true
   "invoices": [
    {
      "matterNumber": "string",
      "matterDescription": "string",
      "isMultiPay": "string",
      "invoiceNumber": "string",
      "invoiceDate": "2018-02-22T02:48:30.205Z",
      "outstandingBalance": 0,
      "paymentAmount": 0,
      "clientID": "string",
      "clientName": "string",
      "pdfLink": "string",
    }
  ],
}
A binary file was returned

You couldn't be authenticated

{
  "paymentPageUrl": "string",
  "requestId": "string",
  "duration": 0,
  "createdDate": "2018-02-22T02:48:30.202Z",
  "createdDateUtc": "2018-02-22T02:48:30.202Z",
  "success": true,
  "errorMessage": "string"
}
 

Payment Page

Creates a flexible payment page that can accept any number of line items and can be configured to display up to 3 custom data points per item.

 
posthttps://api.clientpay.com/PaymentPage/Forms/Add

Body Params

accessId
string
required

Required for authentication

requestId
string
required

Required for authentication

items
array of objects
required

Required. One or more items must be provided.

amount
payFullAmount
itemId
itemName
lineItemDescription
sessionId
string

The unique value optionally provided by API caller and added to payment. Useful for subsequent queries via "Status" endpoint.

billingAddress
string

Prepopulate the Address Line 1 (street) on the Payment page; (100 Chars Max).

billingCity
string

Prepopulate the city for the payment page; (100 Chars Max).

billingStateCode
string

Prepopulate the billing State on the payment form. Must be valid 2 letter code for US States and Canadian Provinces/Territories

billingZipCode
string

Prepopulate the billing Zip on the payment form.

enableClientSidePostBack
boolean

If True, will submit a windows.post message which can be read by parent window in the event that payment page is being presented in an iframe.

clientSideReturnAddress
string

Separate from ClientSidePostBack.Optional string indicating the URL address our payment response is sent to after the payment is made.

hideCustomerHeaderLogo
boolean

If True, hides customer logo. False will display.

bccEmail
string

Upon completion of payment, any email address(es) entered here will receive a copy of the receipt. Multiple emails should be comma separated.

customHeaderText
string

Custom text that will display in large font at the top of the payment page.

itemIDLabel
string

This is the label that will accompany the Item ID in the items object. If no value provided, default is Item ID.

itemNameLabel
string

This is the label that will accompany the Item Name. If no value provided, default is Item Name.

lineItemDescriptionLabel
string

This is the label that will accompany the Line Item Description. If no value provided, default is Item Description.

customFooterText
string

Custom text that will display at the bottom of the page directly above the submit button.

curl --request POST \
  --url https://api.clientpay.com/PaymentPage/Forms/Add
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/PaymentPage/Forms/Add' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/PaymentPage/Forms/Add")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/PaymentPage/Forms/Add");

xhr.send(data);
import requests

url = "https://api.clientpay.com/PaymentPage/Forms/Add"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results
 

Expire Payment Page

Expires the API Payment Page

 
posthttps://api.clientpay.com/PaymentPage/Forms/Expire

Body Params

id
string

RequestId matching the previously created API payment page.

accessId
string

Required for authentication. Optional in body if included in request header.

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

$.get('http://yoursite.com/test/' + id, function(data) {
    console.log(data);
});
curl --request POST \
  --url https://api.clientpay.com/PaymentPage/Forms/Expire
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.clientpay.com/PaymentPage/Forms/Expire' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.clientpay.com/PaymentPage/Forms/Expire")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.clientpay.com/PaymentPage/Forms/Expire");

xhr.send(data);
import requests

url = "https://api.clientpay.com/PaymentPage/Forms/Expire"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results