Zip and Country Codes
Development
Reference Materials
Introduction
Billing API is a RESTful API that allows setting up customers, collecting payments and maintaining balances for these customers, as well as creating recurring billing subscriptions.
Billing API documentation includes the following sections:
Objects - lists all recurring billing objects. The purpose of this section is to describe all object fields, their format and usage, provide the links to the corresponding database tables.
Type Enumerations – lists possible values that can be used in the respective fields within Billing API requests and responses. The purpose of this section is to provide an explanation of all enumerations used for API calls.
Actions - lists all actions that can be performed with key recurring billing objects. The purpose of this section is to describe the methods and format of API requests and the format of responses.
Integration Notes – lists integration notes associated with the Billing API objects and actions. The purpose of this section is to provide explicit information about the peculiarities of specific actions and object fields.
Code samples - provides examples of recurring billing use cases (creating billing plans, subscriptions, freeing or canceling subscriptions, reversing transactions, etc) and their implementation in JSON, XML formats. The purpose of this section is to provide examples that can be used for testing of the integration with the gateway.
To learn how to work with the Billing API, we recommend reviewing the integration notes first. Key recurring billing module terms are available here.
For more detailed information about the recurring billing configurations and management, check the Recurring Billing Guide.
Billing API Index (Actions)
URL |
Action |
Method |
[version]/customers view |
[version]/customers |
~create |
PUT |
[version]/customers |
~find |
GET |
[version]/customers/[customer-id] view |
[version]/customers/[customer-id] |
~load |
GET |
[version]/customers/[customer-id] |
~modify |
POST |
[version]/customers/[customer-id]/payment-options view |
[version]/customers/[customer-id]/payment-options |
~create |
PUT |
[version]/customers/[customer-id]/payment-options |
~find |
GET |
[version]/customers/[customer-id]/payment-options/[payment-option-id] view |
[version]/customers/[customer-id]/payment-options/[payment-option-id] |
~load |
GET |
[version]/customers/[customer-id]/payment-options/[payment-option-id] |
~modify |
POST |
[version]/customers/[customer-id]/payment-options/[payment-option-id] |
~process |
POST |
[version]/customers/[customer-id]/subscriptions view |
[version]/customers/[customer-id]/subscriptions |
~create |
PUT |
[version]/customers/[customer-id]/subscriptions |
~find |
GET |
[version]/customers/[customer-id]/subscriptions/[subscription-id] view |
[version]/customers/[customer-id]/subscriptions/[subscription-id] |
~cancel |
GET |
[version]/customers/[customer-id]/subscriptions/[subscription-id] |
~freeze |
GET |
[version]/customers/[customer-id]/subscriptions/[subscription-id] |
~load |
GET |
[version]/customers/[customer-id]/subscriptions/[subscription-id] |
~modify |
POST |
[version]/customers/[customer-id]/subscriptions/[subscription-id] |
~pause |
GET |
[version]/customers/[customer-id]/subscriptions/[subscription-id] |
~uncancel |
GET |
[version]/customers/[customer-id]/subscriptions/[subscription-id] |
~unfreeze |
GET |
[version]/customers/[customer-id]/subscriptions/[subscription-id] |
~unpause |
GET |
[version]/customers/[customer-id]/subscriptions/[subscription-id]/adjustments view |
[version]/customers/[customer-id]/subscriptions/[subscription-id]/adjustments |
~find |
GET |
[version]/customers/[customer-id]/transactions view |
[version]/customers/[customer-id]/transactions |
~create |
PUT |
[version]/customers/[customer-id]/transactions |
~find |
GET |
[version]/customers/[customer-id]/transactions |
~process |
POST |
[version]/customers/[customer-id]/transactions/[transaction-id] view |
[version]/customers/[customer-id]/transactions/[transaction-id] |
~load |
GET |
[version]/customers/[customer-id]/transactions/[transaction-id] |
~reverse |
GET |
[version]/customers/[customer-id]/transactions/[transaction-id]/allocations view |
[version]/customers/[customer-id]/transactions/[transaction-id]/allocations |
~find |
GET |
[version]/plans view |
[version]/plans |
~create |
PUT |
[version]/plans |
~find |
GET |
[version]/plans/[plan-id] view |
[version]/plans/[plan-id] |
~load |
GET |
[version]/plans/[plan-id] |
~modify |
POST |
Base Resource URL:
https://[server-name]/api/v01/customers
Description:
Provides access to customers registered within the system.
Supported sub-resources:
Resource URL |
Description |
https://[server-name]/api/v01/customers/[customer-id]
|
Provides access to configuration settings for the specified customer. |
Supported Actions:
~create (request)
Method: PUT
Implicit: Yes
Consumes: json,xml
Produces: json,xml
Create new customer record for recurring billing.
- Records include name, address, payment options, and subscription plan connections.
- Only create customers when using the Recurring Billing API.
- Do not create customers for non-recurring transactions through the Transaction API.
- A customer can have multiple payment methods and subscription plans for flexible billing models.
# |
Name |
Type |
Pattern |
Format |
Mode |
Usage |
Description |
1 |
phone |
String |
|
|
|
|
Phone number of the customer.\n\r\n> **Note:** Include country code for international numbers. |
2 |
street1 |
String(128) |
|
|
|
|
Street address of the customer (line 1).\n\r\n> **Tip:** Providing accurate address information improves fraud prevention capabilities and may affect transaction approval rates. |
3 |
street2 |
String(128) |
|
|
|
|
Street address of the customer (line 2).\n\r\n> **Note:** Additional address details such as an apartment or suite number. |
4 |
organizationName |
String(255) |
|
|
|
|
Name of the organization associated with the customer.\n\r\n> **Note:** This is a user-provided freeform field and does not represent any other data structure or object. |
5 |
email |
String(100) |
|
|
|
|
Email associated with the customer.\n\r\n> **Tip:** Providing an email address enables automatic notifications and improves customer communication capabilities. |
11 |
code |
String(60) |
|
|
|
|
Optional secondary identifier. Typically this field is a reference to an ID in your own system to cross-reference it within our system.\n\r\n> **Note:** Default: `object's id` which is returned in the response.\n\r\n> **Tip:** Providing consistent external identifiers improves integration capabilities. |
12 |
accountId |
Integer |
|
|
|
|
Specifies which merchant account to use with this API call.\n\r\n> **Note:** Your API credentials may be associated with more than one accountId.\n\r\n> **Tip:** When working with multiple merchant accounts, use this field to ensure transactions are processed against the correct account. |
14 |
firstName |
String(125) |
|
|
|
|
First name of the customer. This field applies to both individual and organization-type customers.\n\r\n> **Note:** For organizations, this field is used for the first name of the company's contact person. |
15 |
lastName |
String(125) |
|
|
|
|
Last name of the customer. This field applies to both individual and organization-type customers.\n\r\n> **Note:** For organizations, this field is used for the last name of the company's contact person. |
16 |
email |
String |
|
|
|
|
Email associated with the customer.\n\r\n> **Tip:** Providing an email address enables automatic notifications and improves customer communication capabilities. |
17 |
isActive |
Boolean |
|
|
|
|
Indicates whether a record is active within the system.\n\r\n> **Note:** Default: `true` (1). Possible values: `true` = active, `false` = inactive. |
19 |
city |
String(50) |
|
|
|
|
The city of the customer.\n\r\n> **Tip:** Including complete address information may lower interchange costs for certain transaction types. |
20 |
countryCode |
String(2) |
|
|
|
|
The country code of the customer's address.\n\r\n> **Note:** Use ISO 3166-1 alpha-2 standard. Example: US for United States, CA for Canada. |
21 |
state |
String(3) |
|
|
|
|
The state of the customer.\n\r\n> **Note:** State format is subject to the associated country code. For US addresses, use two-letter state codes. |
22 |
zipCode |
String(10) |
|
|
|
|
The ZIP or postal code of the customer.\n\r\n> **Note:** Format is subject to the associated country code in the Customer object. |
25 |
state |
String(3) |
|
|
|
|
The state of the customer.\n\r\n> **Note:** State format is subject to the associated country code. For US addresses, use two-letter state codes. |
26 |
zipCode |
String(10) |
|
|
|
|
The ZIP or postal code of the customer.\n\r\n> **Note:** Format is subject to the associated country code in the Customer object. |
~create (response)
Method: PUT
Implicit: Yes
Consumes: json,xml
Produces: json,xml
Create new customer record for recurring billing.
- Records include name, address, payment options, and subscription plan connections.
- Only create customers when using the Recurring Billing API.
- Do not create customers for non-recurring transactions through the Transaction API.
- A customer can have multiple payment methods and subscription plans for flexible billing models.
# |
Name |
Type |
Pattern |
Format |
Mode |
Usage |
Description |
1 |
phone
|
String |
|
|
|
|
Phone number of the customer.\n\r\n> **Note:** May include country code for international numbers. |
2 |
street1
|
String(128) |
|
|
|
|
Street address of the customer (line 1). |
3 |
street2
|
String(128) |
|
|
|
|
Street address of the customer (line 2).\n\r\n> **Note:** Contains additional address details such as an apartment or suite number. |
4 |
organizationName
|
String(255) |
|
|
|
|
Name of the organization associated with the customer.\n\r\n> **Note:** This is a user-provided freeform field and does not represent any other data structure or object. |
5 |
email
|
String(100) |
|
|
|
|
Email associated with the customer.\n\r\n> **Tip:** This email can be used for customer communications and notifications. |
6 |
holderName
|
String(500) |
|
|
|
|
Calculated field that combines the firstName and lastName.\n\r\n> **Note:** Automatically generated by combining the first name and last name, separated by a space. This field is computed by the system and cannot be modified manually.\n\r\n> **Tip:** Use webhooks to track changes to compound fields like this one. |
7 |
createDate
|
Datetime |
|
|
|
|
Date when the customer was created.\n\r\n> **Note:** Format: yyyy-MM-dd HH:mm:ss. Automatically generated by the system. |
8 |
address
|
String(321) |
|
|
|
|
Complete customer address as a single string.\n\r\n> **Note:** Automatically generated by concatenating the `street1`, `street2`, `city`, `state`, `zipCode`, and `countryCode` fields. This field is computed by the system and cannot be modified manually. |
9 |
balance
|
Integer |
|
|
|
|
Balance of the customer in cents.\n\r\n> **Note:** Amount is specified in cents rather than dollars (e.g., $5.00 = 500). |
10 |
id
|
Long |
|
|
|
|
System-generated unique identifier for the customer.\n\r\n> **Note:** Automatically generated by the system upon successful customer creation. |
11 |
code
|
String(60) |
|
|
|
|
Optional secondary identifier provided in the request.\n\r\n> **Note:** If not specified in the request, defaults to the same value as the object's id. Useful for cross-referencing with your system.\n\r\n> **Tip:** Providing consistent external identifiers improves integration capabilities. |
12 |
accountId
|
Integer |
|
|
|
|
Indicates the merchant account used to create the customer.\n\r\n> **Note:** Identifies the merchant account under which this customer was created. |
13 |
createDate
|
Datetime |
|
|
|
|
Date when the customer was created.\n\r\n> **Note:** Format: yyyy-MM-dd HH:mm:ss. Automatically generated by the system. |
14 |
firstName
|
String(125) |
|
|
|
|
First name of the customer.\n\r\n> **Note:** For organizations, this field contains the first name of the company's contact person. |
15 |
lastName
|
String(125) |
|
|
|
|
Last name of the customer.\n\r\n> **Note:** For organizations, this field contains the last name of the company's contact person. |
16 |
email
|
String |
|
|
|
|
Email associated with the customer.\n\r\n> **Tip:** This email can be used for customer communications and notifications. |
17 |
isActive
|
Boolean |
|
|
|
|
Indicates whether the customer record is active within the system.\n\r\n> **Note:** Possible values: `true` (1) = active, `false` (0) = inactive. Default: `true`. |
18 |
balance
|
Integer |
|
|
|
|
Balance of the customer in cents.\n\r\n> **Note:** Amount is specified in cents rather than dollars (e.g., $5.00 = 500). |
19 |
city
|
String(50) |
|
|
|
|
The city of the customer. |
20 |
countryCode
|
String(2) |
|
|
|
|
The country code of the customer's address.\n\r\n> **Note:** Uses ISO 3166-1 alpha-2 standard. Example: US for United States, CA for Canada. |
21 |
state
|
String(3) |
|
|
|
|
The state of the customer.\n\r\n> **Note:** Format is subject to the associated country code. For US addresses, uses two-letter state codes. |
22 |
zipCode
|
String(10) |
|
|
|
|
The ZIP or postal code of the customer.\n\r\n> **Note:** Format is subject to the associated country code. |
23 |
holderName
|
String |
|
|
|
|
Calculated field that combines the firstName and lastName.\n\r\n> **Note:** Automatically generated by combining the first name and last name, separated by a space. This field is computed by the system and cannot be modified manually.\n\r\n> **Tip:** Use webhooks to track changes to compound fields like this one. |
24 |
address
|
String(321) |
|
|
|
|
Complete customer address as a single string.\n\r\n> **Note:** Automatically generated by concatenating the `street1`, `street2`, `city`, `state`, `zipCode`, and `countryCode` fields. This field is computed by the system and cannot be modified manually. |
25 |
state
|
String(3) |
|
|
|
|
The state of the customer.\n\r\n> **Note:** Format is subject to the associated country code. For US addresses, uses two-letter state codes. |
26 |
zipCode
|
String(10) |
|
|
|
|
The ZIP or postal code of the customer.\n\r\n> **Note:** Format is subject to the associated country code. |
~find (request)
Method: GET
Implicit: Yes
Consumes: xurl
Produces: json,xml
Returns a list of available customers based on specified search criteria.
# |
Name |
Type |
Pattern |
Format |
Mode |
Usage |
Description |
1 |
offset |
Integer |
|
|
|
|
Index of the first record returned from the search result.\n\r\n> **Note:** Default: `0`. Used with limit parameter for pagination.\n\r\n> **Tip:** Use this field for implementing paginated results. |
2 |
limit |
Integer |
|
|
|
|
Maximum number of records to load per search call.\n\r\n> **Note:** Default: `100`. Adjust based on performance requirements.\n\r\n> **Tip:** Use this field to balance response size and performance. |
3 |
firstName |
String |
|
|
|
|
First name of the customer. This field applies to both individual and organization-type customers.\n\r\n> **Note:** For organizations, this field is used for the first name of the company's contact person. |
4 |
lastName |
String |
|
|
|
|
Last name of the customer. This field applies to both individual and organization-type customers.\n\r\n> **Note:** For organizations, this field is used for the last name of the company's contact person. |
5 |
organizationName |
String |
|
|
|
|
Name of the organization associated with the customer.\n\r\n> **Note:** This is a user-provided freeform field and does not represent any other data structure or object. |
6 |
accountId |
Integer |
|
|
|
|
Specifies which merchant account to use with this API call.\n\r\n> **Note:** Your API credentials may be associated with more than one accountId.\n\r\n> **Tip:** When working with multiple merchant accounts, use this field to ensure transactions are processed against the correct account. |
7 |
email |
String |
|
|
|
|
Email associated with the customer.\n\r\n> **Tip:** Providing an email address enables automatic notifications and improves customer communication capabilities. |
8 |
phone |
String |
|
|
|
|
Phone number of the customer.\n\r\n> **Note:** Include country code for international numbers. |
9 |
street |
String |
|
|
|
|
Street of the mailing address of the customer used for filtering Customer records. |
10 |
city |
String |
|
|
|
|
The city of the customer.\n\r\n> **Tip:** Including complete address information may lower interchange costs for certain transaction types. |
11 |
state |
String |
|
|
|
|
The state of the customer.\n\r\n> **Note:** State format is subject to the associated country code. For US addresses, use two-letter state codes. |
12 |
zipCode |
String |
|
|
|
|
The ZIP or postal code of the customer.\n\r\n> **Note:** Format is subject to the associated country code in the Customer object. |
13 |
countryCode |
String |
|
|
|
|
The country code of the customer's address.\n\r\n> **Note:** Use ISO 3166-1 alpha-2 standard. Example: US for United States, CA for Canada. |
~find (response)
Method: GET
Implicit: Yes
Consumes: xurl
Produces: json,xml
Returns a list of available customers based on specified search criteria.
# |
Name |
Type |
Pattern |
Format |
Mode |
Usage |
Description |
1 |
phone
|
String |
|
|
|
|
Phone number of the customer.\n\r\n> **Note:** May include country code for international numbers. |
2 |
street1
|
String(128) |
|
|
|
|
Street address of the customer (line 1). |
3 |
street2
|
String(128) |
|
|
|
|
Street address of the customer (line 2).\n\r\n> **Note:** Contains additional address details such as an apartment or suite number. |
4 |
organizationName
|
String(255) |
|
|
|
|
Name of the organization associated with the customer.\n\r\n> **Note:** This is a user-provided freeform field and does not represent any other data structure or object. |
5 |
email
|
String(100) |
|
|
|
|
Email associated with the customer.\n\r\n> **Tip:** This email can be used for customer communications and notifications. |
6 |
holderName
|
String(500) |
|
|
|
|
Calculated field that combines the firstName and lastName.\n\r\n> **Note:** Automatically generated by combining the first name and last name, separated by a space. This field is computed by the system and cannot be modified manually.\n\r\n> **Tip:** Use webhooks to track changes to compound fields like this one. |
7 |
createDate
|
Datetime |
|
|
|
|
Date when the customer was created.\n\r\n> **Note:** Format: yyyy-MM-dd HH:mm:ss. Automatically generated by the system. |
8 |
address
|
String(321) |
|
|
|
|
Complete customer address as a single string.\n\r\n> **Note:** Automatically generated by concatenating the `street1`, `street2`, `city`, `state`, `zipCode`, and `countryCode` fields. This field is computed by the system and cannot be modified manually. |
9 |
balance
|
Integer |
|
|
|
|
Balance of the customer in cents.\n\r\n> **Note:** Amount is specified in cents rather than dollars (e.g., $5.00 = 500). |
10 |
id
|
Long |
|
|
|
|
System-generated unique identifier for the customer.\n\r\n> **Note:** Automatically generated by the system upon successful customer creation. |
11 |
code
|
String(60) |
|
|
|
|
Optional secondary identifier provided in the request.\n\r\n> **Note:** If not specified in the request, defaults to the same value as the object's id. Useful for cross-referencing with your system.\n\r\n> **Tip:** Providing consistent external identifiers improves integration capabilities. |
12 |
accountId
|
Integer |
|
|
|
|
Indicates the merchant account used to create the customer.\n\r\n> **Note:** Identifies the merchant account under which this customer was created. |
13 |
createDate
|
Datetime |
|
|
|
|
Date when the customer was created.\n\r\n> **Note:** Format: yyyy-MM-dd HH:mm:ss. Automatically generated by the system. |
14 |
firstName
|
String(125) |
|
|
|
|
First name of the customer.\n\r\n> **Note:** For organizations, this field contains the first name of the company's contact person. |
15 |
lastName
|
String(125) |
|
|
|
|
Last name of the customer.\n\r\n> **Note:** For organizations, this field contains the last name of the company's contact person. |
16 |
email
|
String |
|
|
|
|
Email associated with the customer.\n\r\n> **Tip:** This email can be used for customer communications and notifications. |
17 |
isActive
|
Boolean |
|
|
|
|
Indicates whether the customer record is active within the system.\n\r\n> **Note:** Possible values: `true` (1) = active, `false` (0) = inactive. Default: `true`. |
18 |
balance
|
Integer |
|
|
|
|
Balance of the customer in cents.\n\r\n> **Note:** Amount is specified in cents rather than dollars (e.g., $5.00 = 500). |
19 |
city
|
String(50) |
|
|
|
|
The city of the customer. |
20 |
countryCode
|
String(2) |
|
|
|
|
The country code of the customer's address.\n\r\n> **Note:** Uses ISO 3166-1 alpha-2 standard. Example: US for United States, CA for Canada. |
21 |
state
|
String(3) |
|
|
|
|
The state of the customer.\n\r\n> **Note:** Format is subject to the associated country code. For US addresses, uses two-letter state codes. |
22 |
zipCode
|
String(10) |
|
|
|
|
The ZIP or postal code of the customer.\n\r\n> **Note:** Format is subject to the associated country code. |
23 |
holderName
|
String |
|
|
|
|
Calculated field that combines the firstName and lastName.\n\r\n> **Note:** Automatically generated by combining the first name and last name, separated by a space. This field is computed by the system and cannot be modified manually.\n\r\n> **Tip:** Use webhooks to track changes to compound fields like this one. |
24 |
address
|
String(321) |
|
|
|
|
Complete customer address as a single string.\n\r\n> **Note:** Automatically generated by concatenating the `street1`, `street2`, `city`, `state`, `zipCode`, and `countryCode` fields. This field is computed by the system and cannot be modified manually. |
25 |
state
|
String(3) |
|
|
|
|
The state of the customer.\n\r\n> **Note:** Format is subject to the associated country code. For US addresses, uses two-letter state codes. |
26 |
zipCode
|
String(10) |
|
|
|
|
The ZIP or postal code of the customer.\n\r\n> **Note:** Format is subject to the associated country code. |
|