NAV Navbar
csharp Json

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

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.
Email 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

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

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

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

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

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.
Email 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.
Email string Optional User’s valid email address

Response

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.
Email string Optional User’s valid email address

Response

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

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

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

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

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

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

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

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 =