CardSync Universal Account Updater
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
This is the API for the CardSync Universal Account service.
After signing up as a CardSync Partner, you will be able to use this API in sandbox and production. You will be provided with an API key and a Partner Billing Identifier.
This API allows Partners to create and enroll Merchants and submit inquiry batches of credit card numbers and expiration dates to obtain card status (including updates to card numbers and/or expiration dates) or status updates.
Here are the set of steps needed to create and enroll a merchant:
- Create merchant with /merchant POST. Depending on the agreement between the Partner and the Merchant, Terms of Service may need to be displayed. If this is the case, set "accept_tos" to "false". If the Terms have already been agreed to by the merchant, set "accept_tos" to "true".
- Retrieve and save provided "id" and "api_key".
- (Optional) If the merchant needs to agree to additional Terms of Service, display the Terms of Service so the merchant can sign the legal documentation. This step is optional as your existing agreement with the Merchant may already include these terms. If the Terms are required, call /accept-tos once the Merchant has signed. using the "id" as "account_type_id" and the "api_key" saved in step 2. This API call is not needed if "accept_tos" was set to "true" in step 1.
- (Optional) If a merchant abandons the process, it can be resumed upon next login by presenting the "agreement_url" again.
- Create merchant enrollment with /enrollment POST, using "api_key" from step 2.
- The merchant will be set up for the Account Updater Service within 5-7 business days. The status can be retrieved via GET /enrollment.
- Once enrolled, batches can be submitted via the /batch POST. Save the provided "batch_id".
- Check batch status with GET /batch/{batch_id}.
- When the batch status is complete, retrieve the results with GET /batch/{batch_id}/results. Batches take approximately 5 business days to complete.
Each batch may consist of up to 10,000 card numbers. There is no limit on the number of consecutive batch submissions. Inquiries may return one of six responses: updated_card, updated_expiry, no_match, valid, contact, or contact_closed. If the response is updated_card or updated_expiry, the updated card information is returned. Otherwise, one of the other four status types is returned. Some card inquiries do not result in any status type. This generally means the card is valid.
For more information, visit https://cardsync.io.
Contact Support:
Email: help@cardsync.io
Base URLs:
Authentication
- API Key (Authorization)
- Parameter Name: Authorization, in: header.
Merchant
Merchants are top level entities that must be created for Universal Account Updater enrollment by the respective Card Brands. Use the master api_key provided to you during your account creation for this call.
This call will return a new, merchant-level api_key. This new api_key should be used for all future requests associated with the newly created merchant.
During the merchant creation process, you can optionally display Terms of Service (TOS) for the merchant to accept. If the TOS has already been incorporated into your agreement with the merchant, you may skip this step.
If you want the TOS, please set the "accept_tos" flag to "false" when calling the /merchant POST. If you set it to true, the merchant creation will happen immediately. If you set accept_tos to false, you can then call /accept-tos after the merchant has accepted the TOS.
Add New Merchant
Code samples
# You can also use wget
curl -X POST https://sandbox.cardsync.io/api/merchant \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: API_KEY'
POST https://sandbox.cardsync.io/api/merchant HTTP/1.1
Host: sandbox.cardsync.io
Content-Type: application/json
Accept: application/json
const inputBody = '{
"name": "New Merchant <name must be unique>",
"description": "this is a new merchant that is getting set up",
"website": "example.com",
"phone": "5555555555",
"phone_ext": "1234",
"receipt_email": "test@example.com",
"timezone": "UTC",
"fee_schedule_id": "bqoa026g10l0v8o62315",
"primary_contact": {
"first_name": "Camille",
"last_name": "Bauch",
"company": "Schaefer, Lakin and Heathcote",
"address_line_1": "188 Turnpikefort",
"address_line_2": "",
"city": "Langoshfort",
"state": "VI",
"postal_code": "31018",
"country": "US",
"phone": "5555555555",
"email": "test@example.com"
},
"user": {
"username": "somerandomuser20210219c",
"email": "test@example.com",
"status": "active",
"role": "admin",
"create_api_key": true
},
"accept_tos": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'API_KEY'
};
fetch('https://sandbox.cardsync.io/api/merchant',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post 'https://sandbox.cardsync.io/api/merchant',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.post('https://sandbox.cardsync.io/api/merchant', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://sandbox.cardsync.io/api/merchant', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://sandbox.cardsync.io/api/merchant");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://sandbox.cardsync.io/api/merchant", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /merchant
This endpoint is used to create a new Merchant on our platform. The details provided will be used later to auto fill the enrollment agreement. Merchants must have a unique name. The fee_schedule_id will be provided to you during your Partner creation and will be the same for all Merchants you create.
Body parameter
{
"name": "New Merchant <name must be unique>",
"description": "this is a new merchant that is getting set up",
"website": "example.com",
"phone": "5555555555",
"phone_ext": "1234",
"receipt_email": "test@example.com",
"timezone": "UTC",
"fee_schedule_id": "bqoa026g10l0v8o62315",
"primary_contact": {
"first_name": "Camille",
"last_name": "Bauch",
"company": "Schaefer, Lakin and Heathcote",
"address_line_1": "188 Turnpikefort",
"address_line_2": "",
"city": "Langoshfort",
"state": "VI",
"postal_code": "31018",
"country": "US",
"phone": "5555555555",
"email": "test@example.com"
},
"user": {
"username": "somerandomuser20210219c",
"email": "test@example.com",
"status": "active",
"role": "admin",
"create_api_key": true
},
"accept_tos": true
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Merchant | true | none |
Example responses
200 Response
{
"status": "success",
"msg": "success",
"data": {
"id": "bqgbm86g10l2fm2bv7n0",
"partner_id": "bqgblveg10l2b5dhg0ig",
"name": "New Merchant",
"description": "this is a new merchant that is getting setup",
"website": "example.com",
"phone": "5555555555",
"phone_ext": "",
"receipt_email": "test@example.com",
"timezone": "UTC",
"status": "active",
"fee_schedule_id": "bqgblveg10l2b5dhg0l0",
"logo_url": "",
"primary_contact": {
"first_name": "Camille",
"last_name": "Bauch",
"company": "Schaefer, Lakin and Heathcote",
"address_line_1": "188 Turnpikefort",
"address_line_2": "",
"city": "Langoshfort",
"state": "VI",
"postal_code": "31018",
"country": "US",
"phone": "7177546366",
"phone_ext": "",
"fax": "",
"email": "test@example.com"
},
"billing_contact": {
"first_name": "Camille",
"last_name": "Bauch",
"company": "Schaefer, Lakin and Heathcote",
"address_line_1": "188 Turnpikefort",
"address_line_2": "",
"city": "Langoshfort",
"state": "VI",
"postal_code": "31018",
"country": "US",
"phone": "7177546366",
"phone_ext": "",
"fax": "",
"email": "test@example.com"
},
"billing": null,
"api_key": "api_1auidmDFdMslUz2R5PSwVFSEfmP",
"tos_accepted_by": "Test Partner / Test Partner",
"tos_accepted_by_username": "test_partner",
"created_at": "2020-04-22T21:46:08.448148Z",
"tos_last_accepted_at": "2020-04-22T21:46:08Z"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Merchant Response |
Accept Terms of Service
Code samples
# You can also use wget
curl -X POST https://sandbox.cardsync.io/api/accept-tos \
-H 'Content-Type: application/json' \
-H 'Accept: application/json; charset=utf-8' \
-H 'Authorization: API_KEY'
POST https://sandbox.cardsync.io/api/accept-tos HTTP/1.1
Host: sandbox.cardsync.io
Content-Type: application/json
Accept: application/json; charset=utf-8
const inputBody = '{
"name": "Signor Name1",
"title": "Title1",
"account_type": "merchant",
"account_type_id": "c0lbt59erttvtfnb7k0g <id from /merchant>",
"type": "cardsync",
"version": 2
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json; charset=utf-8',
'Authorization':'API_KEY'
};
fetch('https://sandbox.cardsync.io/api/accept-tos',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json; charset=utf-8',
'Authorization' => 'API_KEY'
}
result = RestClient.post 'https://sandbox.cardsync.io/api/accept-tos',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json; charset=utf-8',
'Authorization': 'API_KEY'
}
r = requests.post('https://sandbox.cardsync.io/api/accept-tos', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json; charset=utf-8',
'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://sandbox.cardsync.io/api/accept-tos', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://sandbox.cardsync.io/api/accept-tos");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json; charset=utf-8"},
"Authorization": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://sandbox.cardsync.io/api/accept-tos", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /accept-tos
During merchant creation, an enrollment_url is provided which provides the CardSync partner terms. If the Terms of Service are not marked as accepted during the merchant creation API call, the partner may call this API to mark that the merchant has accepted the Terms of Service.
Body parameter
{
"name": "Signor Name1",
"title": "Title1",
"account_type": "merchant",
"account_type_id": "c0lbt59erttvtfnb7k0g <id from /merchant>",
"type": "cardsync",
"version": 2
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Terms of Service | true | none |
Example responses
200 Response
{
"status": "success",
"msg": "success"
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Terms of Service Response |
Enrollment
Once a Merchant has been created, you can initiate the Card Brand Enrollment process using the endpoints below.
Enrollment will request some additional details around stored card data and will be used to auto fill the Card Brand required CardSync Merchant Agreement. A Merchant should only be enrolled one time.
If you have the Interim Activation feature on your partner account, the merchant account will activate immediately. If this feature is not active, it will take 5-7 business days for the Card Brands to approve the request. You may retrieve the Enrollment Status to determine if the process is complete.
Once the account is active, card batches (see next section) may be submitted immediately.
Request Enrollment
Code samples
# You can also use wget
curl -X POST https://sandbox.cardsync.io/api/cardsync/enrollment \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: API_KEY'
POST https://sandbox.cardsync.io/api/cardsync/enrollment HTTP/1.1
Host: sandbox.cardsync.io
Content-Type: application/json
Accept: application/json
const inputBody = '{
"legal_business_name": "Offical Corporate Legal Name",
"type_of_biller": "both",
"total_number_of_records": 400,
"number_of_visa": 100,
"number_of_mastercard": 100,
"number_of_discover": 100,
"number_of_amex": 100,
"delivery_frequency": "monthly",
"mcc": "5968"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'API_KEY'
};
fetch('https://sandbox.cardsync.io/api/cardsync/enrollment',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post 'https://sandbox.cardsync.io/api/cardsync/enrollment',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.post('https://sandbox.cardsync.io/api/cardsync/enrollment', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://sandbox.cardsync.io/api/cardsync/enrollment', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://sandbox.cardsync.io/api/cardsync/enrollment");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://sandbox.cardsync.io/api/cardsync/enrollment", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /cardsync/enrollment
Request Enrollment for a merchant.
In order for Partners to enroll their Merchant(s), CardSync must receive the Merchant legal entity name, Merchant Category Code (MCC), and an estimated number of of Visa, MasterCard, Discover, and American Express cards in the Merchant database.
The response to the Request Enrollment contains an "agreement_url" which can be displayed in an iframe to the user for immediate in-line signature.
Once the Card Brands have confirmed a Merchant has been approved and enrolled for Universal Account Updater (up to 5 business days), we will generate a confirmation response. Upon receiving enrollment confirmation via retrieve enrollment status, a partner my begin submitting card inquiries.
Body parameter
{
"legal_business_name": "Offical Corporate Legal Name",
"type_of_biller": "both",
"total_number_of_records": 400,
"number_of_visa": 100,
"number_of_mastercard": 100,
"number_of_discover": 100,
"number_of_amex": 100,
"delivery_frequency": "monthly",
"mcc": "5968"
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Enrollment | true | none |
Example responses
200 Response
{
"status": "success",
"msg": "success",
"data": {
"id": "bqgbm86g10l2fm2bv7n1",
"type": "cardsync",
"details": {
"legal_business_name": "Full Legal Name of Merchant",
"type_of_biller": "both",
"total_number_of_records": 400,
"number_of_visa": 100,
"number_of_mastercard": 100,
"number_of_discover": 100,
"number_of_amex": 100,
"delivery_frequency": "monthly",
"mcc": "5968"
},
"status": "active",
"created_at": "2020-04-22T21:46:08.448148Z",
"updated_at": "2020-04-22T21:46:08.448148Z",
"activated_at": null,
"deactivated_at": null
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Enrollment Response |
Retrieve Enrollment Status
Code samples
# You can also use wget
curl -X GET https://sandbox.cardsync.io/api/cardsync/enrollment \
-H 'Accept: application/json' \
-H 'Authorization: API_KEY'
GET https://sandbox.cardsync.io/api/cardsync/enrollment HTTP/1.1
Host: sandbox.cardsync.io
Accept: application/json
const headers = {
'Accept':'application/json',
'Authorization':'API_KEY'
};
fetch('https://sandbox.cardsync.io/api/cardsync/enrollment',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://sandbox.cardsync.io/api/cardsync/enrollment',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get('https://sandbox.cardsync.io/api/cardsync/enrollment', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://sandbox.cardsync.io/api/cardsync/enrollment', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://sandbox.cardsync.io/api/cardsync/enrollment");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://sandbox.cardsync.io/api/cardsync/enrollment", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /cardsync/enrollment
Returns the current status of the Merchant's requested enrollment. This will let you know when CardSync has received a completed e-sign document as well as when a Merchant has been activated so you may start submitting card inquiries on their behalf.
Example responses
200 Response
{
"status": "success",
"msg": "success",
"data": {
"id": "bqgbm86g10l2fm2bv7n1",
"type": "cardsync",
"details": {
"legal_business_name": "test merchant inc",
"type_of_biller": "both",
"total_number_of_records": 400,
"number_of_visa": 100,
"number_of_mastercard": 100,
"number_of_discover": 100,
"number_of_amex": 100,
"delivery_frequency": "monthly",
"mcc": "5968"
},
"status": "active",
"created_at": "2020-04-22T21:46:08.448148Z",
"updated_at": "2020-04-22T21:46:08.448148Z",
"activated_at": "2020-04-22T21:46:08.448148Z",
"deactivated_at": null
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Enrollment Status |
Batch
A batch is a set of up to 10,000 credit card numbers and expiration dates being submitted for updates by the respective Card Issuers. If you need to send inquiries on more than 10,000 cards at once, you may submit multiple batches simultaneously.
Best practice for recurring billing (e.g. subscriptions) is to submit on a daily or weekly basis any cards being billed in the next one to two weeks. For Merchants with payment data on file, we recommend submitting those based on your average time between transactions.
Once submitted, the Card Issuers will start to return updates. In sandbox, all results (updates and/or status responses) are completed within one hour. In production, it will take 3-5 calendar days for a batch to complete.
Create Card Batch
Code samples
# You can also use wget
curl -X POST https://sandbox.cardsync.io/api/cardsync/batch \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: API_KEY'
POST https://sandbox.cardsync.io/api/cardsync/batch HTTP/1.1
Host: sandbox.cardsync.io
Content-Type: application/json
Accept: application/json
const inputBody = '{
"cards": [
{
"id": "customer identifier",
"card": "4012000000000016",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000024",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000032",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000040",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000057",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000065",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000016",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000024",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000032",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000040",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000057",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000065",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000012",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000020",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000038",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000046",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000053",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000061",
"exp": "12/24"
}
]
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'Authorization':'API_KEY'
};
fetch('https://sandbox.cardsync.io/api/cardsync/batch',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.post 'https://sandbox.cardsync.io/api/cardsync/batch',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.post('https://sandbox.cardsync.io/api/cardsync/batch', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://sandbox.cardsync.io/api/cardsync/batch', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://sandbox.cardsync.io/api/cardsync/batch");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://sandbox.cardsync.io/api/cardsync/batch", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /cardsync/batch
This endpoint requests updates for card batches.
Test Data (Sandbox only)
You can supply any Luhn10 valid card number, but to trigger specific responses, please use the following test card numbers in the sandbox environment.
Visa Test Cards
4012000000000016 - updated_card
4012000000000024 - updated_expiry
4012000000000032 - no_match
4012000000000040 - valid
4012000000000057 - contact
4012000000000065 - contact_closed
MC Test Cards
5442980000000016 - updated_card
5442980000000024 - updated_expiry
5442980000000032 - no_match
5442980000000040 - valid
5442980000000057 - contact
5442980000000065 - contact_closed
Discover Test Cards
6011000000000012 - updated_card
6011000000000020 - updated_expiry
6011000000000038 - no_match
6011000000000046 - valid
6011000000000053 - contact
6011000000000061 - contact_closed
Body parameter
{
"cards": [
{
"id": "customer identifier",
"card": "4012000000000016",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000024",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000032",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000040",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000057",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000065",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000016",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000024",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000032",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000040",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000057",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000065",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000012",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000020",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000038",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000046",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000053",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000061",
"exp": "12/24"
}
]
}
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Card Batch | true | none |
Example responses
200 Response
{
"status": "success",
"msg": "success",
"data": {
"batch_id": "bqgbm86g10l2fm2bv7n0",
"status": "pending",
"stats": {
"number_submitted": 0,
"no_change": 0,
"updated_card": 0,
"updated_expiry": 0,
"no_match": 0,
"valid": 0,
"contact": 0,
"contact_closed": 0
},
"created_at": "2020-04-22T21:46:08.448148Z",
"updated_at": "2020-04-22T21:46:08.448148Z"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Card Batch Response |
Retrieve Batch Status
Code samples
# You can also use wget
curl -X GET https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID} \
-H 'Accept: application/json' \
-H 'Authorization: API_KEY'
GET https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID} HTTP/1.1
Host: sandbox.cardsync.io
Accept: application/json
const headers = {
'Accept':'application/json',
'Authorization':'API_KEY'
};
fetch('https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get('https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /cardsync/batch/{BATCH_ID}
Retrieve the status of a batch. Batches in the sandbox will be completed within one hour. Batches in production will take 3-5 calendar days to complete.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
BATCH_ID | path | string | true | none |
Example responses
200 Response
{
"status": "success",
"msg": "success",
"data": {
"batch_id": "bqgbm86g10l2fm2bv7n1",
"status": "completed",
"stats": {
"number_submitted": 1,
"no_change": 0,
"updated_card": 1,
"updated_expiry": 0,
"no_match": 0,
"valid": 0,
"contact": 0,
"contact_closed": 0
},
"created_at": "2020-04-22T21:46:08.448148Z",
"updated_at": "2020-04-22T21:46:08.448148Z"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Batch Status |
Response Schema
Retrieve Batch Results
Code samples
# You can also use wget
curl -X GET https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}/results \
-H 'Accept: application/json' \
-H 'Authorization: API_KEY'
GET https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}/results HTTP/1.1
Host: sandbox.cardsync.io
Accept: application/json
const headers = {
'Accept':'application/json',
'Authorization':'API_KEY'
};
fetch('https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}/results',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get 'https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}/results',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get('https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}/results', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}/results', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}/results");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://sandbox.cardsync.io/api/cardsync/batch/{BATCH_ID}/results", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /cardsync/batch/{BATCH_ID}/results
Retrieves a completed batch. Included with the batch results is the statistical breakdown of each update and/or response that was received. Results will include status updates as well as updated card information. The total number of results may be less than the number of cards submitted. Batch results will remain available for 10 calendar days after the batch completes, after which they are purged from the platform.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
BATCH_ID | path | string | true | none |
Example responses
200 Response
{
"status": "success",
"msg": "success",
"data": {
"batch_id": "bqgbm86g10l2fm2bv7n1",
"status": "completed",
"cards": [
{
"id": "aaaaaaaaaa",
"card": "4111111111111111",
"exp": "12/24",
"status": "updated_card"
}
],
"stats": {
"number_submitted": 1,
"no_change": 0,
"updated_card": 1,
"updated_expiry": 0,
"no_match": 0,
"valid": 0,
"contact": 0,
"contact_closed": 0
},
"created_at": "2020-04-22T21:46:08.448148Z",
"updated_at": "2020-04-22T21:46:08.448148Z"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Batch Results |
Schemas
Merchant
{
"name": "New Merchant <name must be unique>",
"description": "this is a new merchant that is getting set up",
"website": "example.com",
"phone": "5555555555",
"phone_ext": "1234",
"receipt_email": "test@example.com",
"timezone": "UTC",
"fee_schedule_id": "bqoa026g10l0v8o62315",
"primary_contact": {
"first_name": "Camille",
"last_name": "Bauch",
"company": "Schaefer, Lakin and Heathcote",
"address_line_1": "188 Turnpikefort",
"address_line_2": "",
"city": "Langoshfort",
"state": "VI",
"postal_code": "31018",
"country": "US",
"phone": "5555555555",
"email": "test@example.com"
},
"user": {
"username": "somerandomuser20210219c",
"email": "test@example.com",
"status": "active",
"role": "admin",
"create_api_key": true
},
"accept_tos": true
}
Merchant
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | true | must be globally unique | none |
description | string | true | none | none |
website | string | true | none | none |
phone | string | true | none | none |
phone_ext | string | true | none | none |
receipt_email | string | true | none | none |
timezone | string | true | none | none |
fee_schedule_id | string | true | none | none |
primary_contact | PrimaryContact | true | none | none |
user | User | true | none | none |
accept_tos | boolean | true | none | none |
Primary Contact
{
"first_name": "Camille",
"last_name": "Bauch",
"company": "Schaefer, Lakin and Heathcote",
"address_line_1": "188 Turnpikefort",
"address_line_2": "",
"city": "Langoshfort",
"state": "VI",
"postal_code": "31018",
"country": "US",
"phone": "5555555555",
"email": "test@example.com"
}
Primary Contact
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
first_name | string | true | none | none |
last_name | string | true | none | none |
company | string | true | none | none |
address_line_1 | string | true | none | none |
address_line_2 | string | true | none | none |
city | string | true | none | none |
state | string | true | none | none |
postal_code | string | true | none | none |
country | string | true | none | none |
phone | string | true | none | none |
string | true | none | none |
User
{
"username": "somerandomuser20210219c",
"email": "test@example.com",
"status": "active",
"role": "admin",
"create_api_key": true
}
User
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
username | string | true | none | none |
string | true | none | none | |
status | string | true | none | none |
role | string | true | none | none |
create_api_key | boolean | true | none | none |
Merchant Response
{
"id": "bqgbm86g10l2fm2bv7n0",
"partner_id": "bqgblveg10l2b5dhg0ig",
"name": "New Merchant",
"description": "this is a new merchant that is getting setup",
"website": "example.com",
"phone": "5555555555",
"phone_ext": "",
"receipt_email": "test@example.com",
"timezone": "UTC",
"status": "active",
"fee_schedule_id": "bqgblveg10l2b5dhg0l0",
"logo_url": "",
"primary_contact": {
"first_name": "Camille",
"last_name": "Bauch",
"company": "Schaefer, Lakin and Heathcote",
"address_line_1": "188 Turnpikefort",
"address_line_2": "",
"city": "Langoshfort",
"state": "VI",
"postal_code": "31018",
"country": "US",
"phone": "7177546366",
"phone_ext": "",
"fax": "",
"email": "test@example.com"
},
"billing_contact": {
"first_name": "Camille",
"last_name": "Bauch",
"company": "Schaefer, Lakin and Heathcote",
"address_line_1": "188 Turnpikefort",
"address_line_2": "",
"city": "Langoshfort",
"state": "VI",
"postal_code": "31018",
"country": "US",
"phone": "7177546366",
"phone_ext": "",
"fax": "",
"email": "test@example.com"
},
"billing": null,
"api_key": "api_1auidmDFdMslUz2R5PSwVFSEfmP",
"tos_accepted_by": "Test Partner / Test Partner",
"tos_accepted_by_username": "test_partner",
"created_at": "2020-04-22T21:46:08.448148Z",
"tos_last_accepted_at": "2020-04-22T21:46:08Z"
}
Merchant Response
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | true | none | none |
partner_id | string | true | none | none |
name | string | true | none | none |
description | string | true | none | none |
website | string | true | none | none |
phone | string | true | none | none |
phone_ext | string | true | none | none |
receipt_email | string | true | none | none |
timezone | string | true | none | none |
status | string | true | none | none |
fee_schedule_id | string | true | none | none |
logo_url | string | true | none | none |
primary_contact | Primary Contact | true | none | none |
billing_contact | Billing Contact | true | none | none |
billing | string¦null | true | none | none |
api_key | string | true | none | none |
tos_accepted_by | string | true | none | none |
tos_accepted_by_username | string | true | none | none |
created_at | string | true | none | none |
tos_last_accepted_at | string | true | none | none |
Billing Contact
{
"first_name": "Camille",
"last_name": "Bauch",
"company": "Schaefer, Lakin and Heathcote",
"address_line_1": "188 Turnpikefort",
"address_line_2": "",
"city": "Langoshfort",
"state": "VI",
"postal_code": "31018",
"country": "US",
"phone": "7177546366",
"phone_ext": "",
"fax": "",
"email": "test@example.com"
}
Billing Contact
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
first_name | string | true | none | none |
last_name | string | true | none | none |
company | string | true | none | none |
address_line_1 | string | true | none | none |
address_line_2 | string | true | none | none |
city | string | true | none | none |
state | string | true | none | none |
postal_code | string | true | none | none |
country | string | true | none | none |
phone | string | true | none | none |
phone_ext | string | true | none | none |
fax | string | true | none | none |
string | true | none | none |
Terms of Service
{
"name": "Signor Name1",
"title": "Title1",
"account_type": "merchant",
"account_type_id": "c0lbt59erttvtfnb7k0g <id from /merchant>",
"type": "cardsync",
"version": 2
}
Terms of Service
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | true | none | none |
title | string | true | none | none |
account_type | string | true | none | none |
account_type_id | string | true | none | none |
type | string | true | none | none |
version | integer(int32) | true | none | none |
Terms of Service Response
{
"status": "success",
"msg": "success"
}
Terms of Service Response
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
status | string | true | none | none |
msg | string | true | none | none |
Enrollment
{
"legal_business_name": "Offical Corporate Legal Name",
"type_of_biller": "both",
"total_number_of_records": 400,
"number_of_visa": 100,
"number_of_mastercard": 100,
"number_of_discover": 100,
"number_of_amex": 100,
"delivery_frequency": "monthly",
"mcc": "5968"
}
Enrollment
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
legal_business_name | string | true | none | none |
type_of_biller | string | true | none | none |
total_number_of_records | integer(int32) | true | none | none |
number_of_visa | integer(int32) | true | none | none |
number_of_mastercard | integer(int32) | true | none | none |
number_of_discover | integer(int32) | true | none | none |
number_of_amex | integer(int32) | true | none | none |
delivery_frequency | string | true | none | none |
mcc | string | true | none | none |
Enrollment Response
{
"legal_business_name": "Full Legal Name of Merchant",
"type_of_biller": "both",
"total_number_of_records": 400,
"number_of_visa": 100,
"number_of_mastercard": 100,
"number_of_discover": 100,
"number_of_amex": 100,
"delivery_frequency": "monthly",
"mcc": "5968"
}
Enrollment Response
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
legal_business_name | string | true | none | none |
type_of_biller | string | true | none | none |
total_number_of_records | integer(int32) | true | none | none |
number_of_visa | integer(int32) | true | none | none |
number_of_mastercard | integer(int32) | true | none | none |
number_of_discover | integer(int32) | true | none | none |
number_of_amex | integer(int32) | true | none | none |
delivery_frequency | string | true | none | none |
mcc | string | true | none | none |
Card Batch
{
"cards": [
{
"id": "customer identifier",
"card": "4012000000000016",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000024",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000032",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000040",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000057",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "4012000000000065",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000016",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000024",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000032",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000040",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000057",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "5442980000000065",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000012",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000020",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000038",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000046",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000053",
"exp": "12/24"
},
{
"id": "customer identifier",
"card": "6011000000000061",
"exp": "12/24"
}
]
}
Card Batch
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
cards | [Card] | true | none | none |
Card
{
"id": "customer identifier",
"card": "4012000000000016",
"exp": "12/24"
}
Card
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | true | none | none |
card | string | true | none | none |
exp | string | true | none | none |
Stats
{
"number_submitted": 0,
"no_change": 0,
"updated_card": 0,
"updated_expiry": 0,
"no_match": 0,
"valid": 0,
"contact": 0,
"contact_closed": 0
}
Stats
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
number_submitted | integer(int32) | true | none | none |
no_change | integer(int32) | true | none | none |
updated_card | integer(int32) | true | none | none |
updated_expiry | integer(int32) | true | none | none |
no_match | integer(int32) | true | none | none |
valid | integer(int32) | true | none | none |
contact | integer(int32) | true | none | none |
contact_closed | integer(int32) | true | none | none |
Batch Status
{
"status": "success",
"msg": "success",
"data": {
"batch_id": "bqgbm86g10l2fm2bv7n1",
"status": "completed",
"stats": {
"number_submitted": 1,
"no_change": 0,
"updated_card": 1,
"updated_expiry": 0,
"no_match": 0,
"valid": 0,
"contact": 0,
"contact_closed": 0
},
"created_at": "2020-04-22T21:46:08.448148Z",
"updated_at": "2020-04-22T21:46:08.448148Z"
}
}
Retrieve Batch Status
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
status | string | true | none | none |
msg | string | true | none | none |
data | Data | true | none | none |
Batch Status Data
{
"status": "success",
"msg": "success",
"data": {
"batch_id": "bqgbm86g10l2fm2bv7n1",
"status": "completed",
"stats": {
"number_submitted": 1,
"no_change": 0,
"updated_card": 1,
"updated_expiry": 0,
"no_match": 0,
"valid": 0,
"contact": 0,
"contact_closed": 0
},
"created_at": "2020-04-22T21:46:08.448148Z",
"updated_at": "2020-04-22T21:46:08.448148Z"
}
}
Batch Status Data
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
status | string | true | none | none |
msg | string | true | none | none |
data | Data | true | none | none |
Batch Results
{
"status": "success",
"msg": "success",
"data": {
"batch_id": "bqgbm86g10l2fm2bv7n1",
"status": "completed",
"cards": [
{
"id": "aaaaaaaaaa",
"card": "4111111111111111",
"exp": "12/24",
"status": "updated_card"
}
],
"stats": {
"number_submitted": 1,
"no_change": 0,
"updated_card": 1,
"updated_expiry": 0,
"no_match": 0,
"valid": 0,
"contact": 0,
"contact_closed": 0
},
"created_at": "2020-04-22T21:46:08.448148Z",
"updated_at": "2020-04-22T21:46:08.448148Z"
}
}
Batch Results
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
status | string | true | none | none |
msg | string | true | none | none |
data | Data | true | none | none |
stats | Stats | true | none | none |
Batch Results Data
{
"status": "success",
"msg": "success",
"data": {
"batch_id": "bqgbm86g10l2fm2bv7n1",
"status": "completed",
"cards": [
{
"id": "aaaaaaaaaa",
"card": "4111111111111111",
"exp": "12/24",
"status": "updated_card"
}
],
"stats": {
"number_submitted": 1,
"no_change": 0,
"updated_card": 1,
"updated_expiry": 0,
"no_match": 0,
"valid": 0,
"contact": 0,
"contact_closed": 0
},
"created_at": "2020-04-22T21:46:08.448148Z",
"updated_at": "2020-04-22T21:46:08.448148Z"
}
}
Batch Results Data
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
batch_id | string | true | none | none |
status | string | true | none | none |
cards | [Card] | true | none | none |
stats | [Stats] | true | none | none |
created_at | string | true | none | none |
updated_at | string | true | none | none |