The CoPilot API uses JSON web service semantics and provides resources for boarding new merchant accounts and managing existing accounts.
The API complements the CoPilot web application, offering a programmatic interface to some features available in the application; however, you must use the web application to complete some tasks (for example, creating application templates).
What's New?
Visit Statuspage and click subscribe to updates to receive important release and status notifications.
Date Updated: 1/19/2022
This release contains the following updates:
Third Party Provider Details
The Merchant Definition now includes an additional thirdPartyProviderDetails object, to specify third party provider (TPP) details in a merchant create or update request. This object is also returned in a GET merchant details response.
This change aligns with a previous update to the MPA and CoPilot to ask if the merchant uses any third party provider (TPP) to store, process, or transmit cardholder data, and if so, to provide the TPP Name and contact phone and email.
The thirdPartyProviderDetails object is optional, but requires the following fields when provided:
Field
Type
Description
thirdPartyProviderFlg
Boolean
A true/false indicator the determines whether or not the merchant uses a third party provider to store, process, or transmit cardholder data.
If true, thirdPartyProviderCd, thirdPartyProviderEmail, and thirdPartyProviderPhone are required.
If false, all other fields can be null.
thirdPartyProviderCd
String
A 2-character code representing the TPP.
If thirdPartyProviderFlg is true, this field is required and must be one of the following values:
01 - Yahoo
02 - Authorize.net
03 - Cybersource
04 - VeriFone
05 - Merchant Link
06 - Shift 4
07 - Apriva
08 - FIS
09 - Six Payment Services Corp
10 - Verisign
99 - Other
If 99, the thirdPartyProviderOtherName field is required.
thirdPartyProviderOtherName
String
The TPP name if thirdPartyProviderCd is 99.
Must be null or omitted if thirdPartyProviderCd is any other value.
This field must not contain the a name from the thirdPartyProviderCd list (for example, "Yahoo").
thirdPartyProviderEmail
String
The contact email address for the TPP.
Must be a less than or equal to 32 characters.
thirdPartyProviderPhone
String
The contact phone number for the TPP.
Must be 7-12 characters.
Getting Started
Authentication
The CoPilot API uses the Bearer Authentication HTTP authentication scheme in order to authenticate requests to the API.
To obtain a bearer token to authenticate your API requests, you must create a CoPilot user in the CoPilot web application then provide that user's username and password in a request to the CoPilot API's Token endpoint. A successful request returns a JSON Web Token (JWT) which you use as the Bearer token in subsequent calls to the CoPilot API.
We strongly recommend that you create a dedicated CoPilot user to authenticate your CoPilot API requests, and that you do not use this account to access the CoPilot web application.
The CoPilot web application uses two-factor authentication (2FA); attempting to log into the web application with your CoPilot API user will initiate the 2FA requirement for this user, preventing it from authenticating API requests until the 2FA requirement is satisfied in the web application.
Versioning
Whenever possible, newer versions of the API
will be backwards compatible with older versions. To ensure your
integration is not disrupted in the event that backwards compatibility
cannot be maintained, we strongly recommend specifying the version in the header of each API request as part of your integration. This is accomplished by supplying the X-CopilotAPI-Version HTTP header with the value of the version your application uses.
To help you get started with your integration, we have created a Postman Collection that includes templates for all of the requests documented on this page.
Click the Run in Postman button to download the CoPilot API collection.
To authenticate any request to the CoPilot API, you must first request an access token using the Token endpoint. The Token endpoint requires CoPilot user account credentials, and returns the access token you will use to make API requests during a session.
The access token is valid for a limited timeframe, indicated by the expires_in value (in seconds). Once a token has expired, you must request a new token.
Important Security Considerations:
The provided client_secret is a secret and should never be
exposed on the client side via JavaScript. Ensure that the
client secret is stored securely in your application.
Do not expose the access_token or refresh_token in client-side applications.
Create a dedicated CoPilot user account for authenticating your CoPilot API requests, and do not use this account to access the CoPilot web application. Using this account to access the CoPilot web application will initiate the two-factor authentication (2FA) requirement for this account, preventing the authentication of your API requests until the 2FA requirement is satisfied.
The username for the CoPilot user account used to authenticate your API requests.
password
yes
N/A
The password for the CoPilot user account used to authenticate your API requests.
grant_type
yes
password
client_id
yes
merchapi
client_secret
yes
N/A
CoPilot API registration is required in order to receive your client_secret.
Token Response
The JSON-encoded request will return a signed OpenID Connect JSON Web Token (JWT) as the access_token value, as well as other properties pertaining to authentication.
The access token value to be used with the Bearer Authentication scheme for subsequent calls to the API.
expires_in
number
The number of seconds until the access token is no longer valid.
refresh_expires_in
number
The number of seconds until the refresh token is no longer valid.
refresh_token
string
The refresh token used to request a new access token.
token_type
string
The type of token provided. A successful request returns a bearer token.
not-before-policy
number
When applicable, restricts authentication prior to the timestamp value.
session_state
string
The session state string.
scope
string
The scope of use for the token, based on the user that initiated the request.
Supply the access_token value in the Authorization header of your subsequent API calls, using the Bearer Authentication scheme as shown below.
Authorization: Bearer <access_token>
Merchant
The Merchant endpoint is used primarily to create a new merchant account in CoPilot, using a pre-existing application template that has been created in the CoPilot web interface.
You can also use additional Merchant endpoints to retrieve merchant data, update merchant data, or retrieve the status of a merchant account as outlined below.
Use the POST method to create a new merchant account using a pre-existing application template that has been created in the CoPilot web interface. A successful request returns the merchantId property, which is used to identify the account within CoPilot and is used in subsequent API calls for additional boarding operations.
The code example to the right is not representative of a legitimate request as it includes all possible fields, including those that would generate a conflict when creating a merchant.
See the CoPilot Developer Guides to learn about the minimum data requirements and process of creating a new merchant.
The owner site user object is used to create the merchant's CardPointe user. If this is null, a CardPointe user will be created using the ownership fields in the merchant.
Create Merchant Response
Example Create Merchant Response
{
"merchantId": 12345678,
"errors": null
}
Field
Size
Type
Comments
merchantId
19
number
The merchant ID used to identify the account within CoPilot.
errors
n/a
array
The errors array containing one or more errors if there was a problem creating the merchant.
Use the GET method to retrieve all
merchant account data, such as contact and owner information, business
details, processing information, pricing, and fees.
Once a merchant account has been created, use the PUT method to update any account data prior to submitting for digital signing by the merchant.
Updating merchant data is only possible when the account has not yet been submitted for digital signature. Use the Get Merchant Status endpoint to verify that the boardingProcessStatusCd is INPROG. If the boardingProcessStatusCd is OFS, then the account has been submitted for digital signature but has not yet been signed. If that is the case, you must use the Retract Signature endpoint before modifying any account data.
It is necessary to supply all children of an object when updating merchant data. When only one field within an object is supplied, the remaining fields within that object are overwritten with null. Objects omitted from the PUT request retain their values.
As an example, submitting a PUT request that only includes a value for merchant.ownership.driversLicenseNumber within the request body sucessfully sets the new driversLicenseNumber value, and overwrites all other fields within the merchant.ownership object with null. Objects not included in the request, such as the merchant.pricing object, retain their existing values.
Updating the Owner
Updating data within the merchant.ownership.owner object does not automatically update the values in the ownerSiteUser object. Use the GET and PUT methods of the Owner Site User endpoint to check the current values for the ownerSiteUser object and update if necessary.
The owner site user object is used to create the merchant's CardPointe user. When null, no changes are made to the owner site user.
Update Merchant Data Response
Example Update Merchant Data Response
{
"errors": null
}
Field
Size
Type
Comments
errors
n/a
array
The errors array containing one or more errors if there was a problem updating the merchant.
Get Merchant Status
Use the Merchant Status endpoint to retrieve the account boarding and gateway boarding status, as well as the date and time that the account transitioned to a new status.
A successful request returns the errors object, as well as the merchantStaus object containing the following fields:
Field
Type
Comments
approvedDatetime
string
The date and time the account transitioned to the APPROVED status. The date and time is reported in local time, based on the timezone selected in the CoPilot web interface.
boardedDatetime
string
The date and time the account transitioned to the BOARDED status. The date and time is reported in local time, based on the timezone selected in the CoPilot web interface.
cancelledDatetime
string
The date and time the account transitioned to the CANCELLED status. The date and time is reported in local time, based on the timezone selected in the CoPilot web interface.
declinedDatetime
string
The date and time the account transitioned to the DECLINED status. The date and time is reported in local time, based on the timezone selected in the CoPilot web interface.
liveDatetime
string
The date and time the account transitioned to the LIVE status. The date and time is reported in local time, based on the timezone selected in the CoPilot web interface.
boardingProcessPendingFlg
boolean
boardingProcessStatusCd
enumeration
See below
gatewayBoardingStatusCd
enumeration
See below
Boarding Process Status Codes
Code
Description
INPROG
The digital application has not yet been submitted to the merchant for signing. Displayed in the CoPilot web interface as "Not Submitted."
Note: Merchant details can only be added or modified in this state.
OFS
The digital application is awaiting merchant signature. Displayed in the CoPilot web interface as "Pending Signature."
QUALIFY
The digital application is signed and undergoing an inital review before being sent for underwriting. Displayed in the CoPilot web interface as "Qualifying."
UNDER
The application is being reviewed by the Underwriting team. Displayed in the CoPilot web interface as "Underwriting."
DECLINED
The application has been rejected by the Underwriting team.
BOARDING
The merchant account is in the process of being boarded to the processing platform.
BOARDED
The merchant account is successfully boarded to the processing platform.
LIVE
The merchant account is boarded to the processing platform, the CardPointe Gateway, and is receiving deposits.
CANCELLED
The merchant account is cancelled.
Gateway Boarding Status Codes
Code
Description
NOT_BOARDED
The merchant ID is not yet boarded to the CardPointe Gateway.
BOARDED
The merchant account is boarded to the processing platform and the merchant ID is boarded to the CardPointe Gateway.
Signature
The Signature endpoint is used to provide the digital application to
the merchant for signature, view the current status of a digital
application that is pending signature, or retract the digital
application in order to modify it before the merchant has signed.
Request Signature
Use the PUT request when you are ready to submit the application for
the merchant to review and sign. If successful, the response returns a
unique URL that can be provided to the owner to review and sign the
application digitally.
See the CoPilot Developer Guides to learn about how to track the status of a new account after requesting the link to the digital application.
A successful request returns the errors object, as well as the signatureStatus object containing the following fields:
Field
Type
Comments
signedSiteUserId
number
The ID of the owner site user who signed the application.
signedDateTime
string
The date and time the application was signed. The date and time is reported in local time, based on the timezone selected in the CoPilot web interface.
The URL for the digital application that the signer accessed to complete the digital application.
signatureStatusCd
enumeration
Can be one of the following:
NOT_SENT - No URL for the digital application exists.
PENDING - The URL for the digital application exists and is pending completion by the merchant.
SIGNED - The digital application has been completed and signed.
Signer Definition
Field
Type
Comments
email
string
The email of the signer.
firstName
string
The first name of the signer.
lastName
string
The last name of the signer.
ipAddress
string
The signer's IP address at the time of signing.
personalGuaranteeFlg
boolean
True when the owner selected the Personal Guarantee option.
Retract Signature
Use the DELETE method to disable the URL that is used by the owner to review and sign the digital application. This reverts the merchant's status to the INPROG state, allowing you to make modifications to the account data.
This method can only be used when the application is pending signature. Use Get Signature Status to verify that the current signature status is PENDING, which indicates that the application has been submitted to the owner for signing, but has not yet been signed.
After updating the account data, use Request Signature to generate a new unique URL that the owner will use to review and sign the digital application.
The errors array containing one or more errors if there was a problem
Attachment
The Attachment endpoint allows you to upload documents that may be required before the account can be boarded, such as hard copies of agreements that have been completed and signed by the merchant, or a copy of a voided check. Refer to the Attachment Type Codes to view the various agreements, forms, and documents that can be attached to a merchant account.
The document to upload, provided as a Base 64 encoded file.
Note: Attach only documents or image files. Audio and video files are not supported.
Upload Attachment Response
Example Upload Attachment Response
{
"errors": null,
"attachmentId": 123456
}
Field
Type
Comments
errors
array
The errors array containing one or more errors if there was a problem uploading the attachment.
attachmentId
number
The ID of the attachment for reference.
Equipment Catalog
The Equipment Catalog endpoint provides a list of terminals, gateways, and software available for ordering based on the Sales Code supplied in the query string. Use the endpoint to determine the equipment ID of a add-on to be used in a subsequent call to the Create Order endpoint.
GET https://api-uat.cardconnect.com/equipmentCatalog/list?salesCode=salescode1&equipmentSupplierCd=CARDCONNECT&equipmentTypeCd=TERMINAL&pageNumber=1&pageSize=2
Field
Required
Comments
salesCode
yes
The Sales Code of the merchant that requires additional equipment.
List of equipment definitions returned as an array of equipment objects.
totalServerItemsCount
number
Total number of rows.
totalDisplayItemsCount
number
The total number of rows before and including this page.
moreRowsAvailable
boolean
True if the are more rows available on the next page.
columnSums
n/a
Internal use.
errors
array
The errors array containing one or more errors if there was a problem with the request.
Order
The Order endpoint is used primarily to create a new equipment order for a merchant account, using the equipment's equipmentId that can be obtained by calling the Equipment Catalog endpoint.
You can also use additional Order endpoints to retrieve the details of a specific order, update an order, cancel an order, as well as using the list endpoint to retrieve all orders for a merchant account.
Use the POST method to create a new equipment order for an existing merchant account. Submitting an order requires equipmentId, which can be obtained by calling the Equipment Catalog endpoint for a list of available equipment and the associated equipment IDs.
When placing an equipment order, the following options are available:
Equipment orders may be billed using any of the methods supported by your partner account, such as billing to your partner residuals, partner credit card, or to the customer directly.
Billing for equipment can be set as a monthly charge, or an upfront one-time charge.
Note: It is not possible to change merchantId and equipmentId for an existing order.
Update Order Response
Example Update Order Response
{
"errors": null
}
Field
Type
Comments
errors
array
The errors array containing one or more errors if there was a problem creating the order.
Cancel Order
The Cancel Order endpoint can be used to cancel any order where the orderStatusCd is NEW. Use the Get Order endpoint to verify an order's current status.
The errors array containing one or more errors if there was a problem cancelling the order.
Custom Fields
Custom fields can be enabled for your partner account to include additional merchant data, such as associated account numbers, the account's regional area, or any other type of data that you wish to notate.
You can use the PUT or GET methods to update the custom field values for a merchant, or view the current custom fields configured and the current merchant values. If you need to enable a field, disable it, or change whether the field is required, access the CoPilot web interface to make these changes to your partner account.
Update Custom Fields
Use the PUT method to update the custom field values for a merchant,
if custom fields are already configured for your merchant via the CoPiot
web interface. If unsure, you can use the GET method to view the currently
configured custom fields for your partner account. Custom fields that
are enabled and required need to be provided before the account can be
submitted for digital signature.
The custom fields array containing objects for each custom field. Required when one or more custom fields have been configured in the CoPilot web interface as a required field for new merchants.
Update Custom Fields Response
Example Update Custom Fields Response
{
"errors": null
}
Field
Size
Type
Comments
errors
n/a
array
The errors array containing one or more errors if there was a problem updating the custom fields.
Get Custom Fields
Use the GET method to retrieve the list of custom fields configured for your partner account, the custom fields you have set as required for new merchants, as well as the values currently set for the merchant.
GET https://api-uat.cardconnect.com/merchant/123456789/customfields
Get Custom Fields Response
Example Get Custom Fields Response
{
"customFields": [
{
"customFieldLabel": "Custom Field 1",
"isRequired": 0,
"isActive": 1,
"userFieldNumber": 1,
"customFieldValue": "example value 1"
},
{
"customFieldLabel": "Custom Field 2",
"isRequired": 1,
"isActive": 1,
"userFieldNumber": 2,
"customFieldValue": "example value 2"
}
]
}
The customFields array that is returned includes additional fields that provide details on the custom fields configured, including whether they are currently active or required fields. Refer to the following table for the extended customFields object that is returned with the GET response.
Field
Type
Comments
customFieldLabel
string
The label for this custom field, set via the CoPilot web interface.
isRequired
number
When 0, this custom field is configured in the CoPilot web interface as not required.
When 1, this custom field is configured in the CoPilot web interface as required.
isActive
number
When 0, this custom field is configured in the CoPilot web interface as inactive.
When 1, this custom field is configured in the CoPilot web interface as active.
userFieldNumber
number
A value from 1-10 that represents this custom field's number and is used as an identifier when updating the value via a PUT request.
customFieldValue
string
The custom field's value currently set for this account, whether set via the CoPilot web interface or via the CoPilot API.
Owner Site User
Owner Site User data is used to create a CardPointe account for the
owner when the merchant account is submitted for digital signing. If no ownerSiteUser object was provided when creating a merchant account, the fields are populated using data from the merchant.ownership.owner object. You can use the PUT method to update this data or the GET method to view the current values.
Ensure this information is accurate as the owner uses this account to review and sign the digital application. This CardPointe user account also provides the owner access to the CardPointe Web App to view the status of their application, manage account settings, and later view CardPointe Gateway transactions and reports once boarded to the Gateway.
Update Owner Site User
If the owner has not already registered a CardPointe account with the email address currently specified in the ownerSiteUser object, use the PUT method to update these values. If the owner has already completed the CardPointe user registration process, they must log in to CardPointe in order to update this information.
Telephone-Initiated Entry: A single entry debit application initiated by an originator pursuant to an oral authorization obtained over the telephone to effect a transfer of funds from an account of the receiver.
Note: At least one SEC Option required for applications that include the ACH from Fiserv add-on for manual signature.
ccdSecOptionFlg
n/a
boolean
See comments
Cash Concentration and Disbursement: A credit or debit application where funds are transferred between unrelated corporate entities or transmitted as intra-company concentrations and disbursement transactions. Serves as stand-alone funds transfer, or it can support a limited amount of payment-related data with the fund's transfer.
Note: At least one SEC Option required for applications that include the ACH from Fiserv add-on for manual signature.
webSecOptionFlg
n/a
boolean
See comments
Internet-Initiated Entry: Debit applications initiated by an originator pursuant to an authorization from the receiver via the internet to effect a transfer of funds from an account of the receiver.
Note: At least one SEC Option required for applications that include the ACH from Fiserv add-on for manual signature.
ppdSecOptionFlg
n/a
boolean
See comments
Prearranged Payment and Deposit: Both direct payments and direct deposits.
Note: At least one SEC Option required for applications that include the ACH from Fiserv add-on for manual signature.
The PCI Annual Fee, applicable when pciProgramCd is ANNUAL.
pciConciergeMonthlyFee
8.2
number
see comments
The PCI Concierge Monthly Fee.
Required to submit merchants when pciProgramCd is CONCIERGE.
pciNonComplianceFee
8.2
number
no
The PCI Non-Compliance Fee (Monthly), applicable when pciProgramCd is ANNUAL.
pciProgramCd
10
string
yes
The PCI Program Code that identifies the merchant's PCI Program.
regProdMonthlyFee
8.2
number
yes
The Regulatory Product Fee (Monthly).
retrievalFee
8.2
number
yes
The Retrieval Fee (Per Item).
statementFee
8.2
number
yes
The Statement Fee (Monthly).
transactionFee
7.3
number
yes
The Transaction Fees (All Card Types).
voiceAuthFee
7.3
number
yes
The Voice Authorization Fee.
wirelessActivationFee
8.2
number
yes
The Wireless Activation Fee (One Time).
wirelessFee
8.2
number
yes
The Wireless Fee (Monthly).
duesAndAssessmentsFlg
n/a
boolean
no
True if Dues & Assessments is enabled.
passthruInterchgCostsFlg
n/a
boolean
no
Returned only for accounts created prior to the introduction of the interchangeTypeCode field in the 5/5/20 update. True when the account using the IC Plus Pricing model.
The Sales Code created within the CoPilot web interface that is applicable for this merchant account.
akaBusinessName
200
string
no
The 'Also Known As' business name, such as an informal or shorthand moniker of the legal or DBA name.
dbaName
100
string
yes
The 'Doing Business As' name, sometimes referred to as the 'Fictitious Business Name' or 'Assumed Business Name' that is legally registered.
legalBusinessName
500
string
yes
The full legal name of the registered business.
taxFilingName
500
string
yes
The business name used in tax filing. Include only the following special characters: &, -
taxFilingMethod
3
string
yes
The method used to identify the business for tax filing. Can be either EIN or SSN. Only the SSN method is possible when merchant.ownership.ownershipType is INDIVSOLE.
businessStartDate
8
string
no
The business inception date, formatted as MM/DD/YYYY.
businessIdTypeCd
7
string
no
The business identification type code, used to verify the business. Can be either ARTICLE or GOVT.
custPrimaryAcctFlg
n/a
boolean
no
True when the account is considered the primary account among linked MIDs.
webLeadFlg
n/a
boolean
no
True when this merchant account is created as the result of an unsolicited merchant inquiry using a hosted web form or a similar lead generation strategy.
hierarchy
n/a
object
no
The hierarchy object, containing custom hierarchy information for this merchant.
The custom fields array, containing an object for each custom field object. Required when one or more custom fields have been configured in the CoPilot web interface as a required field for new merchants.
The percentage of card-not-present transactions accepted via eCommerce solutions, represented as a whole number.
keyedPct
3
number
yes
The percentage of card-not-present transactions entered manually using a hardware terminal keypad or the Virtual Terminal, represented as a whole number.
mailOrderPct
3
number
yes
The percentage of card-not-present transactions accepted via a call center, represented as a whole number.
swipedPct
3
number
yes
The percentage of card-present transactions accepted via hardware terminals, represented as a whole number.
The address object, containing the owner's address information.
ownerEmail
300
string
yes
The email address of the owner.
ownerName
300
string
yes
The first and last name of the owner.
Note: Do no include title, middle name, or suffix. First name must contain only characters. Last name must not contain more than 1 hyphen or 1 apostrophe.
ownerDob
8
string
no
The date of birth of the owner, formatted as MM/DD/YYYY.
ownerPhone
12
string
yes
The phone number of the owner, formatted as ###-###-####.
ownerMobilePhone
12
string
yes
The mobile phone number of the owner, formatted as ###-###-####.
ownerSSN
11
string
yes
The Social Security Number of the owner, formatted as ###-##-####.
The BlueChex volume object containing ACH transaction volume data. Required for applications that include the ACH from Fiserv add-on and a digital signature.
blueChexSecOptions
n/a
object
See comments
The BlueChex SEC Options object containing SEC Option Flags. At least one SEC Option required for applications that include the ACH from Fiserv add-on for manual signature.
The percentage used to calculate the Credit Discount Fees for Visa, Mastercard, Discover Full Service, PIN Debit, PINless Debit, Star Access, and Amex OptBlue transactions when card data is captured from MSR (swiped) or EMV (dipped). Sales volume only.
swipedTransactionFee
number
yes
The transaction fee applied for Visa, Mastercard, Discover Full Service, Star Access, and Amex OptBlue transactions when card data is captured from MSR (swiped) or EMV (dipped). Sales count only.
nonSwipedDiscountPct
number
yes
The percentage used to calculate the Credit Discount Fees for Visa, Mastercard, Discover Full Service, Star Access, and Amex OptBlue transactions when card data is entered manually. Sales volume only.
nonSwipedTransactionFee
number
yes
The transaction fee applied for Visa, Mastercard, Discover Full Service, Star Access, and Amex OptBlue transactions when card data is entered manually. Sales count only.
When there is an error in the request, there will be a non-null errors array in the response body. If there are multiple field validation errors, there will be multiple error objects in the errors array. See the example below.
Errors Definition
Example Error Array
{
"errors": [
{
"code": "1113",
"message": "Owner date of birth is invalid. Please use MM/DD/YYYY format.",
"errorField": "merchant.ownership.owner.ownerDob",
"status": "BAD_REQUEST"
},
{
"code": "1115",
"message": "Phone is invalid. Please use XXX-XXX-XXXX format.",
"errorField": "merchant.demographic.businessPhone",
"status": "BAD_REQUEST"
}
]
}