Introduction
Welcome to the SurePay API! You can use our SurePay API to access SurePay API endpoints.
You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
Accounts with Token
Token
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Account
{
public static void Token()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/token");
var postData = "grant_type=password";
postData += "&username=sysadmin";
postData += "&password=123456";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"access_token": "eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6EBqB7RFjVMuhmuPNWcYM7ozyMb3uaDe0gyDL_nMPESbuM5I4skBOYcUM4A06NO88CVV3yBYee7mWB1qT-YFu5A3KZJSfRIbTX9GZdrZpi-JuWsx-7GE9GIYrNJ29BpaQscTwxYDr67WiFlCCrsCqWnCPJUjCFRIrTDltz8vM15mlgjiO0y04ZACGOWNNErIVegX062oydV7SqumGJEbS9Av4gdy",
"token_type": "bearer",
"expires_in": 863999
}
This endpoint creates a sysadmin token.
HTTP Request
POST https://sandbox.surepay.co/api/v1/token
Headers
Key | Value |
---|---|
Content-Type | application/x-www-form-urlencoded |
Body
Parameter | Type | M/C/O | Value |
---|---|---|---|
grant_type | string | Mandatory | password. |
username | string | Mandatory | Username of the sysadmin. |
password | string | Mandatory | Password of the sysadmin. |
Response
- 200 code (ok).
Register user
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Account
{
public static void RegisterUser()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/accounts/register");
request.ContentType = "text/json";
request.Method = "POST";
var user = new
{
Username = "JohnDoe",
Password = "123456",
ConfirmPassword = "123456",
IsoNumber = "1000",
FirstName = "John",
LastName = "Doe",
Email = "johndoe@mailinator.com",
Phone = "9177563046",
Address1 = "151 E 33rd ST",
Address2 = "Second Floor",
City = "Dallas",
State = "TX",
Zipcode = "76092"
};
string json = JsonConvert.SerializeObject(user);
request.Headers.Add("Authorization", "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6EBqB7RFjVMuhmuPNWcYM7ozyMb3uaDe0gyDL_nMPESbuM5I4skBOYcUM4A06NO88CVV3yBYee7mWB1qT-YFu5A3KZJSfRIbTX9GZdrZpi-JuWsx-7GE9GIYrNJ29BpaQscTwxYDr67WiFlCCrsCqWnCPJUjCFRIrTDltz8vM15mlgjiO0y04ZACGOWNNErIVegX062oydV7SqumGJEbS9Av4gdy");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"Username": "JohnDoe",
"Password": "123456",
"ConfirmPassword": "123456",
"IsoNumber": "5000",
"FirstName": "John",
"LastName": "Doe",
"Email": "johndoe@mailinator.com",
"Phone": "9177563046",
"Address1": "151 E 33rd ST",
"Address2": "Second Floor",
"City": "Dallas",
"State": "TX",
"Zipcode": "76092"
}
Json Example Response:
{
"id": "QyDhkzJXRRW8ydteUtCgGA",
"userName": "JohnDoe",
"isoNumber": 1000,
"firstName": "John",
"lastName": "Doe",
"email": "johndoe@mailinator.com",
"phone": "9177563046",
"status": "User - Active",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "Dallas",
"state": "TX",
"zipcode": "76092",
"accountNumber": "18746957"
}
This endpoint registers a user.
HTTP Request
POST https://sandbox.surepay.co/api/v1/accounts/register
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
Username | string | Mandatory | Selected username. |
Password | string | Mandatory | Selected password. |
ConfirmPassword | string | Mandatory | Selected password. |
IsoNumber | integer | Mandatory | Iso number. |
FirstName | string | Mandatory | User’s first name. |
LastName | string | Mandatory | User’s last name. |
string | Mandatory | User’s valid email address | |
Phone | integer | Mandatory | User’s phone number. The phone number must be syntactically correct. For example, 4152345678. |
Address1 | string | Mandatory | User’s address. |
Address2 | string | Optional | User’s address line 2. |
City | string | Mandatory | User’s city. |
State | string | Mandatory | User’s short name state. The ISO 3166-2 CA and US state or province code of a user. Length = 2. |
Zipcode | integer | Mandatory | User’s zipcode. Length = 5. |
Response
- 201 code (created).
Change user password
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Account
{
public static void ChangeUserPassword()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/accounts/ChangePassword");
request.ContentType = "text/json";
request.Method = "POST";
var user = new
{
Username = "JohnDoe",
OldPassword = "123456",
NewPassword = "qwerty",
ConfirmPassword = "qwerty"
};
string json = JsonConvert.SerializeObject(user);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"Username": "JohnDoe",
"OldPassword": "123456",
"NewPassword": "qwerty",
"ConfirmPassword": "qwerty"
}
Json Example Response:
{
"message": "Success"
}
This endpoint changes user's password.
HTTP Request
POST https://sandbox.surepay.co/api/v1/accounts/ChangePassword
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
Username | string | Mandatory | User’s username. |
OldPassword | string | Mandatory | User’s old password. |
NewPassword | string | Mandatory | User’s new password. |
ConfirmPassword | string | Mandatory | User’s new password. |
Response
- 200 code (ok).
Reset user password request
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Account
{
public static void ResetUserPasswordRequest()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/accounts/ResetPasswordRequest");
request.ContentType = "text/json";
request.Method = "POST";
var user = new
{
UserName = "JohnDoe"
};
string json = JsonConvert.SerializeObject(user);
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"UserName": "JohnDoe"
}
Json Example Response:
{
"message": "Success. Email sent."
}
This endpoint generates user's password change request.
HTTP Request
POST https://sandbox.surepay.co/api/v1/accounts/ResetPasswordRequest
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
Username | string | Mandatory | User’s username. |
Response
- 200 code (ok).
Reset user password
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Account
{
public static void ResetUserPassword()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/accounts/ResetPassword");
request.ContentType = "text/json";
request.Method = "POST";
var user = new
{
Key = "3a89ad7b706f418291423159b9ab95d0ecd384bcfe814acca35dc759aa22ea0f",
NewPassword = "abcdef",
ConfirmPassword = "abcdef"
};
string json = JsonConvert.SerializeObject(user);
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"Key": "db92b207a57a48989924788199fbc104e3034780e4904df49d857320bce0e7de",
"NewPassword": "123457",
"ConfirmPassword": "123457"
}
Json Example Response:
{
"message": "Success. Password changed."
}
This endpoint resets user's password.
HTTP Request
POST https://sandbox.surepay.co/api/v1/accounts/ResetPassword
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
Key | string | Mandatory | Key sent to user email. |
NewPassword | string | Mandatory | User’s new password. |
ConfirmPassword | string | Mandatory | User’s new password. |
Response
- 200 code (ok).
Accounts with API Key
API Key
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Accounts
{
public static void AuthorizationToken()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/accounts/authorizationToken");
request.ContentType = "text/json";
request.Method = "POST";
var accounts = new
{
UserName = "MaxSmart",
Password = "12345678Aa"
};
string json = JsonConvert.SerializeObject(accounts);
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"UserName":"MaxSmart",
"Password":"12345678Aa"
}
Json Example Response:
{
"message": "Authorization token: e516b6db-3230-4b1c-ae3f-e5379b774a80"
}
This endpoint creates a API Key.
HTTP Request
POST https://sandbox.surepay.co/api/v1/accounts/authorizationToken
Headers
Key | Value |
---|---|
Content-Type | "application/json" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
UserName | string | Mandatory | UserName. |
Password | string | Mandatory | Password. |
Response
- 200 code (ok).
Users
Update user
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class User
{
public static void UpdateUser()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/users/f3db1e2c-df7f-4cbe-b0cf-25f74d17b501");
request.ContentType = "text/json";
request.Method = "PUT";
var user = new
{
FirstName = "John",
LastName = "Doe",
Email = "johndoe@mailinator.com",
Phone = "9177563666",
Address1 = "151 E 33rd ST",
Address2 = "Second Floor",
City = "Dallas",
State = "TX",
Zipcode = "76092"
};
string json = JsonConvert.SerializeObject(user);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"FirstName": "John",
"LastName": "Doe",
"Email": "johndoe@mailinator.com",
"Phone": "9177563666",
"Address1": "151 E 33rd ST",
"Address2": "Second Floor",
"City": "Dallas",
"State": "TX",
"Zipcode": "76092"
}
Json Example Response:
{
"guid": "f3db1e2c-df7f-4cbe-b0cf-25f74d17b501",
"userName": "JohnDoe",
"isoNumber": 1000,
"firstName": "John",
"lastName": "Doe",
"email": "johndoe@mailinator.com",
"phone": "9177563666",
"status": "User - Active",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "Dallas",
"state": "TX",
"zipcode": "76092",
"accountNumber": "10000000",
"roles": [
{
"name": "Iso Admin"
},
{
"name": "Iso Employee"
},
{
"name": "Merchant Admin"
}
]
}
This endpoint updates a user.
HTTP Request
PUT https://sandbox.surepay.co/api/v1/users/<guid>
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | User’s guid to update |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
FirstName | string | Optional | User’s first name. |
LastName | string | Optional | User’s last name. |
string | Optional | User’s valid email address | |
Phone | integer | Optional | User’s phone number. The phone number must be syntactically correct. For example, 4152345678. |
Address1 | string | Optional | User’s address. |
Address2 | string | Optional | User’s address line 2. |
City | string | Optional | User’s city. |
State | string | Optional | User’s short name state. The ISO 3166-2 CA and US state or province code of a user. Length = 2. |
Zipcode | integer | Optional | User’s zipcode. Length = 5. |
Response
- 200 code (ok).
Get myself
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class User
{
public static void GetMySelf()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/users/myself");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "961612a5-427b-4bbc-8a11-bfc1b9149243",
"userName": "maxwinston",
"isoNumber": "1000",
"firstName": "Max",
"lastName": "Winston",
"email": "maxwinston@mailinator.com",
"phone": "9177563046",
"status": "User - Active",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "NY",
"zipcode": "10016",
"accountNumber": "17091897",
"roles": [
{
"name": "Iso Admin"
},
{
"name": "Iso Employee"
},
{
"name": "Merchant Admin"
}
]
}
This endpoint get myself.
HTTP Request
GET https://sandbox.surepay.co/api/v1/users/myself
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Response
- 200 code (ok).
Bank Clearing
Create bank clearing
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class BankClearing
{
public static void CreateBankClearing()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/BankClearings");
request.ContentType = "text/json";
request.Method = "POST";
var bankClearing = new
{
DeviceGuid = "4fdd9d2c-cda5-4e0f-b6d6-fed65393592a",
Amount = "15.42",
IsBusinessPayment = "true",
SendReceipt = "true",
CustomData = "order details",
CustomerLabel = "Patient",
CustomerId = "xt147",
BusinessName = "Star Shoes California",
BankAccount = new
{
RoutingNumber = "490000018",
AccountNumber = "441142020",
NameOnAccount = "Joe Black",
Customer = new
{
FirstName = "Joe",
LastName = "Black",
Phone = "4207888807",
City = "Austin",
State = "TX",
Country = "US",
Email = "jblack@mailinator.com",
Address1 = "107 7th Av.",
Address2 = "",
Zip = "10007",
DateOfBirth = "1987-07-07",
DriverLicenseNumber = "12345678",
DriverLicenseState = "TX",
SSN4 = "1210"
}
}
};
string json = JsonConvert.SerializeObject(bankClearing);
request.Headers.Add("Authorization", "Bearer DkpQk2A3K4Lwq6aFzbmkApOZWN28EowdVscW_sxY8_RTFt12xhnIa79bUmA12INI0YqKHwbMU5O5gMU_51E6wllvacKx68-mJ7F6GWnUkR2vFKaA-tdOJEqh0GD_61MGWWlXr9sxRNyH6ZzWqUS0-QdhcPLyFzJL-odqZ46I-Aouf3ixienzOnrL0m-zbExPAOnT58prg2dhB-rfIPBoF25rdokQ1KH4NFujgeF99qwIpObHeQQ25Qok7aJh5Spk");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "4fdd9d2c-cda5-4e0f-b6d6-fed65393592a",
"Amount" : 15.42,
"IsBusinessPayment" : true,
"SendReceipt" : "true",
"CustomData" : "order details",
"CustomerLabel" : "Patient",
"CustomerId" : "xt147",
"BusinessName" : "Star Shoes California",
"BankAccount":
{
"RoutingNumber" : "490000018",
"AccountNumber" : "441142020",
"NameOnAccount" : "Joe Black",
"Customer":
{
"FirstName" : "Joe",
"LastName" : "Black",
"Phone" : "4207888807",
"City" : "Austin",
"State" : "TX",
"Country" : "US",
"Email" : "jblack@mailinator.com",
"Address1" : "107 7th Av.",
"Address2" : "",
"Zip" : "10007",
"DateOfBirth" : "1987-07-07",
"DriverLicenseNumber" : "12345678",
"DriverLicenseState" : "TX",
"SSN4" : "1210"
}
}
}
Json Example Response:
{
"guid": "f3221d3c-0cb4-43be-89bc-2b5aee58b671",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:42:39.53",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"amount": 15.42,
"effectiveAmount": 15.42,
"isBusinessPayment": false,
"customData": "order details",
"operationType": "Sale",
"settlementType": "ACH",
"customerLabel": "Patient",
"businessName": "Star Shoes California",
"customerID": "xt147",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | APPROVAL | AUTH NUM 272-172 | [(4096): Internal Override] | [(0): ] | T:2315",
"wasProcessed": true,
"bankAccount": {
"guid": "4506e746-b661-47f8-b70c-a2c85d28be96",
"routingNumber": "490000018",
"accountNumber": "441142020",
"accountNumberLastFour": "2020",
"nameOnAccount": "Joe Black",
"customer": {
"guid": "615e6b8c-18c9-4a7d-b0ca-aa6b4bec9692",
"firstName": "Joe",
"lastName": "Black",
"phone": "4207888807",
"city": "Austin",
"country": "US",
"email": "jblack@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "TX",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
This endpoint creates a bank clearing.
HTTP Request
POST https://sandbox.surepay.co/api/v1/BankClearings
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device Guid. |
Amount | decimal | Mandatory | Amount of the transaction. Min. amt.: $0.50 |
SequenceNumber | string | Optional | Use this number to call timeout reversal endpoint if you don't get a response. |
IsBusinessPayment | boolean | Optional | True when using company (CCD), false when using individual (PPD). Allowed values: 1. true 2. false |
SendReceipt | boolean | Optional | Set to “FALSE” if you do not want an e-mail receipt to be sent to the customer. Set to “TRUE” or leave empty if you want e-mail to be sent. |
CustomData | string | Optional | order details. |
CustomerLabel | string | Optional | Any name you want to show instead of customer. Eg., Player, Patient, Buyer. |
CustomerID | string | Optional | Any combination of numbers and letters you use to identify the customer. |
BusinessName | string | Optional | A merchant name you want to use instead of your DBA. |
BankAccount | object | Mandatory | See BankAccount. |
Response
- 201 code (created).
Get bank clearing
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class BankClearing
{
public static void GetBankClearing()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/BankClearings/f3221d3c-0cb4-43be-89bc-2b5aee58b671");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer DkpQk2A3K4Lwq6aFzbmkApOZWN28EowdVscW_sxY8_RTFt12xhnIa79bUmA12INI0YqKHwbMU5O5gMU_51E6wllvacKx68-mJ7F6GWnUkR2vFKaA-tdOJEqh0GD_61MGWWlXr9sxRNyH6ZzWqUS0-QdhcPLyFzJL-odqZ46I-Aouf3ixienzOnrL0m-zbExPAOnT58prg2dhB-rfIPBoF25rdokQ1KH4NFujgeF99qwIpObHeQQ25Qok7aJh5Spk");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "f3221d3c-0cb4-43be-89bc-2b5aee58b671",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:42:39.53",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"amount": 15.42,
"effectiveAmount": 15.42,
"isBusinessPayment": false,
"customData": "order details",
"operationType": "Sale",
"settlementType": "ACH",
"customerLabel": "Patient",
"businessName": "Star Shoes California",
"customerID": "xt147",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | APPROVAL | AUTH NUM 272-172 | [(4096): Internal Override] | [(0): ] | T:2315",
"processorTransactionStatus": "Approved",
"processorSettlementStatus": "To Be Originated",
"wasProcessed": true,
"bankAccount": {
"guid": "4506e746-b661-47f8-b70c-a2c85d28be96",
"routingNumber": "490000018",
"accountNumber": "441142020",
"accountNumberLastFour": "2020",
"nameOnAccount": "Joe Black",
"customer": {
"guid": "615e6b8c-18c9-4a7d-b0ca-aa6b4bec9692",
"firstName": "Joe",
"lastName": "Black",
"phone": "4207888807",
"city": "Austin",
"country": "US",
"email": "jblack@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "TX",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
This endpoint gets a bank clearing.
HTTP Request
GET https://sandbox.surepay.co/api/v1/BankClearings/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Bank clearing’s guid to get |
Response
- 200 code (ok).
Timeout Reversal
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class BankClearing
{
public static void TimeoutReversal()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/bankclearings/timeoutreversal");
request.ContentType = "text/json";
request.Method = "POST";
var bankClearing = new
{
DeviceGuid = "b29725af-b067-4a35-9819-bbb31bdf8808",
SequenceNumber = "849741"
};
string json = JsonConvert.SerializeObject(bankClearing);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid": "b29725af-b067-4a35-9819-bbb31bdf8808",
"SequenceNumber": "849741"
}
Json Example Response:
"Device Guid and Sequence Number combination found and voided."
This a feature that allows a user to void a transaction if it never got a response. You must send the device guid of the terminal used to run the transaction and the sequence number. If there was a sale run on that device with that sequence and it was approved, it will be voided. Otherwise you will be informed that a sale was found but it had not been approved or that there was no sale at all with that combination of device guid and sequence number.
HTTP Request
POST https://sandbox.surepay.co/api/v1/bankclearings/timeoutreversal
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device's Guid. |
SequenceNumber | string | Mandatory | Sequence Number. |
Response
- 201 code (created).
Bank Clearing Void
Create bank clearing void
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class BankClearingVoid
{
public static void CreateBankClearingVoid()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/BankClearingVoids");
request.ContentType = "text/json";
request.Method = "POST";
var bankClearingVoid = new
{
DeviceGuid = "386ac1e6-250d-4866-b283-248c1e9340ef",
ClearingGuid = "f3221d3c-0cb4-43be-89bc-2b5aee58b671"
};
string json = JsonConvert.SerializeObject(bankClearingVoid);
request.Headers.Add("Authorization", "Bearer DkpQk2A3K4Lwq6aFzbmkApOZWN28EowdVscW_sxY8_RTFt12xhnIa79bUmA12INI0YqKHwbMU5O5gMU_51E6wllvacKx68-mJ7F6GWnUkR2vFKaA-tdOJEqh0GD_61MGWWlXr9sxRNyH6ZzWqUS0-QdhcPLyFzJL-odqZ46I-Aouf3ixienzOnrL0m-zbExPAOnT58prg2dhB-rfIPBoF25rdokQ1KH4NFujgeF99qwIpObHeQQ25Qok7aJh5Spk");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "386ac1e6-250d-4866-b283-248c1e9340ef",
"ClearingGuid" : "f3221d3c-0cb4-43be-89bc-2b5aee58b671"
}
Json Example Response:
{
"guid": "48ea2c28-fa67-404a-88f7-2d73801f4926",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:48:35.46",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"clearingGuid": "f3221d3c-0cb4-43be-89bc-2b5aee58b671",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | VOID ACCEPTED | VOID ACCEPTED | [(5120): Voided Check | Internal Override] | [(0): ] | T:2315",
"wasProcessed": true,
"relatedClearing": {
"guid": "f3221d3c-0cb4-43be-89bc-2b5aee58b671",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:42:39.53",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"amount": 15.42,
"effectiveAmount": 0,
"isBusinessPayment": false,
"customData": "order details",
"operationType": "Sale",
"settlementType": "ACH",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | APPROVAL | AUTH NUM 272-172 | [(4096): Internal Override] | [(0): ] | T:2315",
"wasProcessed": true,
"bankAccount": {
"guid": "4506e746-b661-47f8-b70c-a2c85d28be96",
"routingNumber": "490000018",
"accountNumber": "441142020",
"accountNumberLastFour": "2020",
"nameOnAccount": "Joe Black",
"customer": {
"guid": "615e6b8c-18c9-4a7d-b0ca-aa6b4bec9692",
"firstName": "Joe",
"lastName": "Black",
"phone": "4207888807",
"city": "Austin",
"country": "US",
"email": "jblack@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "TX",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
}
This endpoint creates a bank clearing void.
HTTP Request
POST https://sandbox.surepay.co/api/v1/BankClearingVoids
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device Guid. |
ClearingGuid | string | Mandatory | Clearing Guid. |
Response
- 201 code (created).
Get bank clearing void
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class BankClearingVoid
{
public static void GetBankClearingVoid()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/BankClearingVoids/48ea2c28-fa67-404a-88f7-2d73801f4926");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer DkpQk2A3K4Lwq6aFzbmkApOZWN28EowdVscW_sxY8_RTFt12xhnIa79bUmA12INI0YqKHwbMU5O5gMU_51E6wllvacKx68-mJ7F6GWnUkR2vFKaA-tdOJEqh0GD_61MGWWlXr9sxRNyH6ZzWqUS0-QdhcPLyFzJL-odqZ46I-Aouf3ixienzOnrL0m-zbExPAOnT58prg2dhB-rfIPBoF25rdokQ1KH4NFujgeF99qwIpObHeQQ25Qok7aJh5Spk");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "48ea2c28-fa67-404a-88f7-2d73801f4926",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:48:35.46",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"clearingGuid": "f3221d3c-0cb4-43be-89bc-2b5aee58b671",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | VOID ACCEPTED | VOID ACCEPTED | [(5120): Voided Check | Internal Override] | [(0): ] | T:2315",
"wasProcessed": true,
"relatedClearing": {
"guid": "f3221d3c-0cb4-43be-89bc-2b5aee58b671",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:42:39.53",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"amount": 15.42,
"effectiveAmount": 0,
"isBusinessPayment": false,
"customData": "order details",
"operationType": "Sale",
"settlementType": "ACH",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | APPROVAL | AUTH NUM 272-172 | [(4096): Internal Override] | [(0): ] | T:2315",
"wasProcessed": true,
"bankAccount": {
"guid": "4506e746-b661-47f8-b70c-a2c85d28be96",
"routingNumber": "490000018",
"accountNumber": "441142020",
"accountNumberLastFour": "2020",
"nameOnAccount": "Joe Black",
"customer": {
"guid": "615e6b8c-18c9-4a7d-b0ca-aa6b4bec9692",
"firstName": "Joe",
"lastName": "Black",
"phone": "4207888807",
"city": "Austin",
"country": "US",
"email": "jblack@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "TX",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
}
This endpoint gets a bank clearing void.
HTTP Request
GET https://sandbox.surepay.co/api/v1/BankClearingVoids/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Bank clearing void’s guid to get |
Response
- 200 code (ok).
Bank Clearing Return
Create bank clearing return
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class BankClearingReturn
{
public static void CreateBankClearingReturn()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/BankClearingReturns");
request.ContentType = "text/json";
request.Method = "POST";
var bankClearingReturn = new
{
DeviceGuid = "386ac1e6-250d-4866-b283-248c1e9340ef",
ClearingGuid = "43d3f532-3c53-4b2c-aa25-0a0048b1e47e"
};
string json = JsonConvert.SerializeObject(bankClearingReturn);
request.Headers.Add("Authorization", "Bearer DkpQk2A3K4Lwq6aFzbmkApOZWN28EowdVscW_sxY8_RTFt12xhnIa79bUmA12INI0YqKHwbMU5O5gMU_51E6wllvacKx68-mJ7F6GWnUkR2vFKaA-tdOJEqh0GD_61MGWWlXr9sxRNyH6ZzWqUS0-QdhcPLyFzJL-odqZ46I-Aouf3ixienzOnrL0m-zbExPAOnT58prg2dhB-rfIPBoF25rdokQ1KH4NFujgeF99qwIpObHeQQ25Qok7aJh5Spk");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "386ac1e6-250d-4866-b283-248c1e9340ef",
"ClearingGuid" : "43d3f532-3c53-4b2c-aa25-0a0048b1e47e"
}
Json Example Response:
{
"guid": "122fb6b6-dd34-489a-875c-8ec61e8aa1ec",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:55:02.01",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"clearingGuid": "43d3f532-3c53-4b2c-aa25-0a0048b1e47e",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | REVERSAL ACCEPTED | REVERSAL ACCEPTED | [(5120): Voided Check | Internal Override] | [(0): ] | T:2315",
"wasProcessed": true,
"relatedClearing": {
"guid": "43d3f532-3c53-4b2c-aa25-0a0048b1e47e",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:53:43.83",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"amount": 15.42,
"effectiveAmount": 0,
"isBusinessPayment": false,
"customData": "order details",
"operationType": "Sale",
"settlementType": "ACH",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | APPROVAL | AUTH NUM 272-172 | [(4096): Internal Override] | [(0): ] | T:2315",
"wasProcessed": true,
"bankAccount": {
"guid": "4506e746-b661-47f8-b70c-a2c85d28be96",
"routingNumber": "490000018",
"accountNumber": "441142020",
"accountNumberLastFour": "2020",
"nameOnAccount": "Joe Black",
"customer": {
"guid": "615e6b8c-18c9-4a7d-b0ca-aa6b4bec9692",
"firstName": "Joe",
"lastName": "Black",
"phone": "4207888807",
"city": "Austin",
"country": "US",
"email": "jblack@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "TX",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
}
This endpoint creates a bank clearing return.
HTTP Request
POST https://sandbox.surepay.co/api/v1/BankClearingReturns
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device Guid. |
ClearingGuid | string | Mandatory | Clearing Guid. |
Response
- 201 code (created).
Get bank clearing return
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class BankClearingReturn
{
public static void GetBankClearingReturn()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/BankClearingReturns/122fb6b6-dd34-489a-875c-8ec61e8aa1ec");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer DkpQk2A3K4Lwq6aFzbmkApOZWN28EowdVscW_sxY8_RTFt12xhnIa79bUmA12INI0YqKHwbMU5O5gMU_51E6wllvacKx68-mJ7F6GWnUkR2vFKaA-tdOJEqh0GD_61MGWWlXr9sxRNyH6ZzWqUS0-QdhcPLyFzJL-odqZ46I-Aouf3ixienzOnrL0m-zbExPAOnT58prg2dhB-rfIPBoF25rdokQ1KH4NFujgeF99qwIpObHeQQ25Qok7aJh5Spk");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "122fb6b6-dd34-489a-875c-8ec61e8aa1ec",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:55:02.01",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"clearingGuid": "43d3f532-3c53-4b2c-aa25-0a0048b1e47e",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | REVERSAL ACCEPTED | REVERSAL ACCEPTED | [(5120): Voided Check | Internal Override] | [(0): ] | T:2315",
"wasProcessed": true,
"relatedClearing": {
"guid": "43d3f532-3c53-4b2c-aa25-0a0048b1e47e",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:53:43.83",
"deviceGuid": "386ac1e6-250d-4866-b283-248c1e9340ef",
"amount": 15.42,
"effectiveAmount": 0,
"isBusinessPayment": false,
"customData": "order details",
"operationType": "Sale",
"settlementType": "ACH",
"processorStatusCode": "A",
"processorResponseMessage": "APPROVED | APPROVAL | AUTH NUM 272-172 | [(4096): Internal Override] | [(0): ] | T:2315",
"wasProcessed": true,
"bankAccount": {
"guid": "4506e746-b661-47f8-b70c-a2c85d28be96",
"routingNumber": "490000018",
"accountNumber": "441142020",
"accountNumberLastFour": "2020",
"nameOnAccount": "Joe Black",
"customer": {
"guid": "615e6b8c-18c9-4a7d-b0ca-aa6b4bec9692",
"firstName": "Joe",
"lastName": "Black",
"phone": "4207888807",
"city": "Austin",
"country": "US",
"email": "jblack@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "TX",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
}
This endpoint gets a bank clearing return.
HTTP Request
GET https://sandbox.surepay.co/api/v1/BankClearingReturns/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Bank clearing return’s guid to get |
Response
- 200 code (ok).
Sale
Create sale
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Sale
{
public static void CreateSale()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/sales");
request.ContentType = "text/json";
request.Method = "POST";
var sale = new
{
DeviceGuid = "fde63679-0c47-4a9c-9b47-82cdf1929851",
Amount = "19.74",
TipAmount = "0.74",
OrderNumber = "11518",
OrderDate = "2017-02-03",
SendReceipt = "true",
CustomData = "order details",
CustomerLabel = "Patient",
CustomerId = "xt147",
BusinessName = "Star Shoes California",
AssociateCustomerCard = "true",
Card = new
{
CardNumber = "5306764208460213",
CardHolderName = "John Doe",
Cvv2 = "998",
ExpirationDate = "1907",
Customer = new
{
FirstName = "John",
LastName = "Doe",
Phone = "9177563007",
City = "New York",
State = "NY",
Country = "US",
Email = "johnd@mailinator.com",
Address1 = "107 7th Av.",
Address2 = "",
Zip = "10007",
DateOfBirth = "1987-07-07",
DriverLicenseNumber = "12345678",
DriverLicenseState = "TX",
SSN4 = "1210"
}
}
};
string json = JsonConvert.SerializeObject(sale);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "2101a0b0-6e0b-481b-b313-049675630c43",
"Amount" : 19.74,
"TipAmount" : 0.74,
"OrderNumber" : "11518",
"OrderDate" : "2017-02-03",
"SendReceipt" : "true",
"CustomData" : "order details",
"CustomerLabel" : "Patient",
"CustomerId" : "xt147",
"BusinessName" : "Star Shoes California",
"AssociateCustomerCard" : "true",
"Card":
{
"CardNumber" : "5306764208460213",
"CardHolderName" : "John Doe",
"Cvv2" : "998",
"ExpirationDate" : "1907",
"Customer":
{
"FirstName" : "John",
"LastName" : "Doe",
"Phone" : "9177563007",
"City" : "New York",
"State" : "NY",
"Country" : "US",
"Email" : "johnd@mailinator.com",
"Address1" : "107 7th Av.",
"Address2" : "",
"Zip" : "10007",
"DateOfBirth" : "1987-07-07",
"DriverLicenseNumber" : "12345678",
"DriverLicenseState" : "TX",
"SSN4" : "1210"
}
}
}
Json Example Response:
{
"guid": "acd8333f-2fb7-4427-8101-6c8e22f4a537",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:36:53.75",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"amount": 19.74,
"tipAmount": 0.74,
"effectiveAmount": 19.74,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"cardDataSource": "MANUAL",
"customerLabel": "Patient",
"businessName": "Star Shoes California",
"customerID": "xt147",
"batchGuid": "c368cc6c-ec9f-4f63-b90f-e72bf498babd",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283532",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 06:36:57\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283532\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $19.00\\n--------------------------------------\\nTip: $0.74\\n--------------------------------------\\nTotal: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"customData": "order details",
"generatedBy": "maxwinston",
"card": {
"first4": "5306",
"last4": "0213",
"cardNumber": "1zcGT7J4pkGh0213",
"cardHolderName": "John Doe",
"expirationDate": "2019-07",
"customer": {
"guid": "d1cf828d-3050-4e4c-b7cf-f4038d114d39",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563007",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
},
"associateCustomerCard": true
}
The Sale transaction is used to charge a credit card. When running a sale you’re authorizing an amount on a credit card that will make the settlement of that amount at the end of the day. The sale is just like running an AuthOnly and a Capture all together.
This endpoint creates a sale.
HTTP Request
POST https://sandbox.surepay.co/api/v1/sales
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device's Guid. |
Amount | decimal | Mandatory | Amount of the transaction. Min. amt.: $0.50 |
TipAmount | decimal | Optional | Tip Amount of the transaction. |
SequenceNumber | string | Optional | Use this number to call timeout reversal endpoint if you don't get a response. |
OrderNumber | string | Optional | Merchant's order number. The value sent on this element will be returned as InvoiceNumber. Length = 17. |
OrderDate | date | Optional | Order Date. |
SendReceipt | boolean | Optional | Set to “FALSE” if you do not want an e-mail receipt to be sent to the customer. Set to “TRUE” or leave empty if you want e-mail to be sent. |
CustomData | string | Optional | order details. |
CustomerLabel | string | Optional | Any name you want to show instead of customer. Eg., Player, Patient, Buyer. |
CustomerID | string | Optional | Any combination of numbers and letters you use to identify the customer. |
BusinessName | string | Optional | A merchant name you want to use instead of your DBA. |
AssociateCustomerCard | boolean | Optional | An option to know if you want use to save customer and card token. |
SurchargeLabel | string | Optional | Surcharge Name. |
SurchargeType | string | Optional | P or F (percentage or fixed). |
Surcharge | decimal | Optional | Default additional charge value. |
ServiceFee | decimal | Optional | Any additional amount the merchant wants to charge on every sale.(fixed) |
Discount | decimal | Optional | Any amount the merchant wants to discount on every sale.(fixed) |
GrossAmount | decimal | If ServiceFee and/or Discount are sent, GrossAmount is mandatory | Amount before service fee and/or discount. |
SemiIntegrated | boolean | Optional | Only when physical terminal used on semi integrated mode, send value True. |
Card | object | Mandatory | See Card. |
EnhancedData | object | Optional | See EnhancedData. |
Response
- 201 code (created).
Token – Account Updater
When Merchant enrolled in the Account Updater program, the credit card number and expiration date will be reviewed and if a new card or expiration has been issued our host will return as a card token along with the Status for the update. If you are storing this information for recurring billing purposes, next transaction for this consumer should be utilizing the newly provided token representing the new card/expiration.
Get sale
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Sale
{
public static void GetSale()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/sales/265717d6-baf6-4141-8563-537889f70d5d");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "265717d6-baf6-4141-8563-537889f70d5d",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:36:53.75",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"amount": 19.74,
"tipAmount": 0.74,
"effectiveAmount": 19.74,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"cardDataSource": "MANUAL",
"customerLabel": "Patient",
"businessName": "Star Shoes California",
"customerID": "xt147",
"batchGuid": "c368cc6c-ec9f-4f63-b90f-e72bf498babd",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283532",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 06:36:57\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283532\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $19.00\\n--------------------------------------\\nTip: $0.74\\n--------------------------------------\\nTotal: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"customData": "order details",
"generatedBy": "maxwinston",
"card": {
"first4": "5306",
"last4": "0213",
"cardNumber": "1zcGT7J4pkGh0213",
"cardHolderName": "John Doe",
"expirationDate": "2019-07",
"customer": {
"guid": "d1cf828d-3050-4e4c-b7cf-f4038d114d39",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563007",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
},
"associateCustomerCard": true
}
This endpoint gets a sale.
HTTP Request
GET https://sandbox.surepay.co/api/v1/sales/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Sale’s guid to get |
Response
- 200 code (ok).
Create Tip Adjustment
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Sale
{
public static void CreateTipAdjustment()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/sales/TipAdjustment");
request.ContentType = "text/json";
request.Method = "POST";
var tipAdjustment = new
{
DeviceGuid = "8ec1c40b-0c00-4a57-a9c7-7800bd52c308",
TipAmount = "10.00",
SaleGuid = "4d35a3c2-cab9-4a3e-b148-9e3c9586c7e5"
};
string json = JsonConvert.SerializeObject(tipAdjustment);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "8ec1c40b-0c00-4a57-a9c7-7800bd52c308",
"TipAmount" : 10.00,
"SaleGuid" : "4d35a3c2-cab9-4a3e-b148-9e3c9586c7e5"
}
Json Example Response:
{
"guid": "d7b725a6-ef15-4e36-b06c-f1b0a587ba20",
"tipAmount": 10.05,
"status": "Transaction - Approved",
"timeStamp": "2017-08-29T14:26:22.41-03:00",
"deviceGuid": "8ec1c40b-0c00-4a57-a9c7-7800bd52c308",
"saleGuid": "4d35a3c2-cab9-4a3e-b148-9e3c9586c7e5",
"saleReferenceNumber": "13468992",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n08/29/2017 13:26:24\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 5075\\nCARD TYPE : VISA\\nEntry Mode : MANUAL\\n\\nREF # : 13468992\\nInvoice number : 11518\\nAUTH CODE : TAS690\\nSubtotal: $14.88\\n--------------------------------------\\nTip: $10.00\\n--------------------------------------\\nTotal: $24.88\\n--------------------------------------\\n\\n\\n\\nMax Tom\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"processorStatusCode": "A0000",
"wasProcessed": true,
"sale": {
"guid": "4d35a3c2-cab9-4a3e-b148-9e3c9586c7e5",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-08-29T14:26:07.98-03:00",
"deviceGuid": "8ec1c40b-0c00-4a57-a9c7-7800bd52c308",
"amount": 14.88,
"effectiveAmount": 14.88,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"cardDataSource": "MANUAL",
"customerLabel": "Patient",
"businessName": "Star Shoes California",
"customerID": "xt147",
"batchGuid": "118104a1-ebdc-4d13-beba-aa264374e960",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"authCode": "TAS690",
"refNumber": "13468992",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n08/29/2017 13:26:09\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 5075\\nCARD TYPE : VISA\\nEntry Mode : MANUAL\\n\\nREF # : 13468992\\nInvoice number : 11518\\nAUTH CODE : TAS690\\nSubtotal: $14.88\\n--------------------------------------\\nTotal: $14.88\\n--------------------------------------\\n\\n\\n\\nMax Tom\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"customData": "any data the merchant or the customer",
"generatedBy": "maxwinston",
"card": {
"first4": "4024",
"last4": "5075",
"cardNumber": "ehcNs0CAee8p5075",
"cardHolderName": "Max Tom",
"expirationDate": "2019-07",
"customer": {
"guid": "d7476418-eb46-4757-8ab6-3e2b8c96beb4",
"firstName": "Max",
"lastName": "Tom",
"dateOfBirth": "1987-07-07T00:00:00",
"address1": "107 7th Av.",
"address2": "",
"zip": "10007",
"city": "New York",
"state": "NY",
"country": "US",
"phone": "9123475842",
"email": "maxtom@mailinator.com",
"ssN4": "1210",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX"
}
},
"associateCustomerCard": true
}
}
This endpoint creates a tip adjustment.
HTTP Request
POST https://sandbox.surepay.co/api/v1/sales/TipAdjustment
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device's Guid. |
TipAmount | decimal | Mandatory | Tip Amount. |
SaleGuid | string | Conditional | Sale's Guid. Mandatory when SaleReferenceNumber field are not sent. |
SaleReferenceNumber | string | Conditional | Sale Reference Number. Mandatory when SaleGuid field are not sent. |
Response
- 201 code (created).
Sales by batch
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Sale
{
public static void GetSaleByBatch()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/sales/Batch/a72cf7fa-9169-421c-a7b8-9ebc6cd3e1ef");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
[
{
"guid": "46158f86-fd80-4383-a584-119775c6edf3",
"status": "Transaction - Approved",
"batchStatus": "Batch - Closed",
"timeStamp": "2017-07-11T10:36:53.75",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"amount": 19.74,
"effectiveAmount": 19.74,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"cardDataSource": "MANUAL",
"customerLabel": "Patient",
"businessName": "Star Shoes California",
"customerID": "xt147",
"batchGuid": "c368cc6c-ec9f-4f63-b90f-e72bf498babd",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283532",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 06:36:57\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283532\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $19.00\\n--------------------------------------\\nTip: $0.74\\n--------------------------------------\\nTotal: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"customData": "order details",
"generatedBy": "maxwinston",
"card": {
"first4": "5306",
"last4": "0213",
"cardNumber": "1zcGT7J4pkGh0213",
"cardHolderName": "John Doe",
"expirationDate": "2019-07",
"customer": {
"guid": "d1cf828d-3050-4e4c-b7cf-f4038d114d39",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563007",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
},
"associateCustomerCard": true
}
]
This endpoint searches all sales by batch.
HTTP Request
GET https://sandbox.surepay.co/api/v1/sales/Batch/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Batch’s guid to get |
Response
- 200 code (ok).
Timeout Reversal
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Sale
{
public static void TimeoutReversal()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/sales/timeoutreversal");
request.ContentType = "text/json";
request.Method = "POST";
var sale = new
{
DeviceGuid = "b29725af-b067-4a35-9819-bbb31bdf8808",
SequenceNumber = "849741"
};
string json = JsonConvert.SerializeObject(sale);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid": "b29725af-b067-4a35-9819-bbb31bdf8808",
"SequenceNumber": "849741"
}
Json Example Response:
"Device Guid and Sequence Number combination found and voided."
This a feature that allows a user to void a transaction if it never got a response. You must send the device guid of the terminal used to run the transaction and the sequence number. If there was a sale run on that device with that sequence and it was approved, it will be voided. Otherwise you will be informed that a sale was found but it had not been approved or that there was no sale at all with that combination of device guid and sequence number.
HTTP Request
POST https://sandbox.surepay.co/api/v1/sales/timeoutreversal
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device's Guid. |
SequenceNumber | string | Mandatory | Sequence Number. |
Response
- 201 code (created).
AuthOnly
Create AuthOnly
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class AuthOnly
{
public static void CreateAuthOnly()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/AuthOnlys");
request.ContentType = "text/json";
request.Method = "POST";
var authOnly = new
{
DeviceGuid = "fde63679-0c47-4a9c-9b47-82cdf1929851",
Amount = "90.00",
OrderNumber = "11518",
OrderDate = "2017-02-03",
SendReceipt = "true",
CustomData = "order details",
CustomerLabel = "Patient",
CustomerId = "xt147",
AssociateCustomerCard = "true",
Card = new
{
CardNumber = "5175526161474418",
CardHolderName = "John Doe",
Cvv2 = "998",
ExpirationDate = "1912",
Customer = new
{
FirstName = "John",
LastName = "Doe",
Phone = "9177563006",
City = "New York",
State = "NY",
Country = "US",
Email = "johnd@mailinator.com",
Address1 = "106 6th Av.",
Address2 = "",
Zip = "10006",
DateOfBirth = "1986-06-06",
DriverLicenseNumber = "12345678",
DriverLicenseState = "TX",
SSN4 = "1210"
}
}
};
string json = JsonConvert.SerializeObject(authOnly);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "fde63679-0c47-4a9c-9b47-82cdf1929851",
"Amount" : 90.00,
"OrderNumber" : "11518",
"OrderDate" : "2017-02-03",
"SendReceipt" : "true",
"CustomData" : "order details",
"CustomerLabel" : "Patient",
"CustomerId" : "xt147",
"AssociateCustomerCard" : "true",
"Card":
{
"CardNumber" : "5175526161474418",
"CardHolderName" : "John Doe",
"Cvv2" : "998",
"ExpirationDate" : "1912",
"Customer":
{
"FirstName" : "John",
"LastName" : "Doe",
"Phone" : "9177563006",
"City" : "New York",
"State" : "NY",
"Country" : "US",
"Email" : "johnd@mailinator.com",
"Address1" : "106 6th Av.",
"Address2" : "",
"Zip" : "10006",
"DateOfBirth" : "1986-06-06",
"DriverLicenseNumber" : "12345678",
"DriverLicenseState" : "TX",
"SSN4" : "1210"
}
}
}
Json Example Response:
{
"guid": "c8741761-10fe-4530-be84-b1289dcdb9a7",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:51:39.73",
"amount": 90,
"effectiveAmount": 90,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"customData": "order details",
"cardDataSource": "MANUAL",
"customerLabel": "Patient",
"businessName": "Star Shoes California",
"customerID": "xt147",
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0002",
"processorResponseMessage": "Partially Approved",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283616",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 06:51:43\\n\\nCREDIT - AUTH ONLY\\n\\nCARD # : **** **** **** 4418\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283616\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $90.00\\n--------------------------------------\\nTotal: $90.00\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nPartially Approved\\n\\n\\n\\n\\nCustomer Copy\\n",
"card": {
"first4": "5175",
"last4": "4418",
"cardNumber": "dfTsPKwGQIUf4418",
"cardHolderName": "John Doe",
"expirationDate": "2019-12",
"customer": {
"guid": "53d38181-c766-48bd-acb7-37c12b6ddbeb",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563006",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10006",
"address1": "106 6th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1986-06-06T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
},
"associateCustomerCard": true
}
You could use the AuthOnly transaction to authorize an amount on a credit card without making the actual settlement of that amount. In this case, you actually reserve an amount for a certain period against the credit limit of the card holder. The sale will be completed only if you run a successful capture later.
This endpoint creates an AuthOnly.
HTTP Request
POST https://sandbox.surepay.co/api/v1/AuthOnlys
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device's Guid. |
Amount | decimal | Mandatory | Amount of the transaction. Min. amt.: $0.50 |
SequenceNumber | string | Optional | Use this number to call timeout reversal endpoint if you don't get a response. |
OrderNumber | string | Optional | Merchant's order number. The value sent on this element will be returned as InvoiceNumber. Length = 17. |
OrderDate | date | Optional | Order Date. |
SendReceipt | boolean | Optional | Set to “FALSE” if you do not want an e-mail receipt to be sent to the customer. Set to “TRUE” or leave empty if you want e-mail to be sent. |
CustomData | string | Optional | order details. |
CustomerLabel | string | Optional | Any name you want to show instead of customer. Eg., Player, Patient, Buyer. |
CustomerID | string | Optional | Any combination of numbers and letters you use to identify the customer. |
AssociateCustomerCard | boolean | Optional | An option to know if you want use to save customer and card token. |
SemiIntegrated | boolean | Optional | Only when physical terminal used on semi integrated mode, send value True. |
Card | object | Mandatory | See Card. |
EnhancedData | object | Optional | See EnhancedData. |
Response
- 201 code (created).
Get AuthOnly
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class AuthOnly
{
public static void GetAuthOnly()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/AuthOnlys/c8741761-10fe-4530-be84-b1289dcdb9a7");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "c8741761-10fe-4530-be84-b1289dcdb9a7",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:51:39.73",
"amount": 90,
"effectiveAmount": 90,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"customData": "order details",
"cardDataSource": "MANUAL",
"customerLabel": "Patient",
"customerID": "xt147",
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0002",
"processorResponseMessage": "Partially Approved",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283616",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 06:51:43\\n\\nCREDIT - AUTH ONLY\\n\\nCARD # : **** **** **** 4418\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283616\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $90.00\\n--------------------------------------\\nTotal: $90.00\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nPartially Approved\\n\\n\\n\\n\\nCustomer Copy\\n",
"card": {
"first4": "5175",
"last4": "4418",
"cardNumber": "dfTsPKwGQIUf4418",
"cardHolderName": "John Doe",
"expirationDate": "2019-12",
"customer": {
"guid": "53d38181-c766-48bd-acb7-37c12b6ddbeb",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563006",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10006",
"address1": "106 6th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1986-06-06T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
},
"associateCustomerCard": true
}
This endpoint gets an AuthOnly.
HTTP Request
GET https://sandbox.surepay.co/api/v1/AuthOnlys/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | AuthOnly’s guid to get |
Response
- 200 code (ok).
Timeout Reversal
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Sale
{
public static void TimeoutReversal()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/AuthOnlys/timeoutreversal");
request.ContentType = "text/json";
request.Method = "POST";
var sale = new
{
DeviceGuid = "b29725af-b067-4a35-9819-bbb31bdf8808",
SequenceNumber = "849741"
};
string json = JsonConvert.SerializeObject(sale);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid": "b29725af-b067-4a35-9819-bbb31bdf8808",
"SequenceNumber": "849741"
}
Json Example Response:
"Device Guid and Sequence Number combination found and voided."
This a feature that allows a user to void a transaction if it never got a response. You must send the device guid of the terminal used to run the transaction and the sequence number. If there was a sale run on that device with that sequence and it was approved, it will be voided. Otherwise you will be informed that a sale was found but it had not been approved or that there was no sale at all with that combination of device guid and sequence number.
HTTP Request
POST https://sandbox.surepay.co/api/v1/AuthOnlys/timeoutreversal
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device's Guid. |
SequenceNumber | string | Mandatory | Sequence Number. |
Response
- 201 code (created).
Capture
Create capture
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Capture
{
public static void CreateCapture()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Captures");
request.ContentType = "text/json";
request.Method = "POST";
var capture = new
{
DeviceGuid = "4b5013f7-b275-4929-8e83-0167c6edf639",
AuthOnlyGuid = "c8741761-10fe-4530-be84-b1289dcdb9a7",
NewAmount = "90.00"
};
string json = JsonConvert.SerializeObject(capture);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "4b5013f7-b275-4929-8e83-0167c6edf639",
"AuthOnlyGuid" : "c8741761-10fe-4530-be84-b1289dcdb9a7",
"NewAmount" : 90.00
}
Json Example Response:
{
"guid": "cf05ed0a-f9df-4e62-b613-61323a37c14e",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:58:25.95",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"authOnlyGuid": "539e87eb-54a2-44da-8980-62667d81d95c",
"newAmount": 90,
"effectiveAmount": 90,
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"refNumber": "13283616",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 06:58:29\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 4418\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283616\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $90.00\\n--------------------------------------\\nTotal: $90.00\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"authOnly": {
"guid": "539e87eb-54a2-44da-8980-62667d81d95c",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:51:39.73",
"amount": 90,
"effectiveAmount": 90,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"customData": "order details",
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0002",
"processorResponseMessage": "Partially Approved",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283616",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 06:51:43\\n\\nCREDIT - AUTH ONLY\\n\\nCARD # : **** **** **** 4418\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283616\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $90.00\\n--------------------------------------\\nTotal: $90.00\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nPartially Approved\\n\\n\\n\\n\\nCustomer Copy\\n",
"card": {
"first4": "5175",
"last4": "4418",
"cardNumber": "dfTsPKwGQIUf4418",
"cardHolderName": "John Doe",
"expirationDate": "2019-12",
"customer": {
"guid": "53d38181-c766-48bd-acb7-37c12b6ddbeb",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563006",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10006",
"address1": "106 6th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1986-06-06T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
},
"relatedSale": {
"guid": "34f87b4e-3345-4c01-96de-c4257c38e822",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:58:27.37",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"amount": 90,
"effectiveAmount": 90,
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"wasProcessed": true
}
}
The Capture transaction is used to collect the money that you had asked during the AuthOnly transaction. You need to provide the AuthOnlyGuid that you received when you ran the AuthOnly.
This endpoint creates a capture.
HTTP Request
POST https://sandbox.surepay.co/api/v1/Captures
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device’s Guid. |
AuthOnlyGuid | string | Mandatory | AuthOnly’s Guid. |
NewAmount | decimal | Optional | Transaction's new amount. Min. amt.: $0.50 |
Response
- 201 code (created).
Get capture
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Capture
{
public static void GetCapture()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Captures/cf05ed0a-f9df-4e62-b613-61323a37c14e");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "cf05ed0a-f9df-4e62-b613-61323a37c14e",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:58:25.95",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"authOnlyGuid": "539e87eb-54a2-44da-8980-62667d81d95c",
"newAmount": 90,
"effectiveAmount": 90,
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"refNumber": "13283616",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 06:58:29\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 4418\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283616\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $90.00\\n--------------------------------------\\nTotal: $90.00\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"authOnly": {
"guid": "539e87eb-54a2-44da-8980-62667d81d95c",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:51:39.73",
"amount": 90,
"effectiveAmount": 90,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"customData": "order details",
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0002",
"processorResponseMessage": "Partially Approved",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283616",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 06:51:43\\n\\nCREDIT - AUTH ONLY\\n\\nCARD # : **** **** **** 4418\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283616\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $90.00\\n--------------------------------------\\nTotal: $90.00\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nPartially Approved\\n\\n\\n\\n\\nCustomer Copy\\n",
"card": {
"first4": "5175",
"last4": "4418",
"cardNumber": "dfTsPKwGQIUf4418",
"cardHolderName": "John Doe",
"expirationDate": "2019-12",
"customer": {
"guid": "53d38181-c766-48bd-acb7-37c12b6ddbeb",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563006",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10006",
"address1": "106 6th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1986-06-06T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
},
"relatedSale": {
"guid": "34f87b4e-3345-4c01-96de-c4257c38e822",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T10:58:27.37",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"amount": 90,
"effectiveAmount": 90,
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"wasProcessed": true
}
}
This endpoint gets a capture.
HTTP Request
GET https://sandbox.surepay.co/api/v1/Captures/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Capture’s guid to get |
Response
- 200 code (ok).
Void
Create void
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Void
{
public static void CreateVoid()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/void");
request.ContentType = "text/json";
request.Method = "POST";
var void1 = new
{
DeviceGuid = "4b5013f7-b275-4929-8e83-0167c6edf639",
SaleGuid = "c5ac2017-99cb-4b1f-a90e-142cc82b21e5",
VoidReason = "DEVICE_TIMEOUT"
};
string json = JsonConvert.SerializeObject(void1);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "4b5013f7-b275-4929-8e83-0167c6edf639",
"SaleGuid": "c5ac2017-99cb-4b1f-a90e-142cc82b21e5",
"VoidReason": "DEVICE_TIMEOUT"
}
Json Example Response:
{
"guid": "7a4ef786-8288-404d-9340-e837d06784af",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T11:05:46.31",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"saleGuid": "bfff1a26-4207-4871-9597-48282e3fcfea",
"status": "Transaction - Approved",
"voidReason": "DEVICE_TIMEOUT",
"processorStatusCode": "A0000",
"wasProcessed": true,
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"authCode": "VTLMC1",
"refNumber": "13283644",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 07:05:50\\n\\nCREDIT - VOID\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283644\\nInvoice number : 11518\\n\\nVoid Amount: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"sale": {
"guid": "bfff1a26-4207-4871-9597-48282e3fcfea",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T11:05:24.65",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"amount": 19.74,
"effectiveAmount": 0,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283644",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 07:05:27\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283644\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $19.74\\n--------------------------------------\\nTotal: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"customData": "order details",
"card": {
"first4": "5306",
"last4": "0213",
"cardNumber": "1zcGT7J4pkGh0213",
"cardHolderName": "John Doe",
"expirationDate": "2019-07",
"customer": {
"guid": "d1cf828d-3050-4e4c-b7cf-f4038d114d39",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563007",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
}
You can run a Void when you need to cancel a sale that has not been settled yet or an authOnly. To void a sale you need to provide the SaleGuid or SaleReferenceNumber that you received when you ran the Sale. To void an authOnly you need to provide the AuthOnlyGuid or AuthOnlyReferenceNumber that you received when you ran the authOnly.
This endpoint creates a void.
HTTP Request
POST https://sandbox.surepay.co/api/v1/void
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device’s Guid. |
SaleGuid | string | Conditional | Sale’s Guid. Mandatory when SaleReferenceNumber, AuthOnlyGuid and AuthOnlyReferenceNumber field are not sent. |
SaleReferenceNumber | integer | Conditional | SaleReferenceNumber. Mandatory when SaleGuid, AuthOnlyGuid and AuthOnlyReferenceNumber field are not sent. |
AuthOnlyGuid | string | Conditional | AuthOnlyGuid’s Guid. Mandatory when SaleGuid, SaleReferenceNumber and AuthOnlyReferenceNumber field are not sent. |
AuthOnlyReferenceNumber | integer | Conditional | AuthOnlyReferenceNumber. Mandatory when SaleGuid, SaleReferenceNumber and AuthOnlyGuid field are not sent. |
VoidReason | string | Optional | Indicates the reason the transaction was voided. Allowed values: 1. POST_AUTH_USER_DECLINE 2. DEVICE_TIMEOUT 3. DEVICE_UNAVAILABLE 4. PARTIAL_REVERSAL 5. POST_AUTH_CHIP_DECLINE |
Note: Send either SaleGuid, SaleReferenceNumber, AuthOnlyGuid or AuthOnlyReferenceNumber field in a request.
Response
- 201 code (created).
Get void
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Void
{
public static void GetVoid()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/void/7a4ef786-8288-404d-9340-e837d06784af");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "7a4ef786-8288-404d-9340-e837d06784af",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T11:05:46.31",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"saleGuid": "bfff1a26-4207-4871-9597-48282e3fcfea",
"status": "Transaction - Approved",
"voidReason": "DEVICE_TIMEOUT",
"processorStatusCode": "A0000",
"wasProcessed": true,
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"authCode": "VTLMC1",
"refNumber": "13283644",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 07:05:50\\n\\nCREDIT - VOID\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283644\\nInvoice number : 11518\\n\\nVoid Amount: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"sale": {
"guid": "bfff1a26-4207-4871-9597-48282e3fcfea",
"status": "Transaction - Approved",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T11:05:24.65",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"amount": 19.74,
"effectiveAmount": 0,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283644",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 07:05:27\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283644\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $19.74\\n--------------------------------------\\nTotal: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"customData": "order details",
"card": {
"first4": "5306",
"last4": "0213",
"cardNumber": "1zcGT7J4pkGh0213",
"cardHolderName": "John Doe",
"expirationDate": "2019-07",
"customer": {
"guid": "d1cf828d-3050-4e4c-b7cf-f4038d114d39",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563007",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
}
This endpoint gets a void.
HTTP Request
GET https://sandbox.surepay.co/api/v1/void/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Void’s guid to get |
Response
- 200 code (ok).
Return
Create return
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Return
{
public static void CreateReturn()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/returns");
request.ContentType = "text/json";
request.Method = "POST";
var returns = new
{
DeviceGuid = "4b5013f7-b275-4929-8e83-0167c6edf639",
SaleGuid = "41881e9c-f238-4ff7-8cba-3684bbb8bada",
Amount = "19.74"
};
string json = JsonConvert.SerializeObject(returns);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "4b5013f7-b275-4929-8e83-0167c6edf639",
"SaleGuid": "41881e9c-f238-4ff7-8cba-3684bbb8bada",
"Amount": 19.74
}
Json Example Response:
{
"guid": "4f31b350-edd1-49fd-a1ad-4b065f78d7b9",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T11:10:38.11",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"saleGuid": "ded98ad3-0553-4607-b84c-1bbd85f474d5",
"status": "Transaction - Approved",
"amount": 19.74,
"batchGuid": "450463e0-5050-4c33-8c2f-4e39a2dd8614",
"processorStatusCode": "A0014",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283670",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 07:10:42\\n\\nCREDIT - VOID\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283670\\nInvoice number : 11518\\n\\nVoid Amount: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"sale": {
"guid": "ded98ad3-0553-4607-b84c-1bbd85f474d5",
"status": "Transaction - Approved",
"batchStatus": "Batch - Closed",
"timeStamp": "2017-07-11T11:09:53.5",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"amount": 19.74,
"effectiveAmount": 0,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283670",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 07:09:56\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283670\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $19.74\\n--------------------------------------\\nTotal: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"customData": "order details",
"card": {
"first4": "5306",
"last4": "0213",
"cardNumber": "1zcGT7J4pkGh0213",
"cardHolderName": "John Doe",
"expirationDate": "2019-07",
"customer": {
"guid": "d1cf828d-3050-4e4c-b7cf-f4038d114d39",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563007",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
}
You can run a Return transaction when you need to refund either a partial or the full amount of a sale that has been settled. The Return amount doesn’t need to be the same as the total amount originally charged in the sale. To refund a sale you need to provide the SaleGuid or SaleReferenceNumber that you received when you ran the Sale.
This endpoint creates a return.
HTTP Request
POST https://sandbox.surepay.co/api/v1/returns
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device’s Guid. |
SaleGuid | string | Conditional | Sale’s Guid. Mandatory when SaleReferenceNumber field is not sent. |
SaleReferenceNumber | integer | Conditional | SaleReferenceNumber. Mandatory when SaleGuid field is not sent. |
Amount | decimal | Mandatory | Transaction's amount. Min. amt.: $0.50 |
StatementDescription | string | Optional | Custom description to be displayed on the card holder statement. |
Note: Send either SaleGuid or SaleReferenceNumber field in a request.
Response
- 201 code (created).
Get return
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Return
{
public static void GetReturn()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/returns/4f31b350-edd1-49fd-a1ad-4b065f78d7b9");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "4f31b350-edd1-49fd-a1ad-4b065f78d7b9",
"batchStatus": "Batch - Open",
"timeStamp": "2017-07-11T11:10:38.11",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"saleGuid": "ded98ad3-0553-4607-b84c-1bbd85f474d5",
"status": "Transaction - Approved",
"amount": 19.74,
"batchGuid": "450463e0-5050-4c33-8c2f-4e39a2dd8614",
"processorStatusCode": "A0014",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283670",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 07:10:42\\n\\nCREDIT - VOID\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283670\\nInvoice number : 11518\\n\\nVoid Amount: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"sale": {
"guid": "ded98ad3-0553-4607-b84c-1bbd85f474d5",
"status": "Transaction - Approved",
"batchStatus": "Batch - Closed",
"timeStamp": "2017-07-11T11:09:53.5",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"amount": 19.74,
"effectiveAmount": 0,
"orderNumber": "11518",
"orderDate": "2017-02-03T00:00:00",
"batchGuid": "1564cb1b-eddb-4747-9565-61a7d7d225f9",
"processorStatusCode": "A0000",
"processorResponseMessage": "Success",
"wasProcessed": true,
"authCode": "VTLMC1",
"refNumber": "13283670",
"invoiceNumber": "11518",
"customerReceipt": "SUR TECHNOLOGY HOLDINGS\\n8320 S HARDY DRIVE\\nTEMPE AZ 85284\\n07/11/2017 07:09:56\\n\\nCREDIT - SALE\\n\\nCARD # : **** **** **** 0213\\nCARD TYPE :MASTERCARD\\nEntry Mode : MANUAL\\n\\nREF # : 13283670\\nInvoice number : 11518\\nAUTH CODE : VTLMC1\\nSubtotal: $19.74\\n--------------------------------------\\nTotal: $19.74\\n--------------------------------------\\n\\n\\n\\nJohn Doe\\n\\nCUSTOMER ACKNOWLEDGES RECEIPT OF\\nGOODS AND/OR SERVICES IN THE AMOUNT\\nOF THE TOTAL SHOWN HEREON AND AGREES\\nTO PERFORM THE OBLIGATIONS SET FORTH\\nBY THE CUSTOMER`S AGREEMENT WITH THE\\nISSUER\\nAPPROVED\\n\\n\\n\\n\\nCustomer Copy\\n",
"customData": "order details",
"card": {
"first4": "5306",
"last4": "0213",
"cardNumber": "1zcGT7J4pkGh0213",
"cardHolderName": "John Doe",
"expirationDate": "2019-07",
"customer": {
"guid": "d1cf828d-3050-4e4c-b7cf-f4038d114d39",
"firstName": "John",
"lastName": "Doe",
"phone": "9177563007",
"city": "New York",
"country": "US",
"email": "johnd@mailinator.com",
"zip": "10007",
"address1": "107 7th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1987-07-07T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
}
}
}
This endpoint gets a return.
HTTP Request
GET https://sandbox.surepay.co/api/v1/returns/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Return’s guid to get |
Response
- 200 code (ok).
Verify
Create verify
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Verify
{
public static void CreateVerify()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Verify");
request.ContentType = "text/json";
request.Method = "POST";
var verify = new
{
DeviceGuid = "fde63679-0c47-4a9c-9b47-82cdf1929851",
Card = new
{
CardNumber = "4532922657097402",
CardHolderName = "Justin Troudeau",
Cvv2 = "999",
ExpirationDate = "1912",
Customer = new
{
FirstName = "Justin",
LastName = "Troudeau",
Phone = "9177563051",
City = "New York",
State = "NY",
Country = "US",
Email = "justint@mailinator.com",
Address1 = "111 11th Av.",
Address2 = "",
Zip = "10011",
DateOfBirth = "1991-11-11",
DriverLicenseNumber = "12345678",
DriverLicenseState = "TX",
SSN4 = "1210"
}
}
};
string json = JsonConvert.SerializeObject(verify);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "8257dde1-ded6-4c38-ab71-4338c4aa87ac",
"Card":
{
"CardNumber" : "4532922657097402",
"CardHolderName" : "Justin Troudeau",
"Cvv2" : "999",
"ExpirationDate" : "1912",
"Customer":
{
"FirstName" : "Justin",
"LastName" : "Troudeau",
"Phone" : "9177563051",
"City" : "New York",
"State" : "NY",
"Country" : "US",
"Email" : "justint@mailinator.com",
"Address1" : "111 11th Av.",
"Address2" : "",
"Zip" : "10011",
"DateOfBirth" : "1991-11-11",
"DriverLicenseNumber" : "12345678",
"DriverLicenseState" : "TX",
"SSN4" : "1210"
}
}
}
Json Example Response:
{
"guid": "6b71517b-5972-47f3-aa3d-dcf3eef4bd70",
"status": "Transaction - Approved",
"timeStamp": "2017-07-11T11:14:51.18",
"deviceGuid": "8f65764d-72c1-4dee-ac9f-4cd4c98e8c35",
"card": {
"first4": "4532",
"last4": "7402",
"cardNumber": "hNDbeGr7VBgY7402",
"cardHolderName": "Justin Troudeau",
"expirationDate": "2019-12",
"customer": {
"guid": "e9132f23-b898-4779-a8fa-adc06d3559c3",
"firstName": "Justin",
"lastName": "Troudeau",
"phone": "9177563051",
"city": "New York",
"country": "US",
"email": "justint@mailinator.com",
"zip": "10011",
"address1": "111 11th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1991-11-11T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
},
"processorStatusCode": "A0000",
"wasProcessed": true
}
The Verify transaction is used when you want to know if the card data you have is valid and it’s ready to run other transactions like Auth Only or Sale. Therefore we are talking about a $0.00 amount transaction, no money is moved.
This endpoint creates a verify.
HTTP Request
POST https://sandbox.surepay.co/api/v1/Verify
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device’s Guid. |
Card | object | Mandatory | See Card. |
Response
- 201 code (created).
Get verify
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Verify
{
public static void GetVerify()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Verify/f1565d71-54c2-410e-a672-29aa28316b7d");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "f1565d71-54c2-410e-a672-29aa28316b7d",
"status": "Transaction - Approved",
"timeStamp": "2017-07-03T14:08:15.53",
"deviceGuid": "4b5013f7-b275-4929-8e83-0167c6edf639",
"card": {
"first4": "4532",
"last4": "7402",
"cardNumber": "hNDbeGr7VBgY7402",
"cardHolderName": "Justin Troudeau",
"expirationDate": "2019-12",
"customer": {
"guid": "97c01573-3736-4755-bbcf-de9da8e9391d",
"firstName": "Justin",
"lastName": "Troudeau",
"phone": "9177563051",
"city": "New York",
"country": "US",
"email": "justint@mailinator.com",
"zip": "10011",
"address1": "111 11th Av.",
"address2": "",
"state": "NY",
"dateOfBirth": "1991-11-11T00:00:00",
"driverLicenseNumber": "12345678",
"driverLicenseState": "TX",
"ssN4": "1210"
}
},
"processorStatusCode": "A0000",
"wasProcessed": true
}
This endpoint gets a verify.
HTTP Request
GET https://sandbox.surepay.co/api/v1/Verify/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Verify’s guid to get |
Response
- 200 code (ok).
Tokenization
Create tokenization
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Tokenization
{
public static void CreateTokenization()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/tokenization");
request.ContentType = "text/json";
request.Method = "POST";
var tokenization = new
{
DeviceGuid = "F050E264-EABF-433E-8C81-916DFE110159",
Card = new
{
CardNumber = "4024007194311436",
CardHolderName = "John Doe",
ExpirationDate = "2507",
Customer = new
{
FirstName = "John",
LastName = "Doe"
}
}
};
string json = JsonConvert.SerializeObject(tokenization);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid": "F050E264-EABF-433E-8C81-916DFE110159",
"Card": {
"CardNumber": "4024007194311436",
"CardHolderName": "John Doe",
"ExpirationDate": "2507",
"Customer": {
"FirstName": "John",
"LastName": "Doe"
}
}
}
Json Example Response:
{
"guid": "a2b8842a-a248-4759-ad71-9607a472e7cc",
"status": "Transaction - Approved",
"timeStamp": "2021-07-16T15:36:07.31",
"deviceGuid": "F050E264-EABF-433E-8C81-916DFE110159",
"cardDataSource": "INTERNET",
"processorStatusCode": "A0000",
"card": {
"first6": "402400",
"last4": "1436",
"cardNumber": "XR6ngXrNGdD31436",
"cardHolderName": "John Doe",
"cardType": "Visa",
"expirationDate": "2025-07"
}
}
The Tokenization service is used when you want to obtain a tokenized value of the card number but no validation to be performed at the issuing bank.
This endpoint creates a tokenization.
HTTP Request
POST https://sandbox.surepay.co/api/v1/tokenization
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device’s Guid. |
Card | object | Mandatory | See Card. |
Response
- 201 code (created).
Recurring Billing
Create recurring billing
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class RecurringBilling
{
public static void CreateRecurringBilling()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/recurringBillings");
request.ContentType = "text/json";
request.Method = "POST";
var recurringBilling = new
{
DeviceGuid = "8257dde1-ded6-4c38-ab71-4338c4aa87ac",
Amount = "10.50",
Interval = "monthly",
IntervalValue = "april, may, june",
StartDate = "2017-05-13T00:00:01.000Z",
EndDate = "2019-04-01T00:00:01.000Z",
PaymentCount = "",
ScheduleNotes = "Cable",
Description = "Description",
Card = new
{
CardNumber = "4556395004716019",
CardHolderName = "John Doe",
Cvv2 = "999",
ExpirationDate = "1710",
Customer = new
{
FirstName = "John",
LastName = "Doe",
Phone = "9865123654",
City = "New York",
State = "NY",
Country = "US",
Email = "johnd@mailinator.com",
Address1 = "12th Ave. 5472",
Address2 = "",
Zip = "10003",
DateOfBirth = "1989-10-01T00:00:01.000Z",
DriverLicenseNumber = "12345678",
DriverLicenseState = "TX",
SSN4 = "1210"
}
}
};
string json = JsonConvert.SerializeObject(recurringBilling);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "8257dde1-ded6-4c38-ab71-4338c4aa87ac",
"Amount" : 10.50,
"Interval" : "monthly",
"IntervalValue" : "april, may, june",
"StartDate" : "2017-05-13",
"EndDate" : "2019-04-01",
"PaymentCount" : "",
"ScheduleNotes" : "Cable",
"Description" : "Description",
"Card":
{
"CardNumber" : "4556395004716019",
"CardHolderName" : "John Doe",
"Cvv2" : "999",
"ExpirationDate" : "1710",
"Customer":
{
"FirstName" : "John",
"LastName" : "Doe",
"Phone" : "9865123654",
"City" : "New York",
"State" : "NY",
"Country" : "US",
"Email" : "johndoe@mailinator.com",
"Address1" : "12th Ave. 5472",
"Address2" : "",
"Zip" : "10003",
"DateOfBirth" : "1989-10-01T00:00:01.000Z",
"DriverLicenseNumber" : "12345678",
"DriverLicenseState" : "TX",
"SSN4" : "1210"
}
}
}
Json Example Response:
{
"guid": "d1507904-f84c-4508-98ef-5f0fcc417019",
"deviceGuid": "75f97793-430b-4e94-9aec-383950639b18",
"status": "RecurringBilling - Active",
"interval": "monthly",
"intervalValue": "april, may, june",
"amount": 10.5,
"recurringBillingNumber": "14339150",
"startDate": "2017-05-13T00:00:00",
"endDate": "2019-04-01T00:00:00",
"scheduleNotes": "Cable",
"description" : "Description",
"processorStatusCode": "OK",
"processorResponseMessage": "Recurring billing scheduled. Payment count: 5. First payment: Saturday, May 13, 2017. Last payment: Wednesday, June 13, 2018",
"wasProcessed": true,
"card": {
"first4": "4556",
"last4": "6019",
"cardNumber": "7hEtLJIhooTE6019",
"cardHolderName": "John Doe",
"expirationDate": "2017-10",
"customer": {
"guid": "d0912636-4fc1-48a4-b002-aa39a9df1288",
"firstName": "John",
"lastName": "Doe",
"phone": "9865123654",
"city": "New York",
"country": "US",
"email": "johndoe@mailinator.com",
"zip": "10003",
"address1": "12th Ave. 5472",
"address2": "",
"state": "NY",
"dateOfBirth": "1989-10-01T00:00:00",
"DriverLicenseNumber" : "12345678",
"DriverLicenseState" : "TX",
"SSN4" : "1210"
}
},
"scheduleAndPayments": [
{
"scheduledPaymentDate": "2017-05-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Saturday",
"scheduledPaymentNumber": 1,
"scheduledWasProcessed": false
},
{
"scheduledPaymentDate": "2017-06-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Tuesday",
"scheduledPaymentNumber": 2,
"scheduledWasProcessed": false
},
{
"scheduledPaymentDate": "2018-04-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Friday",
"scheduledPaymentNumber": 3,
"scheduledWasProcessed": false
},
{
"scheduledPaymentDate": "2018-05-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Sunday",
"scheduledPaymentNumber": 4,
"scheduledWasProcessed": false
},
{
"scheduledPaymentDate": "2018-06-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Wednesday",
"scheduledPaymentNumber": 5,
"scheduledWasProcessed": false
}
]
}
Recurring billing is a great feature you can use when you want to charge a card or debit from a bank account every a determined period of time. Period can be daily, weekly, biweekly, monthly, yearly, etc. Check the fields to know how to work with each of them.
This endpoint creates a recurring billing.
HTTP Request
POST https://sandbox.surepay.co/api/v1/recurringBillings
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Optional | Device's Guid. Mandatory when providing a CreditCard or a BankAccount. Not required when providing an InvoiceGuid. |
InvoiceGuid | string | Optional | The Guid of the Invoice you want to make recurring. Do not send amount, nor Card neither Bank Account in this case. |
Amount | decimal | Optional | Transaction's amount. Min. amt.: $0.50. Mandatory when amount is fixed. |
Interval | string | Mandatory | Recurring billing interval. A customer can schedule the recurring payment at a desired interval. Allowed values: 1. yearly 2. halfYearly 3. quarterly 4. monthly 5. fortnightly 6. weekly 7. biweekly 8. daily 9. CustomDates 10. each1st 11. each15th 12. 1st15th |
IntervalValue | string | Mandatory for monthly, weekly and custom dates modes | Allowed values: 1.For the yearly, halfYearly , quarterly, fortnightly, biweekly and daily mode, does not need to enter IntervalValue, since they do not have. 2.For the monthly mode, select everyMonth or the months of the year. Example: "Interval" : "monthly", "IntervalValue" : "april, may, june". 3.For weekly mode, select everyWeek or the days of the week. Example: "Interval" : "weekly", "IntervalValue" : "monday, tuesday, wednesday". 4.For CustomDates mode, select a list of dates (yyyy-MM-dd) separated by commas. Example: "Interval" : "CustomDates", "IntervalValue" : "2017-03-12, 2017-04-06, 2017-05-17, 2017-06-12". |
SubIntervalValue | string | Mandatory for monthly | Allowed values: 1.Any day of the month. |
StartDate | date | Mandatory | The first payment date of the recurring billing schedule. Allowed Recurring Billing format: YYYY-MM-DD For example: 2002-05-30 |
EndDate | date | Mandatory when payment count is not submitted | The last payment date of the recurring billing schedule. Allowed Recurring Billing format: YYYY-MM-DD For example: 2002-05-30 Note: Send either EndDate or PaymentCount field in a request. |
PaymentCount | integer | Mandatory when end date is not submitted | The count of payments in a recurring schedule payment, set by a customer. Note: Send either PaymentCount or EndDate field in a request. |
ScheduleNotes | string | Optional | This field provides a place for the user to identify the reason they added or modified the recurring schedule. |
Description | string | Optional | General description about the recurring billing. |
DynamicAmount | boolean | Optional | Mandatory and true when providing a merchant product list guid. Not compatible with enhanced data. |
MerchantProductListGuid | string | Optional | MerchantProductList's Guid. Mandatory when providing a dynamic amount. |
SendReceipt | boolean | Optional | Set to “FALSE” if you do not want an e-mail receipt to be sent to the customer. Set to “TRUE” or leave empty if you want e-mail to be sent. |
Card | object | Mandatory | See Card. Note: Send either Card or BankAccount object in a request. |
BankAccount | object | Mandatory | See BankAccount. Note: Send either Card or BankAccount object in a request. |
EnhancedData | object | Optional | See EnhancedData. |
Response
- 201 code (created).
Update recurring billing
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class RecurringBilling
{
public static void UpdateRecurringBilling()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/recurringBillings/1de7a995-6e4d-4726-afb3-c9972b9b150a");
request.ContentType = "text/json";
request.Method = "PUT";
var recurringBilling = new
{
Amount = "25.40",
Interval = "monthly",
IntervalValue = "january",
StartDate = "2017-04-01T00:00:01.000Z",
EndDate = "2018-06-01T00:00:01.000Z",
PaymentCount = "",
ScheduleNotes = "Cable",
Description = "Description",
Status = "RecurringBilling - Active"
};
string json = JsonConvert.SerializeObject(recurringBilling);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"Amount" : 25.40,
"Interval" : "monthly",
"IntervalValue" : "january",
"StartDate" : "2017-04-01T00:00:01.000Z",
"EndDate" : "2018-06-01T00:00:01.000Z",
"PaymentCount" : "",
"ScheduleNotes" : "Cable",
"Description" : "Description",
"Status" : "RecurringBilling - Active"
}
Json Example Response:
{
"guid": "1de7a995-6e4d-4726-afb3-c9972b9b150a",
"deviceGuid": "8257dde1-ded6-4c38-ab71-4338c4aa87ac",
"status": "RecurringBilling - Active",
"interval": "monthly",
"intervalValue": "january",
"amount": 25.4,
"recurringBillingNumber": "99851606",
"startDate": "2017-04-01T00:00:01",
"endDate": "2018-06-01T00:00:01",
"scheduleNotes": "Cable",
"description" : "Description",
"processorStatusCode": "OK",
"processorResponseMessage": "Recurring billing re-scheduled. Payment count: 1. First payment: Monday, January 1, 2018. Last payment: Monday, January 1, 2018",
"wasProcessed": true,
"card": {
"first4": "4556",
"last4": "6019",
"cardNumber": "7hEtLJIhooTE6019",
"cardHolderName": "John Doe",
"expirationDate": "2017-10",
"customer": {
"guid": "d0912636-4fc1-48a4-b002-aa39a9df1288",
"firstName": "John",
"lastName": "Doe",
"phone": "9865123654",
"city": "New York",
"country": "US",
"email": "johndoe@mailinator.com",
"zip": "10003",
"address1": "12th Ave. 5472",
"address2": "",
"state": "NY",
"dateOfBirth": "1989-10-01T00:00:00",
"DriverLicenseNumber" : "12345678",
"DriverLicenseState" : "TX",
"SSN4" : "1210"
}
},
"scheduleAndPayments": [
{
"scheduledPaymentDate": "2018-01-01T00:00:00",
"scheduledPaymentDateDayOfWeek": "Monday",
"scheduledPaymentNumber": 1,
"scheduledWasProcessed": false
}
]
}
This endpoint updates a recurring billing.
HTTP Request
PUT https://sandbox.surepay.co/api/v1/recurringBillings<guid>
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Recurring billings’s guid to update |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
Amount | decimal | Optional | Transaction's amount. Min. amt.: $0.50 |
Interval | string | Optional | Recurring billing interval. A customer can schedule the recurring payment at a desired interval. Allowed values: 1. yearly 2. halfYearly 3. quarterly 4. monthly 5. fortnightly 6. weekly 7. biweekly 8. daily 9. CustomDates 10. each1st 11. each15th 12. 1st15th |
IntervalValue | string | Optional | Allowed values: 1.For the yearly, halfYearly , quarterly, fortnightly, biweekly and daily mode, does not need to enter IntervalValue, since they do not have. 2.For the monthly mode, select everyMonth or the months of the year. Example: "Interval" : "monthly", "IntervalValue" : "april, may, june". 3.For weekly mode, select everyWeek or the days of the week. Example: "Interval" : "weekly", "IntervalValue" : "monday, tuesday, wednesday". 4.For CustomDates mode, select a list of dates (yyyy-MM-dd) separated by commas. Example: "Interval" : "CustomDates", "IntervalValue" : "2017-03-12, 2017-04-06, 2017-05-17, 2017-06-12". |
SubIntervalValue | string | Mandatory for monthly | Allowed values: 1.Any day of the month. |
StartDate | date | Optional | The first payment date of the recurring billing schedule. Allowed Recurring Billing format: YYYY-MM-DD For example: 2002-05-30 |
EndDate | date | Optional | The first payment date of the recurring billing schedule. Allowed Recurring Billing format: YYYY-MM-DD For example: 2002-05-30 Note: Send either EndDate or PaymentCount field in a request. |
PaymentCount | integer | Optional | The count of payments in a recurring schedule payment, set by a customer. Note: Send either PaymentCount or EndDate field in a request. |
ScheduleNotes | string | Optional | This field provides a place for the user to identify the reason they added or modified the recurring schedule. |
Description | string | Optional | General description about the recurring billing. |
SendReceipt | boolean | Optional | Set to “FALSE” if you do not want an e-mail receipt to be sent to the customer. Set to “TRUE” or leave empty if you want e-mail to be sent. |
Status | string | Optional | Recurring billing status. Allowed values: 1. RecurringBilling - Active 2. RecurringBilling - Created - Local 3. RecurringBilling - Created - Error: Processor not reached 4. RecurringBilling - Created - Processor Fail 5. RecurringBilling - Deactivated 6. RecurringBilling - Paused 7. RecurringBilling - Finished 8. RecurringBilling - Deleted 9. RecurringBilling - Active Started |
Response
- 200 code (ok).
Get recurring billing
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class RecurringBilling
{
public static void GetRecurringBilling()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/recurringBillings/1de7a995-6e4d-4726-afb3-c9972b9b150a");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "d1507904-f84c-4508-98ef-5f0fcc417019",
"deviceGuid": "75f97793-430b-4e94-9aec-383950639b18",
"status": "RecurringBilling - Active",
"interval": "monthly",
"intervalValue": "april, may, june",
"amount": 10.5,
"recurringBillingNumber": "14339150",
"startDate": "2017-05-13T00:00:00",
"endDate": "2019-04-01T00:00:00",
"scheduleNotes": "Cable",
"description": "Description",
"processorStatusCode": "OK",
"processorResponseMessage": "Recurring billing scheduled. Payment count: 5. First payment: Saturday, May 13, 2017. Last payment: Wednesday, June 13, 2018",
"wasProcessed": true,
"card": {
"first4": "4556",
"last4": "6019",
"cardNumber": "7hEtLJIhooTE6019",
"cardHolderName": "John Doe",
"expirationDate": "2017-10",
"customer": {
"guid": "d0912636-4fc1-48a4-b002-aa39a9df1288",
"firstName": "John",
"lastName": "Doe",
"phone": "9865123654",
"city": "New York",
"country": "US",
"email": "johndoe@mailinator.com",
"zip": "10003",
"address1": "12th Ave. 5472",
"address2": "",
"state": "NY",
"dateOfBirth": "1989-10-01T00:00:00",
"DriverLicenseNumber" : "12345678",
"DriverLicenseState" : "TX",
"SSN4" : "1210"
}
},
"scheduleAndPayments": [
{
"scheduledPaymentDate": "2017-05-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Saturday",
"scheduledPaymentNumber": 1,
"scheduledWasProcessed": false
},
{
"scheduledPaymentDate": "2017-06-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Tuesday",
"scheduledPaymentNumber": 2,
"scheduledWasProcessed": false
},
{
"scheduledPaymentDate": "2018-04-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Friday",
"scheduledPaymentNumber": 3,
"scheduledWasProcessed": false
},
{
"scheduledPaymentDate": "2018-05-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Sunday",
"scheduledPaymentNumber": 4,
"scheduledWasProcessed": false
},
{
"scheduledPaymentDate": "2018-06-13T00:00:00",
"scheduledPaymentDateDayOfWeek": "Wednesday",
"scheduledPaymentNumber": 5,
"scheduledWasProcessed": false
}
]
}
This endpoint gets a recurring billing.
HTTP Request
GET https://sandbox.surepay.co/api/v1/recurringBillings/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Recurring billings’s guid to get |
Response
- 200 code (ok).
Batch
Close batch
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Batch
{
public static void CloseBatch()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Batches/close");
request.ContentType = "text/json";
request.Method = "POST";
var batch = new
{
DeviceGuid = "8257dde1-ded6-4c38-ab71-4338c4aa87ac"
};
string json = JsonConvert.SerializeObject(batch);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"DeviceGuid" : "8257dde1-ded6-4c38-ab71-4338c4aa87ac"
}
Json Example Response:
{
"deviceGuid": "8257dde1-ded6-4c38-ab71-4338c4aa87ac",
"guid": "8193db64-dc35-4cf8-b4a9-7e1d66aa119f",
"status": "PASS",
"responseCode": "A0000",
"responseMessage": "Success",
"closureDate": "2017-03-15T15:27:31.8987491-03:00",
"batchInfo": {
"siccode": "5999",
"saleCount": 8,
"saleAmount": 137.65,
"returnCount": 0,
"returnAmount": 0
}
}
Batch is processing all the authorized transactions of the day at the end of the day. However, you can close a batch manually before. You can also get your transactions searched by batch.
This endpoint closes a batch.
HTTP Request
POST https://sandbox.surepay.co/api/v1/Batches/close
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
DeviceGuid | string | Mandatory | Device’s Guid. |
SemiIntegrated | boolean | Optional | Only when physical terminal used on semi integrated mode, send value True. |
Response
- 201 code (created).
Search batches
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Batch
{
public static void SearchBatch()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Batches/search");
request.ContentType = "text/json";
request.Method = "POST";
var batch = new
{
deviceGuid = "58ccf5a4-1d5d-4546-8202-da5c7ad10711",
startDate = "1/1/1900",
endDate = "12/31/2020"
};
string json = JsonConvert.SerializeObject(batch);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"deviceGuid" : "58ccf5a4-1d5d-4546-8202-da5c7ad10711",
"startDate" : "1/1/1900",
"endDate" : "12/31/2020"
}
Json Example Response:
{
"count": 2,
"ret": [
{
"batchGuid": "58e8a0ad-d167-4015-a4b1-904b1e7f2b26",
"batchNumber": "160635",
"closureDate": "2020-11-25T08:39:56.86-06:00",
"batchTotalAmount": 26.79,
"userName": "maxduplessy",
"summary": {
"saleCount": 2,
"saleAmount": 46.53,
"returnCount": 1,
"returnAmount": 19.74
},
"transactions": [
{
"transactionType": "Return",
"transactionDatetime": "2020-11-25T07:17:24.15-06:00",
"lastFour": "0213",
"cardType": "Mastercard",
"amount": 19.74,
"processorResponseMessage": "Return requested, Void successful"
},
{
"transactionType": "Sale",
"transactionDatetime": "2020-11-25T07:29:06.97-06:00",
"lastFour": "8442",
"cardType": "Visa",
"amount": 25.04,
"processorResponseMessage": "Success"
},
{
"transactionType": "Sale",
"transactionDatetime": "2020-11-25T07:30:52.72-06:00",
"lastFour": "0213",
"cardType": "Mastercard",
"amount": 21.49,
"processorResponseMessage": "Success"
}
]
},
{
"batchGuid": "b8d73296-e397-45c0-bb43-ba064e9750ac",
"batchNumber": "160634",
"closureDate": "2020-11-25T07:16:27.09-06:00",
"batchTotalAmount": 19.74,
"userName": "maxduplessy",
"summary": {
"saleCount": 1,
"saleAmount": 19.74,
"returnCount": 0,
"returnAmount": 0.00
},
"transactions": [
{
"transactionType": "Sale",
"transactionDatetime": "2020-11-25T07:15:27.28-06:00",
"lastFour": "0213",
"cardType": "Mastercard",
"amount": 19.74,
"processorResponseMessage": "Success"
}
]
}
]
}
This endpoint searches batches in a date range.
HTTP Request
POST https://sandbox.surepay.co/api/v1/Batches/search
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
deviceGuid | string | Mandatory | Device's guid. |
startDate | date | Mandatory | Search's start date. Allowed Recurring Billing format: YYYY-MM-DD For example: 2002-05-30 |
endDate | date | Mandatory | Search's end date. Allowed Recurring Billing format: YYYY-MM-DD For example: 2002-05-30 |
Response
- 200 code (ok).
Get batches with transactions
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Batch
{
public static void GetBatchsWithTransactions()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Batches/10b88d43-9f5b-4d9a-a1b3-0827e22f53e0/Transactions");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
[
{
"transactionType": "Return",
"transactionDatetime": "2020-11-25T07:17:24.15-06:00",
"lastFour": "0213",
"cardType": "Mastercard",
"amount": 19.74,
"processorResponseMessage": "Return requested, Void successful",
"userName": "maxduplessy"
},
{
"transactionType": "Sale",
"transactionDatetime": "2020-11-25T07:29:06.97-06:00",
"lastFour": "8442",
"cardType": "Visa",
"amount": 25.04,
"processorResponseMessage": "Success",
"userName": "maxduplessy"
},
{
"transactionType": "Sale",
"transactionDatetime": "2020-11-25T07:30:52.72-06:00",
"lastFour": "0213",
"cardType": "Mastercard",
"amount": 21.49,
"processorResponseMessage": "Success",
"userName": "maxduplessy"
}
]
This endpoint gets a batch with its transactions.
HTTP Request
GET https://sandbox.surepay.co/api/v1/Batches/<guid>/Transactions/
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Batch’s guid to get |
Response
- 200 code (ok).
Invoice Customer
Create invoice customer
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class InvoiceCustomer
{
public static void CreateInvoiceCustomer()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice/InvoiceCustomers");
request.ContentType = "text/json";
request.Method = "POST";
var invoiceCustomer = new
{
MerchantGuid = "24639b5f-f881-45dc-966c-4beece954e6c",
CompanyName = "Incutex",
FirstName = "John",
LastName = "Lock",
Address1 = "108 8th Av.",
Address2 = "8th Floor",
Zip = "10008",
City = "New York",
State = "NY",
PersonalPhone = "9727414574",
WorkPhone = "9177563046",
Fax = "8004578796",
Email = "john.lock@mailinator.com"
};
string json = JsonConvert.SerializeObject(invoiceCustomer);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"MerchantGuid" : "24639b5f-f881-45dc-966c-4beece954e6c",
"CompanyName" : "Incutex",
"FirstName": "John",
"LastName": "Lock",
"Address1": "108 8th Av.",
"Address2": "8th Floor",
"Zip": "10008",
"City": "New York",
"State": "NY",
"PersonalPhone" : "9727414574",
"WorkPhone" : "9177563046",
"Fax" : "8004578796",
"Email": "john.lock@mailinator.com"
}
Json Example Response:
{
"guid": "33524364-727a-422b-8bbe-5eab1a849e82",
"merchantGuid": "24639b5f-f881-45dc-966c-4beece954e6c",
"customerCode": "LJ7482",
"companyName": "Incutex",
"firstName": "John",
"lastName": "Lock",
"address1": "108 8th Av.",
"address2": "8th Floor",
"zip": "10008",
"city": "New York",
"state": "NY",
"personalPhone": "9727414574",
"workPhone": "9177563046",
"fax": "8004578796",
"email": "john.lock@mailinator.com",
"invoiceNumber": "000001"
}
This endpoint creates a invoice customer.
HTTP Request
POST https://sandbox.surepay.co/api/v1/Invoice/InvoiceCustomers
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
MerchantGuid | string | Mandatory | Merchant’s Guid. |
CompanyName | string | Optional | Company Name. |
FirstName | string | Optional | User’s first name. |
LastName | string | Optional | User’s last name. |
Address1 | string | Optional | User’s address. |
Address2 | string | Optional | User’s address line 2. |
City | string | Optional | User’s city. |
State | string | Optional | User’s short name state. The ISO 3166-2 CA and US state or province code of a user. Length = 2. |
Zip | integer | Optional | User’s zipcode. Length = 5. |
PersonalPhone | integer | Optional | User’s phone number. The phone number must be syntactically correct. For example, 4152345678. |
WorkPhone | integer | Optional | User’s phone number. The phone number must be syntactically correct. For example, 4152345678. |
Fax | integer | Optional | User’s phone number. The phone number must be syntactically correct. For example, 4152345678. |
string | Optional | User’s valid email address |
Response
- 201 code (created).
Update invoice customer
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class InvoiceCustomer
{
public static void UpdateInvoiceCustomer()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice/InvoiceCustomers/00572c03-3536-4f48-b083-caf1a3d30c18");
request.ContentType = "text/json";
request.Method = "PUT";
var invoiceCustomer = new
{
CompanyName = "Incutex",
FirstName = "John",
LastName = "Lock",
Address1 = "108 8th Av.",
Address2 = "8th Floor",
Zip = "10008",
City = "New York",
State = "NY",
PersonalPhone = "9727414574",
WorkPhone = "9177563046",
Fax = "8004578796",
Email = "john.lock@mailinator.com"
};
string json = JsonConvert.SerializeObject(invoiceCustomer);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"CompanyName" : "Incutex",
"FirstName": "John",
"LastName": "Lock",
"Address1": "108 8th Av.",
"Address2": "8th Floor",
"Zip": "10008",
"City": "New York",
"State": "NY",
"PersonalPhone" : "9727414574",
"WorkPhone" : "9177563046",
"Fax" : "8004578796",
"Email": "john.lock@mailinator.com"
}
Json Example Response:
{
"guid": "33524364-727a-422b-8bbe-5eab1a849e82",
"merchantGuid": "24639b5f-f881-45dc-966c-4beece954e6c",
"customerCode": "LJ7482",
"companyName": "Incutex",
"firstName": "John",
"lastName": "Lock",
"address1": "108 8th Av.",
"address2": "8th Floor",
"zip": "10008",
"city": "New York",
"state": "NY",
"personalPhone": "9727414574",
"workPhone": "9177563046",
"fax": "8004578796",
"email": "john.lock@mailinator.com",
"invoiceNumber": "000001"
}
This endpoint updates a invoice customer.
HTTP Request
PUT https://sandbox.surepay.co/api/v1/Invoice/InvoiceCustomers/<guid>
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Invoice customer’s guid to update |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
CompanyName | string | Optional | Company Name. |
FirstName | string | Optional | User’s first name. |
LastName | string | Optional | User’s last name. |
Address1 | string | Optional | User’s address. |
Address2 | string | Optional | User’s address line 2. |
City | string | Optional | User’s city. |
State | string | Optional | User’s short name state. The ISO 3166-2 CA and US state or province code of a user. Length = 2. |
Zip | integer | Optional | User’s zipcode. Length = 5. |
PersonalPhone | integer | Optional | User’s phone number. The phone number must be syntactically correct. For example, 4152345678. |
WorkPhone | integer | Optional | User’s phone number. The phone number must be syntactically correct. For example, 4152345678. |
Fax | integer | Optional | User’s phone number. The phone number must be syntactically correct. For example, 4152345678. |
string | Optional | User’s valid email address |
Response
- 200 code (ok).
Get invoice customer
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class InvoiceCustomer
{
public static void GetInvoiceCustomer()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice/InvoiceCustomers/00572c03-3536-4f48-b083-caf1a3d30c18");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"guid": "00572c03-3536-4f48-b083-caf1a3d30c18",
"merchantGuid": "24639b5f-f881-45dc-966c-4beece954e6c",
"customerCode": "KQ2653",
"companyName": "Incutex",
"firstName": "John",
"lastName": "Lock",
"address1": "108 8th Av.",
"address2": "8th Floor",
"zip": "10008",
"city": "New York",
"state": "NY",
"personalPhone": "9727414574",
"workPhone": "9177563046",
"fax": "8004578796",
"email": "john.lock@mailinator.com",
"invoiceNumber": "000001"
}
This endpoint gets a invoice customer.
HTTP Request
GET https://sandbox.surepay.co/api/v1/Invoice/InvoiceCustomers/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Invoice customer’s guid to get |
Response
- 200 code (ok).
Get invoice customer by Merchant
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class InvoiceCustomer
{
public static void GetInvoiceCustomerByMerchant()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice/24639b5f-f881-45dc-966c-4beece954e6c/InvoiceCustomers");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
[
{
"guid": "c6697789-6b5d-4243-bb2c-91da084b6e4a",
"merchantGuid": "24639b5f-f881-45dc-966c-4beece954e6c",
"customerCode": "NA1530",
"companyName": "Incutex",
"firstName": "Max",
"lastName": "Tomassi",
"address1": "Belgrano 383",
"zip": "10016",
"city": "New York",
"state": "NY",
"country": "United States",
"province": "",
"personalPhone": "",
"email": "maxduplessy@mailinator.com",
"invoiceNumber": "000001",
"shippingAddresses": [
{
"isDeleted": false,
"guid": "e45e0464-39c8-4d87-b1da-7bef8b251f29",
"address1": "Belgrano 383",
"zip": "10016",
"city": "New York",
"state": "NY",
"country": "United States",
"province": ""
}
]
},
{
"guid": "e79ec8b0-dbd3-4be0-bf4e-8c12c632be7c",
"merchantGuid": "24639b5f-f881-45dc-966c-4beece954e6c",
"customerCode": "TD1627",
"companyName": "Incutex",
"firstName": "John",
"lastName": "Lock",
"address1": "108 8th Av.",
"address2": "8th Floor",
"zip": "10008",
"city": "New York",
"state": "NY",
"personalPhone": "9727414574",
"workPhone": "9177563046",
"fax": "8004578796",
"email": "john.lock@mailinator.com",
"invoiceNumber": "000001"
},
{
"guid": "33524364-727a-422b-8bbe-5eab1a849e82",
"merchantGuid": "24639b5f-f881-45dc-966c-4beece954e6c",
"customerCode": "LJ7482",
"companyName": "Incutex",
"firstName": "John",
"lastName": "Lock",
"address1": "108 8th Av.",
"address2": "8th Floor",
"zip": "10008",
"city": "New York",
"state": "NY",
"personalPhone": "9727414574",
"workPhone": "9177563046",
"fax": "8004578796",
"email": "john.lock@mailinator.com",
"invoiceNumber": "000001"
}
]
This endpoint gets a invoice customer.
HTTP Request
GET https://sandbox.surepay.co/api/v1/Invoice/<merchantGuid>/InvoiceCustomers
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
merchantGuid | Merchant’s guid to get |
Response
- 200 code (ok).
Invoice
Create invoice
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Invoice
{
public static void CreateInvoice()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice");
request.ContentType = "text/json";
request.Method = "POST";
var invoice = new
{
MerchantGuid = "19344275-985e-4dff-81ee-cb84b8ad356c",
InvoiceCustomerGuid = "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
InvoiceNumber = "ARG001MAX",
OrderNumber = "0001",
PaymentTerm = "Custom",
DueDate = "07/25/2018",
Details = new Detail[]
{
new Detail{
ItemDescription = "Wine Malbec",
Rate = 14.78,
Quantity = 8
},
new Detail{
ItemDescription = "Rum",
Rate = 9.85,
Quantity = 4
},
new Detail{
ItemDescription = "Brandy",
Rate = 11.80,
Quantity = 2
},
new Detail{
ItemDescription = "Rum",
Rate = 9.85,
Quantity = 4
}
},
DiscountType = "Fixed",
DiscountValue = 5.00,
TaxZip = "10029",
TaxAmount = 8.85,
TaxRate = 5.785,
Note = "For september services",
TermsAndConditions = "The ones you accepted when you clicked two pages ago",
SendStatus = "Scheduled To be Sent",
SendDate = "07/20/2018",
InvoiceRecipientEmail = "john.lock@mailinator.com",
SendBySMS = true,
SendToPhoneNumber = "9174355176",
EnhancedData = new
{
SaleTax = 5,
PurchaseOrder = "PURCHSEORDER1",
OrderDate = "07/20/2018",
AdditionalTaxDetailTaxCategory = "tex",
AdditionalTaxDetailTaxType = "regional",
AdditionalTaxDetailTaxAmount = 3,
AdditionalTaxDetailTaxRate = 2.50,
ShippingCharges = 20,
DutyCharges = 17.59,
ShipToZip = "50001",
ShipFromZip = "55100",
DestinationCountryCode = "ARG",
CustomerVATNumber = "75010101",
VATInvoice = "231465214",
SummaryCommodityCode = "Aa94",
SupplierReferenceNumber = "123",
CustomerRefID = "123",
ChargeDescriptor = "lalala"
}
};
string json = JsonConvert.SerializeObject(invoice);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"MerchantGuid" : "19344275-985e-4dff-81ee-cb84b8ad356c",
"InvoiceCustomerGuid" : "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
"InvoiceNumber" : "ARG001MAX",
"OrderNumber" : "0001",
"PaymentTerm" : "Custom",
"DueDate" : "07/25/2018",
"Details":
[
{
"ItemDescription":"Wine Malbec",
"Rate":14.78,
"Quantity": 8
},
{
"ItemDescription":"Rum",
"Rate":9.85,
"Quantity": 4
},
{
"ItemDescription":"Brandy",
"Rate":11.80,
"Quantity": 2
},
{
"ItemDescription":"Cigars",
"Rate": 44.89,
"Quantity": 3
}
],
"DiscountType" : "Fixed",
"DiscountValue" : 5.00,
"TaxZip" : "10029",
"TaxAmount" : 8.85,
"TaxRate" : 5.785,
"Note" : "For september services",
"TermsAndConditions" : "The ones you accepted when you clicked two pages ago",
"SendStatus" : "Scheduled To be Sent",
"SendDate" : "07/20/2018",
"InvoiceRecipientEmail" : "john.lock@mailinator.com",
"SendBySMS" : true,
"SendToPhoneNumber" : "9174355176",
"EnhancedData":
{
"SaleTax" : 5,
"PurchaseOrder" : "PURCHSEORDER1",
"OrderDate" : "07/20/2018",
"AdditionalTaxDetailTaxCategory" : "tex",
"AdditionalTaxDetailTaxType" : "regional",
"AdditionalTaxDetailTaxAmount" : 3,
"AdditionalTaxDetailTaxRate" : 2.50,
"ShippingCharges" : 20,
"DutyCharges" : 17.59,
"ShipToZip" : "50001",
"ShipFromZip" : "55100",
"DestinationCountryCode" : "ARG",
"CustomerVATNumber": "75010101",
"VATInvoice" : "231465214",
"SummaryCommodityCode" : "Aa94",
"SupplierReferenceNumber" : "123",
"CustomerRefID" : "123",
"ChargeDescriptor" : "lalala"
}
}
Json Example Response:
{
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"timeStamp": "2018-07-04T08:33:05.45-03:00",
"merchantGuid": "19344275-985e-4dff-81ee-cb84b8ad356c",
"invoiceCustomerGuid": "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
"sendDate": "2018-07-20T00:00:00",
"sendStatus": "Scheduled To be Sent",
"invoiceRecipientEmail": "john.lock@mailinator.com",
"paymentTerm": "Custom",
"dueDate": "2018-07-25T00:00:00",
"invoiceNumber": "ARG001MAX",
"orderNumber": "0001",
"amountSubTotal": 315.91,
"amountDueTotal": 328.89,
"amountDiscounted": 5,
"discountValue": 5,
"discountType": "Fixed",
"taxRate": 5.785,
"taxAmount": 17.98,
"taxZip": "10029",
"note": "For september services",
"termsAndConditions": "The ones you accepted when you clicked two pages ago",
"enhancedData": {
"saleTax": 5,
"purchaseOrder": "PURCHSEORDER1",
"additionalTaxDetailTaxCategory": "tex",
"additionalTaxDetailTaxType": "regional",
"additionalTaxDetailTaxAmount": 3,
"additionalTaxDetailTaxRate": 2.5,
"shippingCharges": 20,
"dutyCharges": 17.59,
"shipToZip": "50001",
"shipFromZip": "55100",
"destinationCountryCode": "ARG",
"customerVATNumber": "75010101",
"summaryCommodityCode": "Aa94",
"vatInvoice": "231465214",
"orderDate": "07/20/2018",
"supplierReferenceNumber": "123",
"customerRefID": "123",
"chargeDescriptor": "lalala"
},
"details": [
{
"guid": "ed85d22a-a8e8-4a97-b549-f9a735e7ab75",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Wine Malbec",
"rate": 14.78,
"quantity": 8,
"amount": 118.24,
"isDeleted": false
},
{
"guid": "cdd55ede-e648-467d-b8b3-e553c7f1b561",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Rum",
"rate": 9.85,
"quantity": 4,
"amount": 39.4,
"isDeleted": false
},
{
"guid": "d568eb74-2bfa-4072-ad35-172f13898343",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Brandy",
"rate": 11.8,
"quantity": 2,
"amount": 23.6,
"isDeleted": false
},
{
"guid": "efb3e968-85da-4643-b56f-13c716dc58d8",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Cigars",
"rate": 44.89,
"quantity": 3,
"amount": 134.67,
"isDeleted": false
}
],
"reminders": [
{
"guid": "b51d548c-5e03-40a1-bc03-77fd953d643a",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"reminderType": "5 days before due date",
"isActive": true,
"isCompleted": false,
"reminderDate": "2018-07-20T00:00:00"
},
{
"guid": "e0684cdd-46b7-41fe-9a7b-a5c9e3424565",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"reminderType": "5 days after due date",
"isActive": true,
"isCompleted": false,
"reminderDate": "2018-07-30T00:00:00"
}
],
"merchant": {
"guid": "19344275-985e-4dff-81ee-cb84b8ad356c",
"mid": "1210000189539040",
"dba": "AudioBit",
"legalName": "AudioBit LLC",
"adminUserGuid": "8a1a455e-60ed-4a0d-a649-44e661d92a27",
"email": "audiobit@mailinator.com",
"phone": "9547218212",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "CO",
"zipcode": "10016",
"webhookUrl": "https://audiobit.com",
"mailingBcc": "maximilianotomassi11@mailinator.com",
"customerLabel": "patientId",
"logoUrl": "https://res.cloudinary.com/surepay/image/upload/v1516126617/uxuxkm3odb6lltibyeyj.png",
"allowsTips": true,
"status": "Merchant - Active",
"merchantOwners": [
{
"guid": "f1388a86-380e-4294-be5e-04886d7a9801",
"firstName": "aaa",
"lastName": "aaa",
"email": "aaa@aaa.com",
"phone": "9177874563",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "MO",
"zipcode": "10016",
"country": "US",
"ownerShipType": "Partnership",
"ownerShipPercentage": "100.00",
"status": "MerchantOwner - Active",
"last4_SSN": "1234"
},
{
"guid": "cd057c76-e237-4515-9b4b-295061598186",
"firstName": "James",
"lastName": "Dean",
"email": "jamesdean@surtech.com",
"phone": "9177874563",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "NY",
"zipcode": "10016",
"country": "US",
"ownerShipType": "Partnership",
"ownerShipPercentage": "100.00",
"status": "MerchantOwner - Active",
"last4_SSN": "1234"
}
]
},
"invoiceCustomer": {
"guid": "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
"customerCode": "GX8426",
"companyName": "Incutex",
"firstName": "Albus",
"lastName": "Dumbledore",
"address1": "108 8th Av.",
"address2": "8th Floor",
"zip": "10008",
"city": "New York",
"state": "NY",
"personalPhone": "9727414574",
"workPhone": "9177563046",
"fax": "8004578796",
"email": "john.lock@mailinator.com"
},
"sendBySMS": true,
"sendToPhoneNumber": "9174355176"
}
This endpoint creates a invoice.
HTTP Request
POST https://sandbox.surepay.co/api/v1/Invoice
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
MerchantGuid | string | Mandatory | Merchant's Guid. |
InvoiceCustomerGuid | string | Mandatory | InvoiceCustomer's Guid. |
InvoiceNumber | string | Mandatory | Invoice Number. |
OrderNumber | string | Optional | Order number. Length = 17. |
PaymentTerm | string | Optional | The term of payments. Allowed values: 1. Custom 2. Due on Receipt 3. Due end of month 4. Due end of next month 5. Net 15 6. Net 30 7. Net 45 8. Net 60 |
DueDate | date | Optional | Due Date. Allowed format: MM-DD-YYYY. For example: 05-30-2018. |
DiscountType | string | Optional | Discount Type. Allowed values: 1. Fixed 2. Percentage |
DiscountValue | decimal | Optional | Discount Value. |
TaxZip | integer | Optional | Tax Zip. |
TaxAmount | decimal | Optional | Tax Amount. |
TaxRate | decimal | Optional | Tax Rate. |
Note | string | Optional | Note. |
TermsAndConditions | string | Optional | Terms And Conditions. |
SendStatus | string | Optional | Send Status. Allowed values: 1. Draft 2. Scheduled To be Sent 3. Scheduled To be SentEMAIL 4. Scheduled To be SentSMS |
SendDate | date | Optional | Send Date. Allowed format: MM-DD-YYYY. For example: 05-30-2018. |
InvoiceRecipientEmail | string | Optional | Valid email address. |
SendBySMS | boolean | Optional | True or False. |
SendToPhoneNumber | integer | Optional | Phone number. The phone number must be syntactically correct. For example, 4152345678. |
Details | object | Mandatory | See Details. |
EnhancedData | object | Optional | See EnhancedData. |
Response
- 201 code (created).
Update invoice
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Invoice
{
public static void UpdateInvoice()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice/00572c03-3536-4f48-b083-caf1a3d30c18");
request.ContentType = "text/json";
request.Method = "PUT";
var invoice = new
{
OrderNumber = "0001",
PaymentTerm = "Custom",
DueDate = "07/25/2018",
DiscountType = "Fixed",
DiscountValue = 5.00,
TaxZip = "10029",
TaxAmount = 8.85,
TaxRate = 5.785,
Note = "For september services",
TermsAndConditions = "The ones you accepted when you clicked two pages ago",
SendStatus = "Scheduled To be Sent",
SendDate = "07/20/2018",
InvoiceRecipientEmail = "john.lock@mailinator.com",
SendBySMS = true,
SendToPhoneNumber = "9174355176",
EnhancedData = new
{
SaleTax = 5,
PurchaseOrder = "PURCHSEORDER1",
OrderDate = "07/20/2018",
AdditionalTaxDetailTaxCategory = "tex",
AdditionalTaxDetailTaxType = "regional",
AdditionalTaxDetailTaxAmount = 3,
AdditionalTaxDetailTaxRate = 2.50,
ShippingCharges = 20,
DutyCharges = 17.59,
ShipToZip = "50001",
ShipFromZip = "55100",
DestinationCountryCode = "ARG",
CustomerVATNumber = "75010101",
VATInvoice = "231465214",
SummaryCommodityCode = "Aa94",
SupplierReferenceNumber = "123",
CustomerRefID = "123",
ChargeDescriptor = "lalala"
}
};
string json = JsonConvert.SerializeObject(invoice);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"OrderNumber" : "0001",
"PaymentTerm" : "Custom",
"DueDate" : "07/25/2018",
"DiscountType" : "Fixed",
"DiscountValue" : 5.00,
"TaxZip" : "10029",
"TaxAmount" : 8.85,
"TaxRate" : 5.785,
"Note" : "For september services",
"TermsAndConditions" : "The ones you accepted when you clicked two pages ago",
"SendStatus" : "Scheduled To be Sent",
"SendDate" : "07/20/2018",
"InvoiceRecipientEmail" : "john.lock@mailinator.com",
"SendBySMS" : true,
"SendToPhoneNumber" : "9174355176",
"EnhancedData":
{
"SaleTax" : 5,
"PurchaseOrder" : "PURCHSEORDER1",
"OrderDate" : "07/20/2018",
"AdditionalTaxDetailTaxCategory" : "tex",
"AdditionalTaxDetailTaxType" : "regional",
"AdditionalTaxDetailTaxAmount" : 3,
"AdditionalTaxDetailTaxRate" : 2.50,
"ShippingCharges" : 20,
"DutyCharges" : 17.59,
"ShipToZip" : "50001",
"ShipFromZip" : "55100",
"DestinationCountryCode" : "ARG",
"CustomerVATNumber": "75010101",
"VATInvoice" : "231465214",
"SummaryCommodityCode" : "Aa94",
"SupplierReferenceNumber" : "123",
"CustomerRefID" : "123",
"ChargeDescriptor" : "lalala"
}
}
Json Example Response:
{
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"timeStamp": "2018-07-04T08:33:05.45-03:00",
"merchantGuid": "19344275-985e-4dff-81ee-cb84b8ad356c",
"invoiceCustomerGuid": "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
"sendDate": "2018-07-20T00:00:00",
"sendStatus": "Scheduled To be Sent",
"invoiceRecipientEmail": "john.lock@mailinator.com",
"paymentTerm": "Custom",
"dueDate": "2018-07-25T00:00:00",
"invoiceNumber": "ARG001MAX",
"orderNumber": "0001",
"amountSubTotal": 315.91,
"amountDueTotal": 328.9,
"amountDiscounted": 5,
"discountValue": 5,
"discountType": "Fixed",
"taxRate": 5.785,
"taxAmount": 17.98,
"taxZip": "10029",
"note": "For september services",
"termsAndConditions": "The ones you accepted when you clicked two pages ago",
"enhancedData": {
"saleTax": 5,
"purchaseOrder": "PURCHSEORDER1",
"additionalTaxDetailTaxCategory": "tex",
"additionalTaxDetailTaxType": "regional",
"additionalTaxDetailTaxAmount": 3,
"additionalTaxDetailTaxRate": 2.5,
"shippingCharges": 20,
"dutyCharges": 17.59,
"shipToZip": "50001",
"shipFromZip": "55100",
"destinationCountryCode": "ARG",
"customerVATNumber": "75010101",
"summaryCommodityCode": "Aa94",
"vatInvoice": "231465214",
"orderDate": "MM/DD/YYYY",
"supplierReferenceNumber": "123",
"customerRefID": "123",
"chargeDescriptor": "lalala"
},
"details": [
{
"guid": "ed85d22a-a8e8-4a97-b549-f9a735e7ab75",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Wine Malbec",
"rate": 14.78,
"quantity": 8,
"amount": 118.24,
"isDeleted": false
},
{
"guid": "cdd55ede-e648-467d-b8b3-e553c7f1b561",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Rum",
"rate": 9.85,
"quantity": 4,
"amount": 39.4,
"isDeleted": false
},
{
"guid": "d568eb74-2bfa-4072-ad35-172f13898343",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Brandy",
"rate": 11.8,
"quantity": 2,
"amount": 23.6,
"isDeleted": false
},
{
"guid": "efb3e968-85da-4643-b56f-13c716dc58d8",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Cigars",
"rate": 44.89,
"quantity": 3,
"amount": 134.67,
"isDeleted": false
}
],
"reminders": [
{
"guid": "b51d548c-5e03-40a1-bc03-77fd953d643a",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"reminderType": "5 days before due date",
"isActive": false,
"isCompleted": false,
"reminderDate": "2018-07-20T00:00:00"
},
{
"guid": "e0684cdd-46b7-41fe-9a7b-a5c9e3424565",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"reminderType": "5 days after due date",
"isActive": true,
"isCompleted": false,
"reminderDate": "2018-07-30T00:00:00"
}
],
"merchant": {
"guid": "19344275-985e-4dff-81ee-cb84b8ad356c",
"mid": "1210000189539040",
"dba": "AudioBit",
"legalName": "AudioBit LLC",
"adminUserGuid": "8a1a455e-60ed-4a0d-a649-44e661d92a27",
"email": "audiobit@mailinator.com",
"phone": "9547218212",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "CO",
"zipcode": "10016",
"webhookUrl": "https://audiobit.com",
"mailingBcc": "maximilianotomassi11@mailinator.com",
"customerLabel": "patientId",
"logoUrl": "https://res.cloudinary.com/surepay/image/upload/v1516126617/uxuxkm3odb6lltibyeyj.png",
"allowsTips": true,
"status": "Merchant - Active",
"merchantOwners": [
{
"guid": "f1388a86-380e-4294-be5e-04886d7a9801",
"firstName": "aaa",
"lastName": "aaa",
"email": "aaa@aaa.com",
"phone": "9177874563",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "MO",
"zipcode": "10016",
"country": "US",
"ownerShipType": "Partnership",
"ownerShipPercentage": "100.00",
"status": "MerchantOwner - Active",
"last4_SSN": "1234"
},
{
"guid": "cd057c76-e237-4515-9b4b-295061598186",
"firstName": "James",
"lastName": "Dean",
"email": "jamesdean@surtech.com",
"phone": "9177874563",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "NY",
"zipcode": "10016",
"country": "US",
"ownerShipType": "Partnership",
"ownerShipPercentage": "100.00",
"status": "MerchantOwner - Active",
"last4_SSN": "1234"
}
]
},
"invoiceCustomer": {
"guid": "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
"customerCode": "GX8426",
"companyName": "Incutex",
"firstName": "Albus",
"lastName": "Dumbledore",
"address1": "108 8th Av.",
"address2": "8th Floor",
"zip": "10008",
"city": "New York",
"state": "NY",
"personalPhone": "9727414574",
"workPhone": "9177563046",
"fax": "8004578796",
"email": "john.lock@mailinator.com"
},
"sendBySMS": true,
"sendToPhoneNumber": "9174355176"
}
This endpoint updates a invoice.
HTTP Request
PUT https://sandbox.surepay.co/api/v1/Invoice/<guid>
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Invoice’s guid to update |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
OrderNumber | string | Optional | Order number. Length = 17. |
PaymentTerm | string | Optional | The term of payments. Allowed values: 1. Custom 2. Due on Receipt 3. Due end of month 4. Due end of next month 5. Net 15 6. Net 30 7. Net 45 8. Net 60 |
DueDate | date | Optional | Due Date. Allowed format: MM-DD-YYYY. For example: 05-30-2018. |
DiscountType | string | Optional | Discount Type. Allowed values: 1. Fixed 2. Percentage |
DiscountValue | decimal | Optional | Discount Value. |
TaxZip | integer | Optional | Tax Zip. |
TaxAmount | decimal | Optional | Tax Amount. |
TaxRate | decimal | Optional | Tax Rate. |
Note | string | Optional | Note. |
TermsAndConditions | string | Optional | Terms And Conditions. |
SendStatus | string | Optional | Send Status. Allowed values: 1. Draft 2. Scheduled To be Sent 3. Scheduled To be SentEMAIL 4. Scheduled To be SentSMS |
SendDate | date | Optional | Send Date. Allowed format: MM-DD-YYYY. For example: 05-30-2018. |
InvoiceRecipientEmail | string | Optional | Valid email address. |
SendBySMS | boolean | Optional | True or False. |
SendToPhoneNumber | integer | Optional | Phone number. The phone number must be syntactically correct. For example, 4152345678. |
EnhancedData | object | Optional | See EnhancedData. |
Response
- 200 code (ok).
Get invoice
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class Invoice
{
public static void GetInvoice()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice/89e6c76c-35fe-4360-95ca-6e4c0eb49bdc");
request.Method = "GET";
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Response:
{
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"timeStamp": "2018-07-04T08:33:05.45-03:00",
"merchantGuid": "19344275-985e-4dff-81ee-cb84b8ad356c",
"invoiceCustomerGuid": "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
"sendDate": "2018-07-20T00:00:00",
"sendStatus": "Scheduled To be Sent",
"invoiceRecipientEmail": "john.lock@mailinator.com",
"paymentTerm": "Custom",
"dueDate": "2018-07-25T00:00:00",
"invoiceNumber": "ARG001MAX",
"orderNumber": "0001",
"amountSubTotal": 315.91,
"amountDueTotal": 328.9,
"amountDiscounted": 5,
"discountValue": 5,
"discountType": "Fixed",
"taxRate": 5.785,
"taxAmount": 17.98,
"taxZip": "10029",
"note": "For september services",
"termsAndConditions": "The ones you accepted when you clicked two pages ago",
"enhancedData": {
"saleTax": 5,
"purchaseOrder": "PURCHSEORDER1",
"additionalTaxDetailTaxCategory": "tex",
"additionalTaxDetailTaxType": "regional",
"additionalTaxDetailTaxAmount": 3,
"additionalTaxDetailTaxRate": 2.5,
"shippingCharges": 20,
"dutyCharges": 17.59,
"shipToZip": "50001",
"shipFromZip": "55100",
"destinationCountryCode": "ARG",
"customerVATNumber": "75010101",
"summaryCommodityCode": "Aa94",
"vatInvoice": "231465214",
"orderDate": "MM/DD/YYYY",
"supplierReferenceNumber": "123",
"customerRefID": "123",
"chargeDescriptor": "lalala"
},
"details": [
{
"guid": "ed85d22a-a8e8-4a97-b549-f9a735e7ab75",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Wine Malbec",
"rate": 14.78,
"quantity": 8,
"amount": 118.24,
"isDeleted": false
},
{
"guid": "cdd55ede-e648-467d-b8b3-e553c7f1b561",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Rum",
"rate": 9.85,
"quantity": 4,
"amount": 39.4,
"isDeleted": false
},
{
"guid": "d568eb74-2bfa-4072-ad35-172f13898343",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Brandy",
"rate": 11.8,
"quantity": 2,
"amount": 23.6,
"isDeleted": false
},
{
"guid": "efb3e968-85da-4643-b56f-13c716dc58d8",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"itemDescription": "Cigars",
"rate": 44.89,
"quantity": 3,
"amount": 134.67,
"isDeleted": false
}
],
"reminders": [
{
"guid": "b51d548c-5e03-40a1-bc03-77fd953d643a",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"reminderType": "5 days before due date",
"isActive": false,
"isCompleted": false,
"reminderDate": "2018-07-20T00:00:00"
},
{
"guid": "e0684cdd-46b7-41fe-9a7b-a5c9e3424565",
"invoiceGuid": "89e6c76c-35fe-4360-95ca-6e4c0eb49bdc",
"reminderType": "5 days after due date",
"isActive": true,
"isCompleted": false,
"reminderDate": "2018-07-30T00:00:00"
}
],
"merchant": {
"guid": "19344275-985e-4dff-81ee-cb84b8ad356c",
"mid": "1210000189539040",
"dba": "AudioBit",
"legalName": "AudioBit LLC",
"adminUserGuid": "8a1a455e-60ed-4a0d-a649-44e661d92a27",
"email": "audiobit@mailinator.com",
"phone": "9547218212",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "CO",
"zipcode": "10016",
"webhookUrl": "https://audiobit.com",
"mailingBcc": "maximilianotomassi11@mailinator.com",
"customerLabel": "patientId",
"logoUrl": "https://res.cloudinary.com/surepay/image/upload/v1516126617/uxuxkm3odb6lltibyeyj.png",
"allowsTips": true,
"status": "Merchant - Active",
"merchantOwners": [
{
"guid": "f1388a86-380e-4294-be5e-04886d7a9801",
"firstName": "aaa",
"lastName": "aaa",
"email": "aaa@aaa.com",
"phone": "9177874563",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "MO",
"zipcode": "10016",
"country": "US",
"ownerShipType": "Partnership",
"ownerShipPercentage": "100.00",
"status": "MerchantOwner - Active",
"last4_SSN": "1234"
},
{
"guid": "cd057c76-e237-4515-9b4b-295061598186",
"firstName": "James",
"lastName": "Dean",
"email": "jamesdean@surtech.com",
"phone": "9177874563",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "NY",
"zipcode": "10016",
"country": "US",
"ownerShipType": "Partnership",
"ownerShipPercentage": "100.00",
"status": "MerchantOwner - Active",
"last4_SSN": "1234"
}
]
},
"invoiceCustomer": {
"guid": "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
"customerCode": "GX8426",
"companyName": "Incutex",
"firstName": "Albus",
"lastName": "Dumbledore",
"address1": "108 8th Av.",
"address2": "8th Floor",
"zip": "10008",
"city": "New York",
"state": "NY",
"personalPhone": "9727414574",
"workPhone": "9177563046",
"fax": "8004578796",
"email": "john.lock@mailinator.com"
},
"sendBySMS": true,
"sendToPhoneNumber": "9174355176"
}
This endpoint gets a invoice.
HTTP Request
GET https://sandbox.surepay.co/api/v1/Invoice/<guid>
Headers using token
Key | Value |
---|---|
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Invoice’s guid to get |
Response
- 200 code (ok).
Invoice Detail
Add invoice detail
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class InvoiceDetail
{
public static void CreateInvoiceDetail()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice/Detail");
request.ContentType = "text/json";
request.Method = "POST";
var invoiceDetail = new
{
InvoiceGuid = "4be52be2-bedf-4125-b7d5-2ed9ef8d6027",
ItemDescription = "Sparkling Wine",
Rate = 1.95,
Quantity = 3
};
string json = JsonConvert.SerializeObject(invoiceDetail);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
{
"invoiceGuid" : "4be52be2-bedf-4125-b7d5-2ed9ef8d6027",
"ItemDescription":"Sparkling Wine",
"Rate":1.95,
"Quantity": 3
}
Json Example Response:
{
"guid": "13e6a6cb-c7a6-47e1-82da-ec8091b87d48",
"invoiceGuid": "4be52be2-bedf-4125-b7d5-2ed9ef8d6027",
"itemDescription": "Sparkling Wine",
"rate": 1.95,
"quantity": 3,
"amount": 5.85,
"isDeleted": false
}
This endpoint add a invoice detail.
HTTP Request
POST https://sandbox.surepay.co/api/v1/Invoice/Detail
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
InvoiceGuid | string | Mandatory | Invoice's Guid. |
ItemDescription | string | Mandatory | Item Description. |
Rate | decimal | Mandatory | Rate. |
Quantity | integer | Mandatory | Quantity. |
Response
- 201 code (created).
Create invoice details list
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class InvoiceDetail
{
public static void CreateInvoiceDetailsList()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice/Detail/all/e92d3395-34d8-4472-9ad3-62a183d6b030");
request.ContentType = "text/json";
request.Method = "PUT";
var invoiceDetailsList = new Detail[]
{
new Detail{
ItemDescription = "Wine Malbec",
Rate = 14.78,
Quantity = 8
},
new Detail{
ItemDescription = "Rum",
Rate = 9.85,
Quantity = 4
}
};
string json = JsonConvert.SerializeObject(invoiceDetailsList);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)response.StatusCode);
Console.WriteLine();
Console.WriteLine(response.StatusDescription);
Console.WriteLine(result);
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string result = reader.ReadToEnd();
Console.Write((int)errorResponse.StatusCode);
Console.WriteLine();
Console.WriteLine(errorResponse.StatusDescription);
Console.WriteLine(result);
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine(e);
}
}
}
}
Json Example Request:
[
{
"ItemDescription":"Wine Malbec",
"Rate":14.78,
"Quantity": 8
},
{
"ItemDescription":"Rum",
"Rate":9.85,
"Quantity": 4
}
]
Json Example Response:
{
"invoiceGuid": "e92d3395-34d8-4472-9ad3-62a183d6b030",
"timeStamp": "2018-07-04T13:39:28.68-03:00",
"merchantGuid": "19344275-985e-4dff-81ee-cb84b8ad356c",
"invoiceCustomerGuid": "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
"sendDate": "2018-07-20T00:00:00",
"sendStatus": "Scheduled To be Sent",
"invoiceRecipientEmail": "john.lock@mailinator.com",
"paymentTerm": "Custom",
"dueDate": "2018-07-25T00:00:00",
"invoiceNumber": "ARG001MAXYTRTU",
"orderNumber": "0001",
"amountSubTotal": 157.64,
"amountDueTotal": 161.47,
"amountDiscounted": 5,
"discountValue": 5,
"discountType": "Fixed",
"taxRate": 5.785,
"taxAmount": 8.83,
"taxZip": "10029",
"note": "For september services",
"termsAndConditions": "The ones you accepted when you clicked two pages ago",
"enhancedData": {
"saleTax": 5,
"purchaseOrder": "PURCHSEORDER1",
"additionalTaxDetailTaxCategory": "tex",
"additionalTaxDetailTaxType": "regional",
"additionalTaxDetailTaxAmount": 3,
"additionalTaxDetailTaxRate": 2.5,
"shippingCharges": 20,
"dutyCharges": 17.59,
"shipToZip": "50001",
"shipFromZip": "55100",
"destinationCountryCode": "ARG",
"customerVATNumber": "75010101",
"summaryCommodityCode": "Aa94",
"vatInvoice": "231465214",
"orderDate": "07/20/2018",
"supplierReferenceNumber": "123",
"customerRefID": "123",
"chargeDescriptor": "lalala"
},
"details": [
{
"guid": "c4438621-9d16-4434-9ab6-3a6b599ffea6",
"invoiceGuid": "e92d3395-34d8-4472-9ad3-62a183d6b030",
"itemDescription": "Wine Malbec",
"rate": 14.78,
"quantity": 8,
"amount": 118.24,
"isDeleted": false
},
{
"guid": "8dfd0749-0748-4b21-9ebc-af10a72c55ec",
"invoiceGuid": "e92d3395-34d8-4472-9ad3-62a183d6b030",
"itemDescription": "Rum",
"rate": 9.85,
"quantity": 4,
"amount": 39.4,
"isDeleted": false
}
],
"reminders": [
{
"guid": "a56ddc1b-9f4f-4ed7-947b-a654291fcd8a",
"invoiceGuid": "e92d3395-34d8-4472-9ad3-62a183d6b030",
"reminderType": "5 days before due date",
"isActive": true,
"isCompleted": false,
"reminderDate": "2018-07-20T00:00:00"
},
{
"guid": "0ddc0b29-ab5d-4bf5-be33-877099789df5",
"invoiceGuid": "e92d3395-34d8-4472-9ad3-62a183d6b030",
"reminderType": "5 days after due date",
"isActive": true,
"isCompleted": false,
"reminderDate": "2018-07-30T00:00:00"
}
],
"merchant": {
"guid": "19344275-985e-4dff-81ee-cb84b8ad356c",
"mid": "1210000189539040",
"dba": "AudioBit",
"legalName": "AudioBit LLC",
"adminUserGuid": "8a1a455e-60ed-4a0d-a649-44e661d92a27",
"email": "audiobit@mailinator.com",
"phone": "9547218212",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "CO",
"zipcode": "10016",
"webhookUrl": "https://audiobit.com",
"mailingBcc": "maximilianotomassi11@mailinator.com",
"customerLabel": "patientId",
"logoUrl": "https://res.cloudinary.com/surepay/image/upload/v1516126617/uxuxkm3odb6lltibyeyj.png",
"allowsTips": true,
"status": "Merchant - Active",
"merchantOwners": [
{
"guid": "f1388a86-380e-4294-be5e-04886d7a9801",
"firstName": "aaa",
"lastName": "aaa",
"email": "aaa@aaa.com",
"phone": "9177874563",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "MO",
"zipcode": "10016",
"country": "US",
"ownerShipType": "Partnership",
"ownerShipPercentage": "100.00",
"status": "MerchantOwner - Active",
"last4_SSN": "1234"
},
{
"guid": "cd057c76-e237-4515-9b4b-295061598186",
"firstName": "James",
"lastName": "Dean",
"email": "jamesdean@surtech.com",
"phone": "9177874563",
"address1": "151 E 33rd ST",
"address2": "Second Floor",
"city": "New York",
"state": "NY",
"zipcode": "10016",
"country": "US",
"ownerShipType": "Partnership",
"ownerShipPercentage": "100.00",
"status": "MerchantOwner - Active",
"last4_SSN": "1234"
}
]
},
"invoiceCustomer": {
"guid": "9dcceb12-f084-4346-a03d-ed46a6c35d4e",
"customerCode": "GX8426",
"companyName": "Incutex",
"firstName": "Albus",
"lastName": "Dumbledore",
"address1": "108 8th Av.",
"address2": "8th Floor",
"zip": "10008",
"city": "New York",
"state": "NY",
"personalPhone": "9727414574",
"workPhone": "9177563046",
"fax": "8004578796",
"email": "john.lock@mailinator.com"
},
"sendBySMS": true,
"sendToPhoneNumber": "9174355176"
}
This endpoint create a invoice details list.
HTTP Request
PUT https://sandbox.surepay.co/api/v1/Invoice/Detail/all/<guid>
Headers using token
Key | Value |
---|---|
Content-Type | "application/json" |
Authorization | Token. Eg: "Bearer eHSN5rTBzqDozgAAlN1UlTMVuIT1zSiAZWCo6E..." |
Headers using API Key
Key | Value |
---|---|
Content-Type | "application/json" |
UserAuthorization | API Key. Eg: "e516b6db-3230-4b1c-ae3f-e5379b774a80" |
URL Parameters
Parameter | Description |
---|---|
guid | Invoice’s guid |
Query Parameters
Parameter | Type | M/C/O | Value |
---|---|---|---|
ItemDescription | string | Mandatory | Item Description. |
Rate | decimal | Mandatory | Rate. |
Quantity | integer | Mandatory | Quantity. |
Response
- 201 code (created).
Invoice Reminder
Create invoice reminder
using System;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using System.Text;
namespace SurePaySample
{
public class InvoiceReminder
{
public static void CreateInvoiceReminder()
{
try
{
var request = (HttpWebRequest)WebRequest.Create("https://sandbox.surepay.co/api/v1/Invoice/Reminder");
request.ContentType = "text/json";
request.Method = "POST";
var invoiceReminder = new
{
InvoiceGuid = "d5828cfd-12a6-4a7e-9be6-7c4b11f07dbf",
ReminderType = "2 weeks after due date"
};
string json = JsonConvert.SerializeObject(invoiceReminder);
request.Headers.Add("Authorization", "Bearer 1A089D6ziUybPZFQ3mpPyjt9OEx9yrCs7eQIC6V3A0lmXR2N6-seGNK16Gsnl3td6Ilfbr2Xf_EyukFXwnVEO3fYL-LuGw-L3c8WuaoxhPE8MMdlMPILJTIOV3lTGGdxbFXdKd9U03bbJ9TDUkqxHqq8_VyyjDrw7fs0YOob7bg0OovXTeWgIvZaIrSR1WFR06rYJ0DfWn-Inuf7re1-4SMOjY1ZoCelVwduWCBJpw1111cNbWtHJfObV8u1CVf0");
request.ContentType = "application/json";
request.Accept = "application/json";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
var response =