You must obtain a Checkeeper auth token first to begin using the Checkeeper check fulfillment API. With this, you can create new check fulfillment orders, as well as request the status of fulfillment orders. Please contact [email protected] with questions or for more information on getting a partner API token.
NOTICE: By accessing or using the Checkeeper API you agree to the Checkeeper API Terms of Service
{ "token" : "xxxxxx", "test" : "1", "date" : "2020-06-14", "check_number" : "5004", "amount" : "5,230.00", "memo" : "Widget supply order", "bank_routing": "012345678", "bank_account": "9320122", "payer": { "name": "Widgets Inc.", "address": { "line1": "827 Random Street", "line2": "Suite 102" }, "city": "Anytown", "state": "NY", "zip": "14850", "signer": "John Hancock" }, "payee": { "name": "Bob's Supplies", "address": { "line1": "114 Project Lane" }, "city": "Tinkertown", "state": "CA", "zip": "90210", "country": "US" } "signature": "6849f1fce30ff713773ae31ef8263091a152ecb07bb5eb9a42fddf90aefaf2ac" }
The most basic and minimal example of creating a new check to be mailed. Assume all fields are required unless otherwise stated.
token: | required
We provide you with this once you register. |
test: | optional boolean
Default 0 (we assume you're ready to print checks!) Set 1 credits will not be used and checks will not be mail. PDFs will be returned voided. |
memo: |
optional
Prints on the check, string truncated to 73 characters. |
date: | optional
Format should be YYYY-MM-DD. If no date is provided, the date of the request will be used. |
payer: | required
The business or person writing the check. All fields except address line2 are required. |
signer: | optional
The name of the person signing for the check. A handwriting font is used to generate the look of a pen signature. Replace signer with signer_image to include a base64 encoded image of your signature. |
payee: | required
The business or person receiving the check. Just like payer, all fields are required except for address line 2. Country codes should be their two-letter USPS codes (US = Unites States, CA = Canada, GB = United Kingdom, etc) |
signature: | required
Not to be confused with signer. This is a SHA256 hash of the whole request with your secret key on the end. |
Include these with the basic check call for additional functionality.
{
"payer" : {
…
logo : base64 string
}
}
logo: | optional
Include a pretty little logo in the top left corner of your check (next to the payer name/address). This will also show through the envelope window for the return address. Logo should be square, 300dpi sized to 2 inch x 2 inch. Sending the same logo in every call? Contact us to store the logo on our end rather than passing it every time. |
{ … "return_pdf" : "1", "positive_pay" : "Positive Pay Protected" "template" : "cityscape" }
return_pdf: | optional boolean
instead of Checkeeper printing and mailing the check for you, an encoded PDF of a formatted check will be returned and the check will NOT be mailed. |
positive_pay: | optional string
Any text passed here will display directly under the bank fractal on the check only. Note: not every template supports this functionality. It's a great way add "Positive Pay Protected" to print on your checks. |
template: | optional
Specify the style of check that is returned in the PDF. Contact us for a list of available styles or to have a custom template created just for your business. |
{ … "mail_method" : "next_day", "mail_address" : { "name" : "Karen in Accounting", "line1" : "101 North Main Street", "line2" : "Suite 308", "city" : "Greenville" "state" : "SC", "zip" : "29601" } }
mail_method: | optional
Select to have a check mailed USPS First Class or UPS Next Day. Methods can be first_class (default), priority (USPS Priority) or next_day (UPS Overnight) A successfully created check with priority or next_day will return a tracking URL and tracking number. |
mail_address: | optional
Specific address to mail the check to if different than the payee address. Karen in Accounting couldn't be happier with this option! |
{
…
"attachment" : base64 string
}
attachment: | optional
Include additional pages to be printed with your check! This must be a base64 encoded PDF no larger than 6 total pages and 1.5mb file size. Be sure to flatten all PDFs before sending. Each page is 0.50 credits. |
{ … "invoice_table" : { "headings" : [ "Invoice", "Date", "Amount" ], "rows" : [ [ "30093", "2020-06-14", "$75.00" ], [ "30096", "2020-05-14", "$75.00" ], [ " ", " ", "$150.00" ] ] } }
invoice_table: | optional
Want to list details of the payment being made? This option is for you. We call it an invoice table, but you can rename the headings to be whatever you want and we'll put a beautiful looking table with the details on the stub of your check. Try to limit the headings to no more than 6. |
Invoice | Date | Amount |
---|---|---|
30093 | 2020-06-14 | $75.00 |
30096 | 2020-05-14 | $75.00 |
$150.00 |
{ "token": "xxxxxx", "check_id": "sCOrlJiwfAjokyfjtBGu", "signature": "561fec456b70b2ae8addb00cd043a9e2c4396195aa3251f3a416fda8b4853967" }
check_id: | required
Returns the status of a check you've created with the API. Pending, Printed, Mailed, Canceled are all possible responses. |
{ "token": "xxxxxx", "check_id": "sCOrlJiwfAjokyfjtBGu", "signature": "561fec456b70b2ae8addb00cd043a9e2c4396195aa3251f3a416fda8b4853967" }
check_id: | required
If a check does not have the status of mailed yet, you can request we cancel it and not mail or print it. |
{ "token": "xxxxxx", "check_id": "{check_id}", "signature": "{request_signature}" }
Returns a base64 encoded image of the check that was created.
token: | required
We provide you with this once you register. |
check_id: | required
The check id that was returned during your create check call.. |
signature: | required
Not to be confused with signer. This is a SHA256 hash of the whole request with your secret key on the end. |
{ "token": "xxxxxx", "start_date": "2021-02-26 08:00:00", "end_date": "2021-02-28 21:15:00", "signature": "561fec456b70b2ae8addb00cd043a9e2c4396195aa3251f3a416fda8b4853967" }
Get a list of all the checks you've sent us between a date range. This is not a paginated request. Based on your throughput, you may need to use a smaller date range. All times are in US Eastern time zone (UTC -5 or UTC -4)
start_date: | required
Format: YYYY-MM-DD HH:mm:ss This is the start date and time. |
end_date: | required
Format: YYYY-MM-DD HH:mm:ss This is the end date and time. |
{ "token": "xxxxxx", "signature": "561fec456b70b2ae8addb00cd043a9e2c4396195aa3251f3a416fda8b4853967" }
Simple end-point that will return the details of your account, specifically, how many credits you have remaining.
<?php $json_string = '{ "token":"xxxxxx", "routing_number":"011100915", "country":"US" … "test":"1" }'; // convert the JSON into an array for easy sorting $request_array = json_decode($json_string, true); // sort the array based on the keys ksort($request_array); // build out the url encoded query string $query_string = http_build_query($request_array); // create the HMAC hash of the sorted query string $raw_signature = hash_hmac( 'sha256', $query_string, [YOUR SECRET KEY], TRUE ); // encode the raw signature into base64 $signature = base64_encode($raw_signature); // add the signature back to the array $request_array['signature'] = $signature; // convert request back to JSON for sending $json_payload = json_encode($request_array);
Each request you make must be signed by an SHA256 HMAC hash. Here's an example of creating it.
Sort your request based on the keys, lexicographically. Capital letters come before lower-case ones. Sort all levels of the request. For example, you need to sort the main level, the payee, the payer, and the address levels of the Create Check.
Convert your request to a URL-encoded string. All keys with blank/null values must be removed. All non-numeric characters except "-" (dash), "_" (underscore), and "." (period) need to be replaced with a % (percent sign) followed by the two character's two-digit hex digits. Spaces should be encoded as "+" (plus signs) See RFC 3986 for encoding, but note that spaces are to be encoded as "+" and NOT "%20".
Create a signature by making an HMAC-SHA256 (hash-based message authentication code) hash using your API Secret Key.
Include your newly created signature with the JSON payload in the root.
Though not vetted by Checkeeper, there are 3rd party API wrappers that can be found by searching github.