NAV Navbar
Logo
cURL Ruby Php Java C# Android Objective-C

Introduction

Singular Payments’ API Developer Info

The Singular API is REST Based API and is designed to have resource-oriented, predictable and easy-to-use HTTP response code for client interaction. The APIs can be utilized for payments integration into your software or on your website and a variety of bill presentment and payment API options are also available to create a full-circle solution.

The environment section provides information to sandbox environment. Any payment data submitted in the sandbox environment will not be transmitted to the credit card networks and will never actually initiate a payment or attempt to move money. JSON is returned on all our API resources and we are constantly updating the API documentation by adding client specific code samples.

Last updated on, May 08 , 2017 © Singular Payments.

Environment

SANDOX https://devapi.singularbillpay.com

Your test API key is included in all the examples on this page, so you can test any example right away. .

PRODUCTION https://devapi.singularbillpay.com

Sandbox

https://devapi.singularbillpay.com

Production

https://api.singularbillpay.com

Required Parameters in all calls

Parameter Name Description
partnerkey API Key provide by Singular BillPAY platform
partnerid Partner ID assigned by Singular BillPAY platform

Parameter values for Sandbox

Parameter Name Test Value
partnerkey mobile-api-user-login
partnerid demo

Parameters

sbpProfile Object

Make sure to replace tokenizedaccountnumber with the tokenized account number.

{
  "partnerkey": "string",
  "partnerid": "string",
  "tokenizedaccountnumber": "string",
  "paymentmode": "string",
  "expirymmyy": "string",
  "cvv": "string",
  "routingnumber": "string",
  "currency": "string",
  "payeefirstname": "string",
  "payeelastname": "string",
  "address": "string",
  "city": "string",
  "state": "string",
  "country": "string",
  "zip": "string",
  "email": "string",
  "orderid": "string",
  "payeeid": "string",
  "udfield1": "string",
  "udfield2": "string",
  "udfield3": "string",
  "profileid": "string",
}

Required Fields

Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
payeeid string Required Partner Customer/Payee Id
payeefirstname string Required Payee First Name
profileid string conditional ProfileId to delete an existing profile.Required for “delete” operation ONLY

Conditional Fields

Attribute Type Required Description
paymentmode string optional Mode of payment.Possible values are “card” or “check”
tokenizedaccountnumber string conditional Tokenized card number or account number in case of “card” or “check”
expirymmyy string conditional Credit card expiration date in mmyy format
cvv string conditional Credit Card Security code.
routingnumber string conditional Bank routing number in the case of check transactions

Optional Fields

Attribute Type Required Description
currency string optional Currency of transaction.Defaults to “USD”.
payeelastname string optional Payee Last Name
address string optional Payee Billing Address.
city string optional Payee Billing City.
state string optional Payee Billing State.
country string optional Payee Billing Country.
zip string optional Payee Billing Zipcode.
email string optional Payee Email address.
orderid string optional Partner Order Id.
udfield1 string optional Additional fields for reporting needs
udfield2 string optional Additional fields for reporting needs
udfield3 string optional Additional fields for reporting needs

sbpRequest Object

Make sure to replace tokenizedaccountnumber with the tokenized account number.

{
  "partnerkey": "string",
  "partnerid": "string",
  "transactiontype": "string",
  "tokenizedaccountnumber": "string",
  "paymentmode": "string",
  "expirymmyy": "string",
  "cvv": "string",
  "routingnumber": "string",
  "transactionamount": "string",
  "surchargeamount": "string",
  "currency": "string",
  "payeefirstname": "string",
  "payeelastname": "string",
  "address": "string",
  "city": "string",
  "state": "string",
  "country": "string",
  "zip": "string",
  "email": "string",
  "orderid": "string",
  "payeeid": "string",
  "udfield1": "string",
  "udfield2": "string",
  "udfield3": "string",
  "profile": "string",
  "profileid": "string",
  "transactionreference": "string"
}

Required Fields

Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
transactiontype string Required Specify the transaction type.Possible values “authonly”, “auth”, “capture”, “refund” and “void”

Conditional Fields

Attribute Type Required Description
paymentmode string conditional Mode of payment.Possible values are “card” , “check” or “profile” when transactiontype is “authonly” or “auth”
payeefirstname string Required Payee First Name.Required when transactiontype is “authonly” or “auth”
payeelastname string Required Payee Last Name.Required when transactiontype is “authonly” or “auth”
tokenizedaccountnumber string conditional Tokenized card number or account number in case of “card” or “check”
expirymmyy string conditional Credit card expiration date in mmyy format
cvv string conditional Credit Card Security code.
routingnumber string conditional Bank routing number in the case of check transactions
transactionamount string conditional Amount to authorize , charge or refund.
payeeid string conditional Partner Customer/Payee Id.This is needed if “profile” is set to “y”
profileid string conditional ProfileId to use to charge against a past transaction
transactionreference string conditional Transaction ReferenceId used for void or return for voiding a previous transaction

Optional Fields

Attribute Type Required Description
surchargeamount string conditional Not used now
currency string optional Currency of transaction.Defaults to “USD”.
address string optional Payee Billing Address.
city string optional Payee Billing City.
state string optional Payee Billing State.
country string optional Payee Billing Country.
zip string optional Payee Billing Zipcode.
email string optional Payee Email address.
orderid string optional Partner Order Id.
udfield1 string optional Additional fields for reporting needs
udfield2 string optional Additional fields for reporting needs
udfield3 string optional Additional fields for reporting needs
profile string optional Flag to indicate if Singular BillPAY system should store the card for feature transactions.Possible values “y” or “n”

sbpRecurringRequest Object

Make sure to replace tokenizedaccountnumber with the tokenized account number.

{
  "partnerkey": "string",
  "partnerid": "string",
  "tokenizedaccountnumber": "string",
  "paymentmode": "string",
  "expirymmyy": "string",
  "cvv": "string",
  "routingnumber": "string",
  "recurringamount": "string",
  "paymentstartdate": "string",
  "paymentenddate": "string",
  "nextpaymentdate": "string",
  "amountoutstanding": "string",
  "frequency": "string",
  "currency": "string",
  "payeefirstname": "string",
  "payeelastname": "string",
  "address": "string",
  "city": "string",
  "state": "string",
  "country": "string",
  "zip": "string",
  "email": "string",
  "orderid": "string",
  "payeeid": "string",
  "udfield1": "string",
  "udfield2": "string",
  "udfield3": "string",
  "profileid": "string",
}
Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
payeeid string conditional Partner Customer/Payee Id.
payeefirstname string Required Payee First Name
payeelastname string Required Payee Last Name

Conditional Fields

Attribute Type Required Description
paymentmode string conditional Mode of payment.Possible values are “card” , “check” or “profile”
tokenizedaccountnumber string conditional Tokenized card number or account number in case of “card” or “check”
expirymmyy string conditional Credit card expiration date in mmyy format
cvv string conditional Credit Card Security code.
routingnumber string conditional Bank routing number in the case of check transactions
recurringamount string conditional Amount to charge on a recurring basis
paymentstartdate string conditional Start date of recurring payment
paymentenddate string conditional End date of recurring payment.If “amountoutstanding” and “paymentenddate” is specified, recurring payment will run till the “amountoutstanding” is 0 or till “paymentenddate” is met.
amountoutstanding string conditional Outstanding balance.This is reduced everytime the recurring payment is made.If “amountoutstanding” and “paymentenddate” is specified, recurring payment will run till the “amountoutstanding” is 0 or till “paymentenddate” is met.
frequency string conditional Interval in days between payments.If not specified, defaults to 30
profileid string conditional ProfileId to use to cancel a recurring transaction

Optional Fields

Attribute Type Required Description
nextpaymentdate string optional Next payment date can be set to start the first payment if its different from payment start date.Also returned when querying recurring payments.
currency string optional Currency of transaction.Defaults to “USD”.
address string optional Payee Billing Address.
city string optional Payee Billing City.
state string optional Payee Billing State.
country string optional Payee Billing Country.
zip string optional Payee Billing Zipcode.
email string optional Payee Email address.
orderid string optional Partner Order Id.
udfield1 string optional Additional fields for reporting needs
udfield2 string optional Additional fields for reporting needs
udfield3 string optional Additional fields for reporting needs

sbpResponse Object

{
  "tokenizedaccountnumber": "string",
  "paymentmode": "string",
  "transactionamount": "string",
  "surchargeamount": "string",
  "currency": "string",
  "payeename": "string",
  "address": "string",
  "city": "string",
  "state": "string",
  "country": "string",
  "zip": "string",
  "email": "string",
  "orderid": "string",
  "payeeid": "string",
  "profileid": "string",
  "transactionreference": "string",
  "transactionid": "string",
  "responsecode": "string",
  "responsestatus": "string",
  "responsemessage": "string"
}
Attribute Type Description
tokenizedaccountnumber string Tokenized card number or account number
paymentmode string Mode of payment.Possible values are “card” or “check”
transactionamount string Amount charged
surchargeamount string Not used now.
currency string Currency of transaction.Defaults to “USD”.
payeename string Payee Name
address string Payee Billing Address.
city string Payee Billing City.
state string Payee Billing State.
country string Payee Billing Country.
zip string Payee Billing Zipcode.
email string Payee Email address.
orderid string Partner Order Id.
payeeid string Partner Customer/Payee Id
profileid string ProfileId generated if “profile” flag was set to “yes” in the request
transactionreference string Gateway Transaction Reference Number.
transactionid string Singular BillPAY transaction Id
responsecode string Gateway issues transaction auth code
responsestatus string Either APPROVED or FAILED based on the transaction status
responsemessage string Message from the gateway

sbpQueryRequest Object

{
  "partnerkey": "mobile-api-user-login",
  "partnerid": "demo",
  "fromdate": "1/10/2017",
  "todate": "1/31/2017",
  "transactionreference": null,
  "payeeid": null,
  "orderid": null,
  "paymentmode": null
}
Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY

Optional Fields

Attribute Type Required Description
fromdate string optional From date to filter by.If not provided, defaults to 90 days back from today
todate string optional To date to filter by.If not provided, defaults to today
transactionreference string optional Gateway Transaction Reference Number.Optional parameter
payeeid string optional Payee/Customer id generally provided by the partner.Optional parameter
orderid string optional OrderId generally provided by the partner.Optional parameter
paymentmode string optional Filter by payment type.Possible values “check”.Defaults to “card”

sbpMerchant Object

{
  "partnerkey": "string",
  "partnerid": "string",
  "clientId": "string",
  "salesCode": "string",
  "email": "string",
  "dbaName": "string",
  "legalName": "string",
  "merchantCategoryCode": "string",
  "ownershipType": "string",
  "taxId": "string",
  "businessAddress": "string",
  "businessCity": "string",
  "businessState": "string",
  "businessZip": "string",
  "businessPhoneNumber": "string",
  "businessWebsite": "string",
  "monthlyVolume": "string",
  "averageTicket": "string",
  "highTicket": "string",
  "swipedPercent": "string",
  "keyedPercent": "string",
  "ecomPercent": "string",
  "signerFirstName": "string",
  "signerLastName": "string",
  "signerTitle": "string",
  "signerAddress": "string",
  "signerCity": "string",
  "signerState": "string",
  "signerZip": "string",
  "signerPhoneNumber": "string",
  "signerDateOfBirth": "string",
  "accountHolderName": "string",
  "bankAccountNumber": "string",
  "bankRoutingNumber": "string"
}
Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
clientId string Required Client Issued Id to identify the merchant
salescode string Required Provided by Singular BillPAY
email string Required Merchant email address
dbaName string Required Merchant Doing business as name
merchantCategoryCode string Required Merchant category code
ownershipType string Required Ownership type.Possible values are listed below.
taxId string Required Federal TaxID
businessAddress string Required Primary business address
businessCity string Required Primary business city
businessState string Required Primary business state (2 character)
businessZip string Required Primary business zipcode
businessPhoneNumber string Required Primary business phone number
monthlyVolume string Required Monthly volume rounded to the thousand (no decimal)
averageTicket string Required Average sales amount rounded to next dollar
highTicket string Required Highest sales amount rounded to next dollar
signerFirstName string Required Primary Principal or Signer First name
signerLastName string Required Primary Principal or Signer Last name
signerAddress string Required Primary Principal residential address
signerCity string Required Primary Principal residential city
signerState string Required Primary Principal residential state (2 character)
signerZip string Required Primary Principal residential zip

Optional Fields

Attribute Type Required Description
legalName string optional Merchant Legal Name. Leave blank if same as DBA Name
businessWebsite string optional Business Website (required for eCommerce business)
swipedPercent string optional Processing Methods Percentages: Card Present/Swiped Percentage in numeric(eg : 25)
keyedPercent string optional Card Not Present/Keyed Percentage in numeric (eg : 50)
ecomPercent string optional eCommerce Percentage in numeric (eg : 25)
signerTitle string optional Primary Principal or Signer Title
signerPhoneNumber string optional Primary Principal or Signer phone number
signerDateOfBirth string optional Primary Principal or Signer date of birth
accountHolderName string optional Name on bank account
bankAccountNumber string optional Bank Account Number
bankRoutingNumber string optional Bank routing Number

OwnershipType values

OwnershipType Description
c C Corporation
gov Government
llc Limited Liability Company
llp Limited Liability Partnership
np Non-Profit Charitable Organization
p Partnership
po Political Organization
s S Corporation
sp Sole Proprietor
te Other Tax Exempt

Profile

Create

POST https://devapi.singularbillpay.com/v1/profile/create

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' -d '{ \ 
  "partnerkey": "mobile-api-user-login",\
  "partnerid": "demo",\
  "transactiontype": "profile",\
  "tokenizedaccountnumber": "4111111111111111",\
  "paymentmode": "card",\
  "expirymmyy": "1221",\
  "cvv": null,\
  "routingnumber": null,\
  "payeefirstname": "Binod",\
  "payeelastname": "Nair",\
  "address": "123 Street",\
  "city": "Lego City",\
  "state": "Lego State",\
  "country": "US",\
  "zip": "75025",\
  "email": "nairbinod@gmail.com",\
  "orderid": "mar_13_1213",\
  "payeeid": "march_13_1213",\
  "udfield1": null,\
  "udfield2": null,\
  "udfield3": null,\
  "notifypayee": null,\
  "profile": null,\
  "profileid": null \
 }' 'https://devapi.singularbillpay.com/v1/profile/create'

# create SbpProfile object
sbp_profile = SingularApi::SbpProfile.new(:address => "sample address", :city => "sample city", :country => "sample country", :currency => "sample currency", :cvv => "sample cvv", :email => "sample email", :expirymmyy => "sample expirymmyy", :orderid => "sample orderid", :partnerid => "sample partnerid", :partnerkey => "sample partnerkey", :payeefirstname => "sample payeefirstname", :payeeid => "sample payeeid", :payeelastname => "sample payeelastname", :paymentmode => "sample paymentmode", :profileid => "sample profileid", :routingnumber => "sample routingnumber", :state => "sample state", :tokenizedaccountnumber => "sample tokenizedaccountnumber", :udfield1 => "sample udfield1", :udfield2 => "sample udfield2", :udfield3 => "sample udfield3", :zip => "sample zip")

begin
  v1_api = SingularApi::V1Api.new
  # return SbpProfile (model)
  response = v1_api.create_profile(sbp_profile)
  p response
rescue SingularApi::ApiError => e
  puts "Failed to call API! Error: #{e}"
  puts "Response code: #{e.code}"
  puts "Response headers: #{e.response_headers}"
  puts "Response body: #{e.response_body}"
end

// initialize the API client with default base URL: https://api.singularbillpay.com
$api_client = new SingularApi\ApiClient();

// create SbpProfile object
$sbpProfile = new SingularApi\Model\SbpProfile();
$sbpProfile->setAddress("sample address");
$sbpProfile->setCity("sample city");
$sbpProfile->setCountry("sample country");
$sbpProfile->setCurrency("sample currency");
$sbpProfile->setCvv("sample cvv");
$sbpProfile->setEmail("sample email");
$sbpProfile->setExpirymmyy("sample expirymmyy");
$sbpProfile->setOrderid("sample orderid");
$sbpProfile->setPartnerid("sample partnerid");
$sbpProfile->setPartnerkey("sample partnerkey");
$sbpProfile->setPayeefirstname("sample payeefirstname");
$sbpProfile->setPayeeid("sample payeeid");
$sbpProfile->setPayeelastname("sample payeelastname");
$sbpProfile->setPaymentmode("sample paymentmode");
$sbpProfile->setProfileid("sample profileid");
$sbpProfile->setRoutingnumber("sample routingnumber");
$sbpProfile->setState("sample state");
$sbpProfile->setTokenizedaccountnumber("sample tokenizedaccountnumber");
$sbpProfile->setUdfield1("sample udfield1");
$sbpProfile->setUdfield2("sample udfield2");
$sbpProfile->setUdfield3("sample udfield3");
$sbpProfile->setZip("sample zip");

try {
    $v1_api = new SingularApi\Api\V1API($api_client);
    // return SbpProfile (model)
    $response = $v1_api->createProfile($sbpProfile);
    print_r($response);
} catch (SingularApi\ApiException $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    echo 'Resepone Header: ', print_r($e->getResponseHeaders(), true), "\n";
    echo 'Resepone Body: ', $e->getResponseBody(), "\n";
}


// create SbpProfile object
SbpProfile sbpProfile = new SbpProfile();
sbpProfile.setAddress("sampleAddress");
sbpProfile.setCity("sampleCity");
sbpProfile.setCountry("sampleCountry");
sbpProfile.setCurrency("sampleCurrency");
sbpProfile.setCvv("sampleCvv");
sbpProfile.setEmail("sampleEmail");
sbpProfile.setExpirymmyy("sampleExpirymmyy");
sbpProfile.setOrderid("sampleOrderid");
sbpProfile.setPartnerid("samplePartnerid");
sbpProfile.setPartnerkey("samplePartnerkey");
sbpProfile.setPayeefirstname("samplePayeefirstname");
sbpProfile.setPayeeid("samplePayeeid");
sbpProfile.setPayeelastname("samplePayeelastname");
sbpProfile.setPaymentmode("samplePaymentmode");
sbpProfile.setProfileid("sampleProfileid");
sbpProfile.setRoutingnumber("sampleRoutingnumber");
sbpProfile.setState("sampleState");
sbpProfile.setTokenizedaccountnumber("sampleTokenizedaccountnumber");
sbpProfile.setUdfield1("sampleUdfield1");
sbpProfile.setUdfield2("sampleUdfield2");
sbpProfile.setUdfield3("sampleUdfield3");
sbpProfile.setZip("sampleZip");

try {
    V1Api v1Api = new V1Api();
    SbpProfile response = v1Api.createProfile(sbpProfile);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

> POST https://devapi.singularbillpay.com/v1/transaction

// create SbpProfile object
SWGSbpProfile *sbpProfile = [[SWGSbpProfile alloc] initWithDictionary:@{@"address": @"sample address", @"city": @"sample city", @"country": @"sample country", @"currency": @"sample currency", @"cvv": @"sample cvv", @"email": @"sample email", @"expirymmyy": @"sample expirymmyy", @"orderid": @"sample orderid", @"partnerid": @"sample partnerid", @"partnerkey": @"sample partnerkey", @"payeefirstname": @"sample payeefirstname", @"payeeid": @"sample payeeid", @"payeelastname": @"sample payeelastname", @"paymentmode": @"sample paymentmode", @"profileid": @"sample profileid", @"routingnumber": @"sample routingnumber", @"state": @"sample state", @"tokenizedaccountnumber": @"sample tokenizedaccountnumber", @"udfield1": @"sample udfield1", @"udfield2": @"sample udfield2", @"udfield3": @"sample udfield3", @"zip": @"sample zip"} error:nil];

@try
{
    SWGV1Api *v1Api = [[SWGV1Api alloc] init];



    // calling api method
    [v1Api createProfileWithCompletionBlock:sbpProfile
                          completionHandler:^(SWGSbpProfile *output, NSError *error) {
                              if (output) {
                                  NSLog(@"%@", output);
                              }

                              if (error) {
                                  NSLog(@"Error: %@", error);
                              }

                          }];
 }
@catch (NSException *exception)
{
    NSLog(@"%@ ",exception.name);
    NSLog(@"Reason: %@ ",exception.reason);
}

// create SbpProfile object
SbpProfile sbpProfile = new SbpProfile();
sbpProfile.setAddress("sampleAddress");
sbpProfile.setCity("sampleCity");
sbpProfile.setCountry("sampleCountry");
sbpProfile.setCurrency("sampleCurrency");
sbpProfile.setCvv("sampleCvv");
sbpProfile.setEmail("sampleEmail");
sbpProfile.setExpirymmyy("sampleExpirymmyy");
sbpProfile.setOrderid("sampleOrderid");
sbpProfile.setPartnerid("samplePartnerid");
sbpProfile.setPartnerkey("samplePartnerkey");
sbpProfile.setPayeefirstname("samplePayeefirstname");
sbpProfile.setPayeeid("samplePayeeid");
sbpProfile.setPayeelastname("samplePayeelastname");
sbpProfile.setPaymentmode("samplePaymentmode");
sbpProfile.setProfileid("sampleProfileid");
sbpProfile.setRoutingnumber("sampleRoutingnumber");
sbpProfile.setState("sampleState");
sbpProfile.setTokenizedaccountnumber("sampleTokenizedaccountnumber");
sbpProfile.setUdfield1("sampleUdfield1");
sbpProfile.setUdfield2("sampleUdfield2");
sbpProfile.setUdfield3("sampleUdfield3");
sbpProfile.setZip("sampleZip");

try {
    V1Api v1Api = new V1Api();
    SbpProfile response = v1Api.createProfile(sbpProfile);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

// create SbpProfile object
SbpProfile sbpProfile = new SbpProfile();
sbpProfile.Address = "sample address";
sbpProfile.City = "sample city";
sbpProfile.Country = "sample country";
sbpProfile.Currency = "sample currency";
sbpProfile.Cvv = "sample cvv";
sbpProfile.Email = "sample email";
sbpProfile.Expirymmyy = "sample expirymmyy";
sbpProfile.Orderid = "sample orderid";
sbpProfile.Partnerid = "sample partnerid";
sbpProfile.Partnerkey = "sample partnerkey";
sbpProfile.Payeefirstname = "sample payeefirstname";
sbpProfile.Payeeid = "sample payeeid";
sbpProfile.Payeelastname = "sample payeelastname";
sbpProfile.Paymentmode = "sample paymentmode";
sbpProfile.Profileid = "sample profileid";
sbpProfile.Routingnumber = "sample routingnumber";
sbpProfile.State = "sample state";
sbpProfile.Tokenizedaccountnumber = "sample tokenizedaccountnumber";
sbpProfile.Udfield1 = "sample udfield1";
sbpProfile.Udfield2 = "sample udfield2";
sbpProfile.Udfield3 = "sample udfield3";
sbpProfile.Zip = "sample zip";

try
{
    // first arguemnt 'basePath' is optional or pass an instance of the Configuration class
    // V1Api v1Api = new V1Api(new Configuration());
    V1Api v1Api = new V1Api("https://api.singularbillpay.com");
    SbpProfile response = v1Api.CreateProfile(sbpProfile);
    Console.WriteLine(response);
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}

The above command returns JSON structured like this:

{
  "paymentmode": "Credit Card",
  "tokenizedaccountnumber": "9418594164541111",
  "expirymmyy": null,
  "cvv": null,
  "routingnumber": null,
  "currency": "USD",
  "orderid": "mar_13_1213",
  "udfield1": null,
  "udfield2": null,
  "udfield3": null,
  "profileid": "16786791835202703297",
  "payeeid": "march_13_1213",
  "payeefirstname": "Binod",
  "payeelastname": "Nair",
  "address": "123 Street",
  "city": "Lego City",
  "state": "Lego State",
  "country": "US",
  "zip": "75025",
  "email": "nairbinod@gmail.com",
  "partnerkey": null,
  "partnerid": null
}

Singular BillPAY has the ability to store information about the account holder, called a profile. You can process subsequent transactions or setup recurring payments by passing the profileid.The payment information is stored in a PCI compliant vault.

HTTP Request

POST /v1/profile/create

Parameters

Parameter Located in Required Schema
sbpProfile body Yes Defined in Parameter section

sbpProfile required atrributes

Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
payeeid string Required Partner Customer/Payee Id
payeefirstname string Required Payee First Name

Conditional Fields

Attribute Type Required Description
paymentmode string conditional Mode of payment.Possible values are “card” or “check”.Defaulted to “card” if not provided.
tokenizedaccountnumber string conditional Tokenized card number or account number in case of “card” or “check”
expirymmyy string conditional Credit card expiration date in mmyy format
routingnumber string conditional Bank routing number in the case of check transactions

Optional Fields

Attribute Type Required Description
currency string optional Currency of transaction.Defaults to “USD”.
payeelastname string optional Payee Last Name
address string optional Payee Billing Address.
city string optional Payee Billing City.
state string optional Payee Billing State.
country string optional Payee Billing Country.
zip string optional Payee Billing Zipcode.
email string optional Payee Email address.
orderid string optional Partner Order Id.
udfield1 string optional Additional fields for reporting needs
udfield2 string optional Additional fields for reporting needs
udfield3 string optional Additional fields for reporting needs

Response

Parameter Http Status Schema
sbpProfile 200 Defined in Parameter section

Delete

POST https://devapi.singularbillpay.com/v1/profile/delete

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' -d '{ \ 
    "partnerkey": "mobile-api-user-login", \ 
    "partnerid": "demo", \ 
    "payeeid": "jd_customer_id", \    
    "profileid": "123456789012" \   
 }' 'https://devapi.singularbillpay.com/v1/profile/delete'

# create SbpProfile object
sbp_profile = SingularApi::SbpProfile.new(:partnerid => "sample partnerid", :partnerkey => "sample partnerkey", 
:payeeid => "sample payeeid", :profileid => "123456789012")

begin
  v1_api = SingularApi::V1Api.new
  # return SbpProfile (model)
  response = v1_api.delete_profile(sbp_profile)
  p response
rescue SingularApi::ApiError => e
  puts "Failed to call API! Error: #{e}"
  puts "Response code: #{e.code}"
  puts "Response headers: #{e.response_headers}"
  puts "Response body: #{e.response_body}"
end

// initialize the API client with default base URL: https://api.singularbillpay.com
$api_client = new SingularApi\ApiClient();

// create SbpProfile object
$sbpProfile = new SingularApi\Model\SbpProfile();
$sbpProfile->setPartnerid("sample partnerid");
$sbpProfile->setPartnerkey("sample partnerkey");
$sbpProfile->setPayeeid("sample payeeid");
$sbpProfile->setProfileid("123456789012");

try {
    $v1_api = new SingularApi\Api\V1API($api_client);
    // return SbpProfile (model)
    $response = $v1_api->deleteProfile($sbpProfile);
    print_r($response);
} catch (SingularApi\ApiException $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    echo 'Reseponse Header: ', print_r($e->getResponseHeaders(), true), "\n";
    echo 'Response Body: ', $e->getResponseBody(), "\n";
}


// create SbpProfile object
SbpProfile sbpProfile = new SbpProfile();
sbpProfile.setPartnerid("samplePartnerid");
sbpProfile.setPartnerkey("samplePartnerkey");
sbpProfile.setPayeeid("samplePayeeid");
sbpProfile.setProfileid("sampleProfileid");

try {
    V1Api v1Api = new V1Api();
    SbpProfile response = v1Api.deleteProfile(sbpProfile);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

> POST https://devapi.singularbillpay.com/v1/transaction

// create SbpProfile object
SWGSbpProfile *sbpProfile = [[SWGSbpProfile alloc] initWithDictionary:@{@"partnerid": @"sample partnerid", @"partnerkey": @"sample partnerkey", @"payeeid": @"sample payeeid", @"profileid": @"sample profileid"} error:nil];

@try
{
    SWGV1Api *v1Api = [[SWGV1Api alloc] init];

    // calling api method
    [v1Api deleteProfileWithCompletionBlock:sbpProfile
                          completionHandler:^(SWGSbpProfile *output, NSError *error) {
                              if (output) {
                                  NSLog(@"%@", output);
                              }

                              if (error) {
                                  NSLog(@"Error: %@", error);
                              }

                          }];
 }
@catch (NSException *exception)
{
    NSLog(@"%@ ",exception.name);
    NSLog(@"Reason: %@ ",exception.reason);
}
getReport

// create SbpProfile object
SbpProfile sbpProfile = new SbpProfile();
sbpProfile.Partnerid = "sample partnerid";
sbpProfile.Partnerkey = "sample partnerkey";
sbpProfile.Payeeid = "sample payeeid";
sbpProfile.Profileid = "sample profileid";

try
{
    // first arguemnt 'basePath' is optional or pass an instance of the Configuration class
    // V1Api v1Api = new V1Api(new Configuration());
    V1Api v1Api = new V1Api("https://api.singularbillpay.com");
    SbpProfile response = v1Api.DeleteProfile(sbpProfile);
    Console.WriteLine(response);
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}

The above command returns JSON structured like this:

{
  "paymentmode": "credit",
  "tokenizedaccountnumber": "9418594164541111",
  "expirymmyy": "1221",
  "cvv": null,
  "routingnumber": null,
  "currency": "USD",
  "orderid": "mar_13_1213",
  "udfield1": null,
  "udfield2": null,
  "udfield3": null,
  "profileid": "13831671062120807202",
  "payeeid": "march_13_1213",
  "payeefirstname": "Binod",
  "payeelastname": "Nair",
  "address": "123 Street",
  "city": "Lego City",
  "state": "Lego State",
  "country": "US",
  "zip": "75025",
  "email": "nairbinod@gmail.com",
  "partnerkey": null,
  "partnerid": null
}

Delete an existing profile from the system and returns the deleted profile information.

HTTP Request

POST /v1/profile/delete

Parameters

Parameter Located in Required Schema
sbpProfile body Yes Defined in Parameter section

sbpProfile required atrributes

Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
payeeid string Required Partner Customer/Payee Id
profileid string Required ProfileId that needs to be deleted

Response

Parameter Http Status Schema
sbpProfile 200 Defined in Parameter section

Query

POST https://devapi.singularbillpay.com/v1/profile/query

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "partnerkey": "mobile-api-user-login",  \ 
    "partnerid": "demo",   \ 
    "fromdate": "01/01/2017", \ 
    "todate": "03/15/2017 ,  \ 
    "payeeid": "march_13_1213",   \ 
    "profileid": null,  \ 
    "orderid": null  \     
 }' 'https://devapi.singularbillpay.com/v1/profile/query'

# create SbpQueryRequest object
sbp_query_request = SingularApi::SbpQueryRequest.new(:fromdate => "sample fromdate", :orderid => "sample orderid", :partnerid => "sample partnerid", :partnerkey => "sample partnerkey", :payeeid => "sample payeeid", :profileid => "sample profileid", :todate => "sample todate", :transactionreference => "sample transactionreference")

begin
  v1_api = SingularApi::V1Api.new
  # return Array of SbpProfile (model)
  response = v1_api.query_profile(sbp_query_request)
  p response
rescue SingularApi::ApiError => e
  puts "Failed to call API! Error: #{e}"
  puts "Response code: #{e.code}"
  puts "Response headers: #{e.response_headers}"
  puts "Response body: #{e.response_body}"
end

// initialize the API client with default base URL: https://api.singularbillpay.com
$api_client = new SingularApi\ApiClient();

// create SbpQueryRequest object
$sbpQueryRequest = new SingularApi\Model\SbpQueryRequest();
$sbpQueryRequest->setFromdate("sample fromdate");
$sbpQueryRequest->setOrderid("sample orderid");
$sbpQueryRequest->setPartnerid("sample partnerid");
$sbpQueryRequest->setPartnerkey("sample partnerkey");
$sbpQueryRequest->setPayeeid("sample payeeid");
$sbpQueryRequest->setProfileid("sample profileid");
$sbpQueryRequest->setTodate("sample todate");
$sbpQueryRequest->setTransactionreference("sample transactionreference");

try {
    $v1_api = new SingularApi\Api\V1API($api_client);
    // return Array of SbpProfile (model)
    $response = $v1_api->queryProfile($sbpQueryRequest);
    print_r($response);
} catch (SingularApi\ApiException $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    echo 'Resepone Header: ', print_r($e->getResponseHeaders(), true), "\n";
    echo 'Resepone Body: ', $e->getResponseBody(), "\n";
}

// create SbpQueryRequest object
SbpQueryRequest sbpQueryRequest = new SbpQueryRequest();
sbpQueryRequest.setFromdate("sampleFromdate");
sbpQueryRequest.setOrderid("sampleOrderid");
sbpQueryRequest.setPartnerid("samplePartnerid");
sbpQueryRequest.setPartnerkey("samplePartnerkey");
sbpQueryRequest.setPayeeid("samplePayeeid");
sbpQueryRequest.setProfileid("sampleProfileid");
sbpQueryRequest.setTodate("sampleTodate");
sbpQueryRequest.setTransactionreference("sampleTransactionreference");

try {
    V1Api v1Api = new V1Api();
    List<SbpProfile> response = v1Api.queryProfile(sbpQueryRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

// create SbpQueryRequest object
SWGSbpQueryRequest *sbpQueryRequest = [[SWGSbpQueryRequest alloc] initWithDictionary:@{@"fromdate": @"sample fromdate", @"orderid": @"sample orderid", @"partnerid": @"sample partnerid", @"partnerkey": @"sample partnerkey", @"payeeid": @"sample payeeid", @"profileid": @"sample profileid", @"todate": @"sample todate", @"transactionreference": @"sample transactionreference"} error:nil];

@try
{
    SWGV1Api *v1Api = [[SWGV1Api alloc] init];



    // calling api method
    [v1Api queryProfileWithCompletionBlock:sbpQueryRequest
                         completionHandler:^(NSArray *output, NSError *error) {
                             if (output) {
                                 NSLog(@"%@", output);
                             }

                             if (error) {
                                 NSLog(@"Error: %@", error);
                             }

                         }];
 }
@catch (NSException *exception)
{
    NSLog(@"%@ ",exception.name);
    NSLog(@"Reason: %@ ",exception.reason);
}

// create SbpQueryRequest object
SbpQueryRequest sbpQueryRequest = new SbpQueryRequest();
sbpQueryRequest.setFromdate("sampleFromdate");
sbpQueryRequest.setOrderid("sampleOrderid");
sbpQueryRequest.setPartnerid("samplePartnerid");
sbpQueryRequest.setPartnerkey("samplePartnerkey");
sbpQueryRequest.setPayeeid("samplePayeeid");
sbpQueryRequest.setProfileid("sampleProfileid");
sbpQueryRequest.setTodate("sampleTodate");
sbpQueryRequest.setTransactionreference("sampleTransactionreference");

try {
    V1Api v1Api = new V1Api();
    List<SbpProfile> response = v1Api.queryProfile(sbpQueryRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

// create SbpQueryRequest object
SbpQueryRequest sbpQueryRequest = new SbpQueryRequest();
sbpQueryRequest.Fromdate = "sample fromdate";
sbpQueryRequest.Orderid = "sample orderid";
sbpQueryRequest.Partnerid = "sample partnerid";
sbpQueryRequest.Partnerkey = "sample partnerkey";
sbpQueryRequest.Payeeid = "sample payeeid";
sbpQueryRequest.Profileid = "sample profileid";
sbpQueryRequest.Todate = "sample todate";
sbpQueryRequest.Transactionreference = "sample transactionreference";

try
{
    // first arguemnt 'basePath' is optional or pass an instance of the Configuration class
    // V1Api v1Api = new V1Api(new Configuration());
    V1Api v1Api = new V1Api("https://api.singularbillpay.com");
    List<SbpProfile> response = v1Api.QueryProfile(sbpQueryRequest);
    Console.WriteLine(response);
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}

The above command returns JSON structured like this:

[
  {
    "paymentmode": "credit",
    "tokenizedaccountnumber": "9418594164541111",
    "expirymmyy": "1221",
    "cvv": null,
    "routingnumber": null,
    "currency": "USD",
    "orderid": null,
    "udfield1": null,
    "udfield2": null,
    "udfield3": null,
    "profileid": "18918887115673940578",
    "payeeid": "march_13_1213",
    "payeefirstname": "Binod",
    "payeelastname": "Nair",
    "address": null,
    "city": null,
    "state": null,
    "country": null,
    "zip": null,
    "email": "nairbinod@gmail.com",
    "partnerkey": null,
    "partnerid": null
  }
]

Query all the existing active profiles in the system.

HTTP Request

POST /v1/profile/query

Parameters

Parameter Located in Required Schema
sbpQueryRequest body Yes Defined in Parameter section

sbpQueryRequest required atrributes

Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY

Optional Fields

Attribute Type Required Description
fromdate string optional From date to filter by.If not provided, defaults to 90 days back from today
todate string optional To date to filter by.If not provided, defaults to today
payeeid string optional Payee/Customer id generally provided by the partner.Optional parameter
orderid string optional OrderId generally provided by the partner.Optional parameter
paymentmode string optional Filter by payment type.Possible values “check”.Defaults to “card”

Response

Parameter Http Status Schema
sbpProfile 200 Defined in Parameter section

Transactions

Post

POST https://devapi.singularbillpay.com/v1/transaction

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' -d '{ \ 
   "partnerkey": "mobile-api-user-login", \ 
   "partnerid": "demo", \ 
   "transactiontype": "auth", \ 
   "tokenizedaccountnumber": "4111111111111111", \ 
   "paymentmode": "card", \ 
   "expirymmyy": "1221", \ 
   "cvv": "123", \ 
   "routingnumber": null, \ 
   "transactionamount": "123.45", \ 
   "surchargeamount": null, \ 
   "currency": "USD", \ 
   "payeefirstname": "John", \ 
   "payeelastname": "Doe", \ 
   "address": "123 Street", \ 
   "city": "Lego City", \ 
   "state": "Legoland", \ 
   "country": "US", \ 
   "zip": "12345", \ 
   "email": "celerisupport@singularpayments.com", \ 
   "orderid": "123456_feb_2017", \ 
   "payeeid": "jd_customer_id", \ 
   "udfield1": null, \ 
   "udfield2": null, \ 
   "udfield3": null, \ 
   "profile": "no", \ 
   "profileid": null, \ 
   "transactionreference": null \ 
 }' 'https://devapi.singularbillpay.com/v1/Transaction'

# create SbpRequest object
sbp_request = SingularApi::SbpRequest.new(:address => "sample address", :city => "sample city", :country => "sample country", :currency => "sample currency", :cvv => "sample cvv", :email => "sample email", :expirymmyy => "sample expirymmyy", :orderid => "sample orderid", :partnerid => "sample partnerid", :partnerkey => "sample partnerkey", :payeefirstname => "sample payeefirstname", :payeeid => "sample payeeid", :payeelastname => "sample payeelastname", :paymentmode => "sample paymentmode", :profile => "sample profile", :profileid => "sample profileid", :routingnumber => "sample routingnumber", :state => "sample state", :surchargeamount => "sample surchargeamount", :tokenizedaccountnumber => "sample tokenizedaccountnumber", :transactionamount => "sample transactionamount", :transactionreference => "sample transactionreference", :transactiontype => "sample transactiontype", :udfield1 => "sample udfield1", :udfield2 => "sample udfield2", :udfield3 => "sample udfield3", :zip => "sample zip")

begin
  v1_api = SingularApi::V1Api.new
  # return SbpResponse (model)
  response = v1_api.post_transaction(sbp_request)
  p response
rescue SingularApi::ApiError => e
  puts "Failed to call API! Error: #{e}"
  puts "Response code: #{e.code}"
  puts "Response headers: #{e.response_headers}"
  puts "Response body: #{e.response_body}"
end
// initialize the API client with default base URL: https://api.singularbillpay.com
$api_client = new SingularApi\ApiClient();

// create SbpRequest object
$sbpRequest = new SingularApi\Model\SbpRequest();
$sbpRequest->setAddress("sample address");
$sbpRequest->setCity("sample city");
$sbpRequest->setCountry("sample country");
$sbpRequest->setCurrency("sample currency");
$sbpRequest->setCvv("sample cvv");
$sbpRequest->setEmail("sample email");
$sbpRequest->setExpirymmyy("sample expirymmyy");
$sbpRequest->setOrderid("sample orderid");
$sbpRequest->setPartnerid("sample partnerid");
$sbpRequest->setPartnerkey("sample partnerkey");
$sbpRequest->setPayeefirstname("sample payeefirstname");
$sbpRequest->setPayeeid("sample payeeid");
$sbpRequest->setPayeelastname("sample payeelastname");
$sbpRequest->setPaymentmode("sample paymentmode");
$sbpRequest->setProfile("sample profile");
$sbpRequest->setProfileid("sample profileid");
$sbpRequest->setRoutingnumber("sample routingnumber");
$sbpRequest->setState("sample state");
$sbpRequest->setSurchargeamount("sample surchargeamount");
$sbpRequest->setTokenizedaccountnumber("sample tokenizedaccountnumber");
$sbpRequest->setTransactionamount("sample transactionamount");
$sbpRequest->setTransactionreference("sample transactionreference");
$sbpRequest->setTransactiontype("sample transactiontype");
$sbpRequest->setUdfield1("sample udfield1");
$sbpRequest->setUdfield2("sample udfield2");
$sbpRequest->setUdfield3("sample udfield3");
$sbpRequest->setZip("sample zip");

try {
    $v1_api = new SingularApi\Api\V1API($api_client);
    // return SbpResponse (model)
    $response = $v1_api->postTransaction($sbpRequest);
    print_r($response);
} catch (SingularApi\ApiException $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    echo 'Resepone Header: ', print_r($e->getResponseHeaders(), true), "\n";
    echo 'Resepone Body: ', $e->getResponseBody(), "\n";
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setAddress("sampleAddress");
sbpRequest.setCity("sampleCity");
sbpRequest.setCountry("sampleCountry");
sbpRequest.setCurrency("sampleCurrency");
sbpRequest.setCvv("sampleCvv");
sbpRequest.setEmail("sampleEmail");
sbpRequest.setExpirymmyy("sampleExpirymmyy");
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeefirstname("samplePayeefirstname");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setPayeelastname("samplePayeelastname");
sbpRequest.setPaymentmode("samplePaymentmode");
sbpRequest.setProfile("sampleProfile");
sbpRequest.setProfileid("sampleProfileid");
sbpRequest.setRoutingnumber("sampleRoutingnumber");
sbpRequest.setState("sampleState");
sbpRequest.setSurchargeamount("sampleSurchargeamount");
sbpRequest.setTokenizedaccountnumber("sampleTokenizedaccountnumber");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");
sbpRequest.setTransactiontype("sampleTransactiontype");
sbpRequest.setUdfield1("sampleUdfield1");
sbpRequest.setUdfield2("sampleUdfield2");
sbpRequest.setUdfield3("sampleUdfield3");
sbpRequest.setZip("sampleZip");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.postTransaction(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setAddress("sampleAddress");
sbpRequest.setCity("sampleCity");
sbpRequest.setCountry("sampleCountry");
sbpRequest.setCurrency("sampleCurrency");
sbpRequest.setCvv("sampleCvv");
sbpRequest.setEmail("sampleEmail");
sbpRequest.setExpirymmyy("sampleExpirymmyy");
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeefirstname("samplePayeefirstname");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setPayeelastname("samplePayeelastname");
sbpRequest.setPaymentmode("samplePaymentmode");
sbpRequest.setProfile("sampleProfile");
sbpRequest.setProfileid("sampleProfileid");
sbpRequest.setRoutingnumber("sampleRoutingnumber");
sbpRequest.setState("sampleState");
sbpRequest.setSurchargeamount("sampleSurchargeamount");
sbpRequest.setTokenizedaccountnumber("sampleTokenizedaccountnumber");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");
sbpRequest.setTransactiontype("sampleTransactiontype");
sbpRequest.setUdfield1("sampleUdfield1");
sbpRequest.setUdfield2("sampleUdfield2");
sbpRequest.setUdfield3("sampleUdfield3");
sbpRequest.setZip("sampleZip");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.postTransaction(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

// create SbpRequest object
SWGSbpRequest *sbpRequest = [[SWGSbpRequest alloc] initWithDictionary:@{@"address": @"sample address", @"city": @"sample city", @"country": @"sample country", @"currency": @"sample currency", @"cvv": @"sample cvv", @"email": @"sample email", @"expirymmyy": @"sample expirymmyy", @"orderid": @"sample orderid", @"partnerid": @"sample partnerid", @"partnerkey": @"sample partnerkey", @"payeefirstname": @"sample payeefirstname", @"payeeid": @"sample payeeid", @"payeelastname": @"sample payeelastname", @"paymentmode": @"sample paymentmode", @"profile": @"sample profile", @"profileid": @"sample profileid", @"routingnumber": @"sample routingnumber", @"state": @"sample state", @"surchargeamount": @"sample surchargeamount", @"tokenizedaccountnumber": @"sample tokenizedaccountnumber", @"transactionamount": @"sample transactionamount", @"transactionreference": @"sample transactionreference", @"transactiontype": @"sample transactiontype", @"udfield1": @"sample udfield1", @"udfield2": @"sample udfield2", @"udfield3": @"sample udfield3", @"zip": @"sample zip"} error:nil];

@try
{
    SWGV1Api *v1Api = [[SWGV1Api alloc] init];



    // calling api method
    [v1Api postTransactionWithCompletionBlock:sbpRequest
                            completionHandler:^(SWGSbpResponse *output, NSError *error) {
                                if (output) {
                                    NSLog(@"%@", output);
                                }

                                if (error) {
                                    NSLog(@"Error: %@", error);
                                }

                            }];
 }
@catch (NSException *exception)
{
    NSLog(@"%@ ",exception.name);
    NSLog(@"Reason: %@ ",exception.reason);
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.Address = "sample address";
sbpRequest.City = "sample city";
sbpRequest.Country = "sample country";
sbpRequest.Currency = "sample currency";
sbpRequest.Cvv = "sample cvv";
sbpRequest.Email = "sample email";
sbpRequest.Expirymmyy = "sample expirymmyy";
sbpRequest.Orderid = "sample orderid";
sbpRequest.Partnerid = "sample partnerid";
sbpRequest.Partnerkey = "sample partnerkey";
sbpRequest.Payeefirstname = "sample payeefirstname";
sbpRequest.Payeeid = "sample payeeid";
sbpRequest.Payeelastname = "sample payeelastname";
sbpRequest.Paymentmode = "sample paymentmode";
sbpRequest.Profile = "sample profile";
sbpRequest.Profileid = "sample profileid";
sbpRequest.Routingnumber = "sample routingnumber";
sbpRequest.State = "sample state";
sbpRequest.Surchargeamount = "sample surchargeamount";
sbpRequest.Tokenizedaccountnumber = "sample tokenizedaccountnumber";
sbpRequest.Transactionamount = "sample transactionamount";
sbpRequest.Transactionreference = "sample transactionreference";
sbpRequest.Transactiontype = "sample transactiontype";
sbpRequest.Udfield1 = "sample udfield1";
sbpRequest.Udfield2 = "sample udfield2";
sbpRequest.Udfield3 = "sample udfield3";
sbpRequest.Zip = "sample zip";

try
{
    // first arguemnt 'basePath' is optional or pass an instance of the Configuration class
    // V1Api v1Api = new V1Api(new Configuration());
    V1Api v1Api = new V1Api("https://api.singularbillpay.com");
    SbpResponse response = v1Api.PostTransaction(sbpRequest);
    Console.WriteLine(response);
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}

The above command returns JSON structured like this:

{
    "transactionamount": "126.54",
    "surchargeamount": null,
    "payeename": "John Doe",
    "transactionreference": "075040341565",
    "transactionid": "37723727-fca1-477b-b644-c4f7f65d788e",
    "responsecode": "PPS551",
    "responsestatus": "APPROVED",
    "responsemessage": "Approval",
    "paymentmode": "Credit Card",
    "tokenizedaccountnumber": "9418594164541111",
    "expirymmyy": null,
    "cvv": null,
    "routingnumber": null,
    "currency": "USD",
    "orderid": "123456_march_16",
    "udfield1": null,
    "udfield2": null,
    "udfield3": null,
    "profileid": null,
    "payeeid": "jd_0316_10:31",
    "payeefirstname": "John",
    "payeelastname": "Doe",
    "address": "123 Street",
    "city": "Lego City",
    "state": "Legoland",
    "country": "US",
    "zip": "12345",
    "email": null,
    "partnerkey": null,
    "partnerid": null
}

Deprecated method. Use this method to run all transactions “auth”, “authonly”, “capture”, “void” or “return”.You should use the transaction specific methods listed in the docs.The “post” method is provided for backward compatibility to our existing clients and is currently deprecated.

HTTP Request

POST /v1/transaction

Parameters

Parameter Located in Required Schema
sbpRequest body Yes Defined in Parameter section

sbpRequest required Fields

name type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
transactiontype string Required Specify the transaction type.Possible values “authonly” “auth”, “capture” , “refund” and “void”
tokenizedaccountnumber string optional Tokenized card number or account number
paymentmode string optional Mode of payment.Possible values are “card” or “check”
expirymmyy string optional Credit card expiration date in mmyy format
cvv string optional Credit Card Security code.
routingnumber string optional Bank routing number in the case of check transactions
transactionamount string optional Amount to charge
payeefirstname string optional Payee First Name
payeelastname string optional Payee Last Name
email string optional Payee Email address.

Response

Parameter Http Status Schema
sbpResponse 200 Defined in Parameter section

Authorize

POST https://devapi.singularbillpay.com/v1/transaction/auth

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "partnerkey": "mobile-api-user-login",  \ 
    "partnerid": "demo",   \ 
    "transactiontype": "auth", \ 
    "tokenizedaccountnumber": null ,  \ 
    "paymentmode": null,   \ 
    "expirymmyy": null,  \ 
    "cvv": null,  \ 
    "routingnumber": null,  \ 
    "transactionamount": "123.45",  \ 
    "surchargeamount": null,  \ 
    "currency": "USD",   \ 
    "payeefirstname": null,   \ 
    "payeelastname": null,   \ 
    "address": null,   \ 
    "city": null,   \ 
    "state": null,   \ 
    "country": null,   \ 
    "zip": null,   \ 
    "email": "celerisupport%40singularpayments.com",  \ 
    "orderid": null,   \ 
    "payeeid": null,  \ 
    "udfield1": null,   \ 
    "udfield2": null,   \ 
    "udfield3": null,   \ 
    "profile": "n",  \ 
    "profileid": null,   \ 
    "transactionreference": null \ 
 }' 'https://devapi.singularbillpay.com/v1/transaction/auth'

# create SbpRequest object
sbp_request = SingularApi::SbpRequest.new(:address => "sample address", :city => "sample city", :country => "sample country", :currency => "sample currency", :cvv => "sample cvv", :email => "sample email", :expirymmyy => "sample expirymmyy", :orderid => "sample orderid", :partnerid => "sample partnerid", :partnerkey => "sample partnerkey", :payeefirstname => "sample payeefirstname", :payeeid => "sample payeeid", :payeelastname => "sample payeelastname", :paymentmode => "sample paymentmode", :profile => "sample profile", :profileid => "sample profileid", :routingnumber => "sample routingnumber", :state => "sample state", :surchargeamount => "sample surchargeamount", :tokenizedaccountnumber => "sample tokenizedaccountnumber", :transactionamount => "sample transactionamount", :transactionreference => "sample transactionreference", :transactiontype => "auth", :udfield1 => "sample udfield1", :udfield2 => "sample udfield2", :udfield3 => "sample udfield3", :zip => "sample zip")

begin
  v1_api = SingularApi::V1Api.new
  # return SbpResponse (model)
  response = v1_api.post_transaction(sbp_request)
  p response
rescue SingularApi::ApiError => e
  puts "Failed to call API! Error: #{e}"
  puts "Response code: #{e.code}"
  puts "Response headers: #{e.response_headers}"
  puts "Response body: #{e.response_body}"
end
// initialize the API client with default base URL: https://api.singularbillpay.com
$api_client = new SingularApi\ApiClient();

// create SbpRequest object
$sbpRequest = new SingularApi\Model\SbpRequest();
$sbpRequest->setAddress("sample address");
$sbpRequest->setCity("sample city");
$sbpRequest->setCountry("sample country");
$sbpRequest->setCurrency("sample currency");
$sbpRequest->setCvv("sample cvv");
$sbpRequest->setEmail("sample email");
$sbpRequest->setExpirymmyy("sample expirymmyy");
$sbpRequest->setOrderid("sample orderid");
$sbpRequest->setPartnerid("sample partnerid");
$sbpRequest->setPartnerkey("sample partnerkey");
$sbpRequest->setPayeefirstname("sample payeefirstname");
$sbpRequest->setPayeeid("sample payeeid");
$sbpRequest->setPayeelastname("sample payeelastname");
$sbpRequest->setPaymentmode("sample paymentmode");
$sbpRequest->setProfile("sample profile");
$sbpRequest->setProfileid("sample profileid");
$sbpRequest->setRoutingnumber("sample routingnumber");
$sbpRequest->setState("sample state");
$sbpRequest->setSurchargeamount("sample surchargeamount");
$sbpRequest->setTokenizedaccountnumber("sample tokenizedaccountnumber");
$sbpRequest->setTransactionamount("sample transactionamount");
$sbpRequest->setTransactionreference("sample transactionreference");
$sbpRequest->setTransactiontype("sample transactiontype");
$sbpRequest->setUdfield1("sample udfield1");
$sbpRequest->setUdfield2("sample udfield2");
$sbpRequest->setUdfield3("sample udfield3");
$sbpRequest->setZip("sample zip");

try {
    $v1_api = new SingularApi\Api\V1API($api_client);
    // return SbpResponse (model)
    $response = $v1_api->postTransaction($sbpRequest);
    print_r($response);
} catch (SingularApi\ApiException $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    echo 'Resepone Header: ', print_r($e->getResponseHeaders(), true), "\n";
    echo 'Resepone Body: ', $e->getResponseBody(), "\n";
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setAddress("sampleAddress");
sbpRequest.setCity("sampleCity");
sbpRequest.setCountry("sampleCountry");
sbpRequest.setCurrency("sampleCurrency");
sbpRequest.setCvv("sampleCvv");
sbpRequest.setEmail("sampleEmail");
sbpRequest.setExpirymmyy("sampleExpirymmyy");
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeefirstname("samplePayeefirstname");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setPayeelastname("samplePayeelastname");
sbpRequest.setPaymentmode("samplePaymentmode");
sbpRequest.setProfile("sampleProfile");
sbpRequest.setProfileid("sampleProfileid");
sbpRequest.setRoutingnumber("sampleRoutingnumber");
sbpRequest.setState("sampleState");
sbpRequest.setSurchargeamount("sampleSurchargeamount");
sbpRequest.setTokenizedaccountnumber("sampleTokenizedaccountnumber");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");
sbpRequest.setTransactiontype("sampleTransactiontype");
sbpRequest.setUdfield1("sampleUdfield1");
sbpRequest.setUdfield2("sampleUdfield2");
sbpRequest.setUdfield3("sampleUdfield3");
sbpRequest.setZip("sampleZip");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.postTransaction(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setAddress("sampleAddress");
sbpRequest.setCity("sampleCity");
sbpRequest.setCountry("sampleCountry");
sbpRequest.setCurrency("sampleCurrency");
sbpRequest.setCvv("sampleCvv");
sbpRequest.setEmail("sampleEmail");
sbpRequest.setExpirymmyy("sampleExpirymmyy");
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeefirstname("samplePayeefirstname");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setPayeelastname("samplePayeelastname");
sbpRequest.setPaymentmode("samplePaymentmode");
sbpRequest.setProfile("sampleProfile");
sbpRequest.setProfileid("sampleProfileid");
sbpRequest.setRoutingnumber("sampleRoutingnumber");
sbpRequest.setState("sampleState");
sbpRequest.setSurchargeamount("sampleSurchargeamount");
sbpRequest.setTokenizedaccountnumber("sampleTokenizedaccountnumber");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");
sbpRequest.setTransactiontype("sampleTransactiontype");
sbpRequest.setUdfield1("sampleUdfield1");
sbpRequest.setUdfield2("sampleUdfield2");
sbpRequest.setUdfield3("sampleUdfield3");
sbpRequest.setZip("sampleZip");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.postTransaction(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

// create SbpRequest object
SWGSbpRequest *sbpRequest = [[SWGSbpRequest alloc] initWithDictionary:@{@"address": @"sample address", @"city": @"sample city", @"country": @"sample country", @"currency": @"sample currency", @"cvv": @"sample cvv", @"email": @"sample email", @"expirymmyy": @"sample expirymmyy", @"orderid": @"sample orderid", @"partnerid": @"sample partnerid", @"partnerkey": @"sample partnerkey", @"payeefirstname": @"sample payeefirstname", @"payeeid": @"sample payeeid", @"payeelastname": @"sample payeelastname", @"paymentmode": @"sample paymentmode", @"profile": @"sample profile", @"profileid": @"sample profileid", @"routingnumber": @"sample routingnumber", @"state": @"sample state", @"surchargeamount": @"sample surchargeamount", @"tokenizedaccountnumber": @"sample tokenizedaccountnumber", @"transactionamount": @"sample transactionamount", @"transactionreference": @"sample transactionreference", @"transactiontype": @"sample transactiontype", @"udfield1": @"sample udfield1", @"udfield2": @"sample udfield2", @"udfield3": @"sample udfield3", @"zip": @"sample zip"} error:nil];

@try
{
    SWGV1Api *v1Api = [[SWGV1Api alloc] init];



    // calling api method
    [v1Api postTransactionWithCompletionBlock:sbpRequest
                            completionHandler:^(SWGSbpResponse *output, NSError *error) {
                                if (output) {
                                    NSLog(@"%@", output);
                                }

                                if (error) {
                                    NSLog(@"Error: %@", error);
                                }

                            }];
 }
@catch (NSException *exception)
{
    NSLog(@"%@ ",exception.name);
    NSLog(@"Reason: %@ ",exception.reason);
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.Address = "sample address";
sbpRequest.City = "sample city";
sbpRequest.Country = "sample country";
sbpRequest.Currency = "sample currency";
sbpRequest.Cvv = "sample cvv";
sbpRequest.Email = "sample email";
sbpRequest.Expirymmyy = "sample expirymmyy";
sbpRequest.Orderid = "sample orderid";
sbpRequest.Partnerid = "sample partnerid";
sbpRequest.Partnerkey = "sample partnerkey";
sbpRequest.Payeefirstname = "sample payeefirstname";
sbpRequest.Payeeid = "sample payeeid";
sbpRequest.Payeelastname = "sample payeelastname";
sbpRequest.Paymentmode = "sample paymentmode";
sbpRequest.Profile = "sample profile";
sbpRequest.Profileid = "sample profileid";
sbpRequest.Routingnumber = "sample routingnumber";
sbpRequest.State = "sample state";
sbpRequest.Surchargeamount = "sample surchargeamount";
sbpRequest.Tokenizedaccountnumber = "sample tokenizedaccountnumber";
sbpRequest.Transactionamount = "sample transactionamount";
sbpRequest.Transactionreference = "sample transactionreference";
sbpRequest.Transactiontype = "sample transactiontype";
sbpRequest.Udfield1 = "sample udfield1";
sbpRequest.Udfield2 = "sample udfield2";
sbpRequest.Udfield3 = "sample udfield3";
sbpRequest.Zip = "sample zip";

try
{
    // first arguemnt 'basePath' is optional or pass an instance of the Configuration class
    // V1Api v1Api = new V1Api(new Configuration());
    V1Api v1Api = new V1Api("https://api.singularbillpay.com");
    SbpResponse response = v1Api.PostTransaction(sbpRequest);
    Console.WriteLine(response);
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}

The above command returns JSON structured like this:

{
  "transactionamount": "126.54",
  "surchargeamount": null,
  "payeename": "John Doe",
  "transactionreference": "075190345405",
  "transactionid": "9a897fe3-b21b-45cf-ad07-80869f870f30",
  "responsecode": "PPS599",
  "responsestatus": "APPROVED",
  "responsemessage": "Approval",
  "paymentmode": "Credit Card",
  "tokenizedaccountnumber": "9418594164541111",
  "expirymmyy": null,
  "cvv": null,
  "routingnumber": null,
  "currency": "USD",
  "orderid": "123456_march_16",
  "udfield1": null,
  "udfield2": null,
  "udfield3": null,
  "profileid": null,
  "payeeid": "jd_0316_10:31",
  "payeefirstname": "John",
  "payeelastname": "Doe",
  "address": "123 Street",
  "city": "Lego City",
  "state": "Legoland",
  "country": "US",
  "zip": "12345",
  "email": null,
  "partnerkey": null,
  "partnerid": null
}

Authorize a transaction for immediate charge or to authorize it now and charge it later using the “capture” method.You need to set the transactiontype to “auth” for immediate charge.Setting to “authonly” lets you authorize now and capture it at a later time.

By setting the “profile” attribute to “y” , the card/bank information will be saved in a PCI compliant vault and a profileid will be returned in the response. The “profileId” can be used for future transactions without providing the payment information.

HTTP Request

POST /v1/transaction/auth

Parameters

Parameter Located in Required Schema
sbpRequest body Yes Defined in Parameter section

sbpProfile required atrributes

Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
transactiontype string Required Specify the transaction type.Possible values “authonly” or “auth”
transactionamount string Required Amount to authorize .
paymentmode string Required Mode of payment.Possible values are “card” , “check” or “profile” when transactiontype is “authonly” or “auth”
payeefirstname string Required Payee First Name.
payeelastname string Required Payee Last Name.

Conditional Fields

Attribute Type Required Description
tokenizedaccountnumber string conditional Tokenized card number or account number in case of “card” or “check”
expirymmyy string conditional Credit card expiration date in mmyy format
cvv string conditional Credit Card Security code.
routingnumber string conditional Bank routing number in the case of check transactions
payeeid string conditional Partner Customer/Payee Id.This is needed if “profile” is set to “y”
profileid string conditional ProfileId to use to charge against a past transaction

Optional Fields

Attribute Type Required Description
surchargeamount string conditional Not used now
currency string optional Currency of transaction.Defaults to “USD”.
address string optional Payee Billing Address.
city string optional Payee Billing City.
state string optional Payee Billing State.
country string optional Payee Billing Country.
zip string optional Payee Billing Zipcode.
email string optional Payee Email address.
orderid string optional Partner Order Id.
udfield1 string optional Additional fields for reporting needs
udfield2 string optional Additional fields for reporting needs
udfield3 string optional Additional fields for reporting needs
profile string optional Flag to indicate if Singular BillPAY system should store the card for feature transactions.Possible values “y” or “n”

Response

Parameter Http Status Schema
sbpResponse 200 Defined in Parameter section

Capture

POST https://devapi.singularbillpay.com/v1/transaction/capture

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "partnerkey": "mobile-api-user-login",  \ 
    "partnerid": "demo",   \ 
    "transactionamount": "123.45", \ 
    "orderid": "march-03102017",   \ 
    "payeeid": "customer_id",  \ 
    "transactionreference": "046868363041" \ 
 }' 'http://devapi.singularbillpay.com/v1/Transaction/capture'

# create SbpRequest object
sbp_request = SingularApi::SbpRequest.new(:orderid => "sample orderid", :partnerid => "sample partnerid", :partnerkey => "sample partnerkey", :payeeid => "sample payeeid", :transactionamount => "sample transactionamount", :transactionreference => "sample transactionreference")

begin
  v1_api = SingularApi::V1Api.new
  # return SbpResponse (model)
  response = v1_api.capture(sbp_request)
  p response
rescue SingularApi::ApiError => e
  puts "Failed to call API! Error: #{e}"
  puts "Response code: #{e.code}"
  puts "Response headers: #{e.response_headers}"
  puts "Response body: #{e.response_body}"
end
// initialize the API client with default base URL: https://api.singularbillpay.com
$api_client = new SingularApi\ApiClient();

// create SbpRequest object
$sbpRequest = new SingularApi\Model\SbpRequest();
$sbpRequest->setOrderid("sample orderid");
$sbpRequest->setPartnerid("sample partnerid");
$sbpRequest->setPartnerkey("sample partnerkey");
$sbpRequest->setPayeeid("sample payeeid");
$sbpRequest->setTransactionamount("sample transactionamount");
$sbpRequest->setTransactionreference("sample transactionreference");

try {
    $v1_api = new SingularApi\Api\V1API($api_client);
    // return SbpResponse (model)
    $response = $v1_api->capture($sbpRequest);
    print_r($response);
} catch (SingularApi\ApiException $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    echo 'Resepone Header: ', print_r($e->getResponseHeaders(), true), "\n";
    echo 'Resepone Body: ', $e->getResponseBody(), "\n";
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.capture(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}
// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.capture(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}
// create SbpRequest object
SWGSbpRequest *sbpRequest = [[SWGSbpRequest alloc] initWithDictionary:@{@"orderid": @"sample orderid", @"partnerid": @"sample partnerid", @"partnerkey": @"sample partnerkey", @"payeeid": @"sample payeeid", @"transactionamount": @"sample transactionamount", @"transactionreference": @"sample transactionreference"} error:nil];

@try
{
    SWGV1Api *v1Api = [[SWGV1Api alloc] init];



    // calling api method
    [v1Api captureWithCompletionBlock:sbpRequest
                    completionHandler:^(SWGSbpResponse *output, NSError *error) {
                        if (output) {
                            NSLog(@"%@", output);
                        }

                        if (error) {
                            NSLog(@"Error: %@", error);
                        }

                    }];
 }
@catch (NSException *exception)
{
    NSLog(@"%@ ",exception.name);
    NSLog(@"Reason: %@ ",exception.reason);
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.Orderid = "sample orderid";
sbpRequest.Partnerid = "sample partnerid";
sbpRequest.Partnerkey = "sample partnerkey";
sbpRequest.Payeeid = "sample payeeid";
sbpRequest.Transactionamount = "sample transactionamount";
sbpRequest.Transactionreference = "sample transactionreference";

try
{
    // first arguemnt 'basePath' is optional or pass an instance of the Configuration class
    // V1Api v1Api = new V1Api(new Configuration());
    V1Api v1Api = new V1Api("https://api.singularbillpay.com");
    SbpResponse response = v1Api.Capture(sbpRequest);
    Console.WriteLine(response);
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}

The above command returns JSON structured like this:

{
  "transactionamount": "126.54",
  "surchargeamount": null,
  "payeename": "John Doe",
  "transactionreference": "075250346554",
  "transactionid": "ef6bbb09-d4ee-47c9-8084-13e0cd40ba75",
  "responsecode": "PPS627",
  "responsestatus": "APPROVED",
  "responsemessage": "Txn Settled",
  "paymentmode": "Credit Card",
  "tokenizedaccountnumber": "9418594164541111",
  "expirymmyy": null,
  "cvv": null,
  "routingnumber": null,
  "currency": "USD",
  "orderid": "123456_march_16",
  "udfield1": null,
  "udfield2": null,
  "udfield3": null,
  "profileid": null,
  "payeeid": "jd_0316_10:31",
  "payeefirstname": "John",
  "payeelastname": "Doe",
  "address": "123 Street",
  "city": "Lego City",
  "state": "Legoland",
  "country": "US",
  "zip": "12345",
  "email": null,
  "partnerkey": null,
  "partnerid": null
}

Captures a previously authorized transaction for the authorized amount or lesser amount.

HTTP Request

POST /v1/transaction/capture

Parameters

Parameter Located in Required Schema
sbpRequest body Yes Defined in Parameter section

sbpRequest required atrributes

Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
transactionreference string Required Transaction ReferenceId from the original authorization
transactionamount string Required Amount to capture.

Response

Parameter Http Status Schema
sbpResponse 200 Defined in Parameter section

Void

POST https://devapi.singularbillpay.com/v1/transaction/void

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "partnerkey": "mobile-api-user-login",  \ 
    "partnerid": "demo",   \ 
    "transactionamount": "123.45", \ 
    "orderid": "march-03102017",   \ 
    "payeeid": "customer_id",  \ 
    "transactionreference": "046868363041" \ 
 }' 'http://devapi.singularbillpay.com/v1/Transaction/void'
# create SbpRequest object
sbp_request = SingularApi::SbpRequest.new(:orderid => "sample orderid", :partnerid => "sample partnerid", :partnerkey => "sample partnerkey", :payeeid => "sample payeeid", :transactionamount => "sample transactionamount", :transactionreference => "sample transactionreference")

begin
  v1_api = SingularApi::V1Api.new
  # return SbpResponse (model)
  response = v1_api.void_transaction(sbp_request)
  p response
rescue SingularApi::ApiError => e
  puts "Failed to call API! Error: #{e}"
  puts "Response code: #{e.code}"
  puts "Response headers: #{e.response_headers}"
  puts "Response body: #{e.response_body}"
end
// initialize the API client with default base URL: https://api.singularbillpay.com
$api_client = new SingularApi\ApiClient();

// create SbpRequest object
$sbpRequest = new SingularApi\Model\SbpRequest();
$sbpRequest->setOrderid("sample orderid");
$sbpRequest->setPartnerid("sample partnerid");
$sbpRequest->setPartnerkey("sample partnerkey");
$sbpRequest->setPayeeid("sample payeeid");
$sbpRequest->setTransactionamount("sample transactionamount");
$sbpRequest->setTransactionreference("sample transactionreference");

try {
    $v1_api = new SingularApi\Api\V1API($api_client);
    // return SbpResponse (model)
    $response = $v1_api->voidTransaction($sbpRequest);
    print_r($response);
} catch (SingularApi\ApiException $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    echo 'Resepone Header: ', print_r($e->getResponseHeaders(), true), "\n";
    echo 'Resepone Body: ', $e->getResponseBody(), "\n";
}
// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.voidTransaction(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}
// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.voidTransaction(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

// create SbpRequest object
SWGSbpRequest *sbpRequest = [[SWGSbpRequest alloc] initWithDictionary:@{@"orderid": @"sample orderid", @"partnerid": @"sample partnerid", @"partnerkey": @"sample partnerkey", @"payeeid": @"sample payeeid", @"transactionamount": @"sample transactionamount", @"transactionreference": @"sample transactionreference"} error:nil];

@try
{
    SWGV1Api *v1Api = [[SWGV1Api alloc] init];



    // calling api method
    [v1Api voidTransactionWithCompletionBlock:sbpRequest
                            completionHandler:^(SWGSbpResponse *output, NSError *error) {
                                if (output) {
                                    NSLog(@"%@", output);
                                }

                                if (error) {
                                    NSLog(@"Error: %@", error);
                                }

                            }];
 }
@catch (NSException *exception)
{
    NSLog(@"%@ ",exception.name);
    NSLog(@"Reason: %@ ",exception.reason);
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.Orderid = "sample orderid";
sbpRequest.Partnerid = "sample partnerid";
sbpRequest.Partnerkey = "sample partnerkey";
sbpRequest.Payeeid = "sample payeeid";
sbpRequest.Transactionamount = "sample transactionamount";
sbpRequest.Transactionreference = "sample transactionreference";

try
{
    // first arguemnt 'basePath' is optional or pass an instance of the Configuration class
    // V1Api v1Api = new V1Api(new Configuration());
    V1Api v1Api = new V1Api("https://api.singularbillpay.com");
    SbpResponse response = v1Api.VoidTransaction(sbpRequest);
    Console.WriteLine(response);
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}

The above command returns JSON structured like this:

{
  "transactionamount": "-126.54",
  "surchargeamount": null,
  "payeename": "John Doe",
  "transactionreference": "075383351705",
  "transactionid": "b22d5e6a-8c79-4350-9e3a-3837a85cbcc2",
  "responsecode": "REVERS",
  "responsestatus": "APPROVED",
  "responsemessage": "Approval",
  "paymentmode": "Credit Card",
  "tokenizedaccountnumber": "9418594164541111",
  "expirymmyy": null,
  "cvv": null,
  "routingnumber": null,
  "currency": "USD",
  "orderid": "123456_march_16",
  "udfield1": null,
  "udfield2": null,
  "udfield3": null,
  "profileid": null,
  "payeeid": "jd_0316_10:31",
  "payeefirstname": "John",
  "payeelastname": "Doe",
  "address": "123 Street",
  "city": "Lego City",
  "state": "Legoland",
  "country": "US",
  "zip": "12345",
  "email": null,
  "partnerkey": null,
  "partnerid": null
}

Voids a previously transaction.

HTTP Request

POST /v1/transaction/void

Parameters

Parameter Located in Required Schema
sbpRequest body Yes Defined in Parameter section

sbpRequest required atrributes

Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
transactionreference string Required Transaction ReferenceId from the original authorization
transactionamount string Required Amount to capture.

Response

Parameter Http Status Schema
sbpResponse 200 Defined in Parameter section

Refund

POST https://devapi.singularbillpay.com/v1/transaction/refund

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "partnerkey": "mobile-api-user-login",  \ 
    "partnerid": "demo",   \ 
    "transactionamount": "123.45", \ 
    "orderid": "march-03102017",   \ 
    "payeeid": "customer_id",  \ 
    "transactionreference": "046868363041" \ 
 }' 'http://devapi.singularbillpay.com/v1/Transaction/refund'
# create SbpRequest object
sbp_request = SingularApi::SbpRequest.new(:orderid => "sample orderid", :partnerid => "sample partnerid", :partnerkey => "sample partnerkey", :payeeid => "sample payeeid", :transactionamount => "sample transactionamount", :transactionreference => "sample transactionreference")

begin
  v1_api = SingularApi::V1Api.new
  # return SbpResponse (model)
  response = v1_api.refund(sbp_request)
  p response
rescue SingularApi::ApiError => e
  puts "Failed to call API! Error: #{e}"
  puts "Response code: #{e.code}"
  puts "Response headers: #{e.response_headers}"
  puts "Response body: #{e.response_body}"
end
// initialize the API client with default base URL: https://api.singularbillpay.com
$api_client = new SingularApi\ApiClient();

// create SbpRequest object
$sbpRequest = new SingularApi\Model\SbpRequest();
$sbpRequest->setOrderid("sample orderid");
$sbpRequest->setPartnerid("sample partnerid");
$sbpRequest->setPartnerkey("sample partnerkey");
$sbpRequest->setPayeeid("sample payeeid");
$sbpRequest->setTransactionamount("sample transactionamount");
$sbpRequest->setTransactionreference("sample transactionreference");

try {
    $v1_api = new SingularApi\Api\V1API($api_client);
    // return SbpResponse (model)
    $response = $v1_api->refund($sbpRequest);
    print_r($response);
} catch (SingularApi\ApiException $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
    echo 'Resepone Header: ', print_r($e->getResponseHeaders(), true), "\n";
    echo 'Resepone Body: ', $e->getResponseBody(), "\n";
}
// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.refund(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}
// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.setOrderid("sampleOrderid");
sbpRequest.setPartnerid("samplePartnerid");
sbpRequest.setPartnerkey("samplePartnerkey");
sbpRequest.setPayeeid("samplePayeeid");
sbpRequest.setTransactionamount("sampleTransactionamount");
sbpRequest.setTransactionreference("sampleTransactionreference");

try {
    V1Api v1Api = new V1Api();
    SbpResponse response = v1Api.refund(sbpRequest);
    System.out.println(response);
} catch (ApiException e) {
    System.out.printf("ApiException caught: %s\n", e.getMessage());
}

// create SbpRequest object
SWGSbpRequest *sbpRequest = [[SWGSbpRequest alloc] initWithDictionary:@{@"orderid": @"sample orderid", @"partnerid": @"sample partnerid", @"partnerkey": @"sample partnerkey", @"payeeid": @"sample payeeid", @"transactionamount": @"sample transactionamount", @"transactionreference": @"sample transactionreference"} error:nil];

@try
{
    SWGV1Api *v1Api = [[SWGV1Api alloc] init];



    // calling api method
    [v1Api refundWithCompletionBlock:sbpRequest
                   completionHandler:^(SWGSbpResponse *output, NSError *error) {
                       if (output) {
                           NSLog(@"%@", output);
                       }

                       if (error) {
                           NSLog(@"Error: %@", error);
                       }

                   }];
 }
@catch (NSException *exception)
{
    NSLog(@"%@ ",exception.name);
    NSLog(@"Reason: %@ ",exception.reason);
}

// create SbpRequest object
SbpRequest sbpRequest = new SbpRequest();
sbpRequest.Orderid = "sample orderid";
sbpRequest.Partnerid = "sample partnerid";
sbpRequest.Partnerkey = "sample partnerkey";
sbpRequest.Payeeid = "sample payeeid";
sbpRequest.Transactionamount = "sample transactionamount";
sbpRequest.Transactionreference = "sample transactionreference";

try
{
    // first arguemnt 'basePath' is optional or pass an instance of the Configuration class
    // V1Api v1Api = new V1Api(new Configuration());
    V1Api v1Api = new V1Api("https://api.singularbillpay.com");
    SbpResponse response = v1Api.Refund(sbpRequest);
    Console.WriteLine(response);
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}

The above command returns JSON structured like this:

{
  "transactionamount": "-126.54",
  "surchargeamount": null,
  "payeename": "John Doe",
  "transactionreference": "075383351705",
  "transactionid": "b22d5e6a-8c79-4350-9e3a-3837a85cbcc2",
  "responsecode": "REVERS",
  "responsestatus": "APPROVED",
  "responsemessage": "Approval",
  "paymentmode": "Credit Card",
  "tokenizedaccountnumber": "9418594164541111",
  "expirymmyy": null,
  "cvv": null,
  "routingnumber": null,
  "currency": "USD",
  "orderid": "123456_march_16",
  "udfield1": null,
  "udfield2": null,
  "udfield3": null,
  "profileid": null,
  "payeeid": "jd_0316_10:31",
  "payeefirstname": "John",
  "payeelastname": "Doe",
  "address": "123 Street",
  "city": "Lego City",
  "state": "Legoland",
  "country": "US",
  "zip": "12345",
  "email": null,
  "partnerkey": null,
  "partnerid": null
}

Refunds a previously settled transaction.Generally used for settled transactions.However you can use void and the API will execute a void for unsettled and refund for settled transactions.

HTTP Request

POST /v1/transaction/refund

Parameters

Parameter Located in Required Schema
sbpRequest body Yes Defined in Parameter section

sbpRequest required atrributes

Attribute Type Required Description
partnerkey string Required API Key provided by Singular BillPAY
partnerid string Required Partner Id provided by Singular BillPAY
transactionreference string Required Transaction ReferenceId from the original authorization
transactionamount string Required Amount to capture.

Response

Parameter Http Status Schema
sbpResponse 200 Defined in Parameter section

Split Transactions

We support split transactions by allowing you to specify a secondary amount while calling API.The payment will be applied to the merchant account and funds specified in the secondary amount will be settled to a secondary account

Recurring Transactions

Create

POST https://devapi.singularbillpay.com/v1/subscription/create

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' -d '{ \ 
   "partnerkey": "mobile-api-user-login", \ 
   "partnerid": "demo", \ 
   "recurringamount": "100.23", \
   "paymentstartdate": "3/1/2017", \
   "paymentenddate": "12/31/2017", \
   "nextpaymentdate": "3/15/2017", \
   "frequency": "30", \   
   "amountoutstanding": "100000", \
   "tokenizedaccountnumber": "4111111111111111", \ 
   "paymentmode": "card", \ 
   "expirymmyy": "1221", \ 
   "cvv": "123", \ 
   "routingnumber": null, \ 
   "currency": "USD", \ 
   "payeefirstname": "John", \ 
   "payeelastname": "Doe", \ 
   "address": "123 Street", \ 
   "city": "Lego City", \ 
   "state": "Legoland", \ 
   "country": "US", \ 
   "zip": "12345", \ 
   "email": "celerisupport@singularpayments.com", \ 
   "orderid": "123456_feb_2017", \ 
   "payeeid": "jd_customer_id", \ 
   "udfield1": null, \ 
   "udfield2": null, \ 
   "udfield3": null, \ 
   "profile": "n", \ 
   "profileid": null, \ 
   "transactionreference": null \ 
 }' 'https://devapi.singularbillpay.com/v1/subscription/create'

The above command returns JSON structured like this:

{
  "transactionamount": "102.96",
  "surchargeamount": null,
  "payeename": "John Doe",
  "transactionreference": "128786159585",
  "transactionid": "e1f67108-da87-4bba-85b4-94e0ed08cb46",
  "responsecode": "PPS794",
  "responsestatus": "APPROVED",
  "responsemessage": "Approval",
  "paymentmode": "Recurring Credit Card",
  "tokenizedaccountnumber": "9418594164541111",
  "expirymmyy": null,
  "cvv": null,
  "routingnumber": null,
  "currency": "USD",
  "orderid": "ord_08_may_1102",
  "udfield1": null,
  "udfield2": null,
  "udfield3": null,
  "profileid": "19210638296609539567",
  "payeeid": "pay_08_may_1102",
  "payeefirstname": "John",
  "payeelastname": "Doe",
  "address": "123 Street",
  "city": "Lego City",
  "state": "Legoland",
  "country": "US",
  "zip": "12345",
  "email": null,
  "partnerkey": null,
  "partnerid": null
}

Create a recurring transaction

HTTP Request

POST /v1/subscription/create

Parameters

Parameter Located in Required Schema
sbpRecurringRequest body Yes Defined in Parameter section

Response

Parameter Http Status Schema
sbpResponse 200 Defined in Parameter section

Cancel

POST https://devapi.singularbillpay.com/v1/subscription/cancel

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' -d '{ \ 
    "partnerkey": "mobile-api-user-login", \
    "partnerid": "demo", \
    "orderid": "ord_08_may_1102",  \
    "payeeid": "pay_08_may_1102" \
 }' 'https://devapi.singularbillpay.com/v1/subscription/cancel'

The above command returns JSON structured like this.If a payeeid has more than one subscriptions, all of teh subscriptions will be cancelled.Pass in the orderid if a specific subscription need to be cancelled.

[
  {
    "recurringamount": "100.45",
    "paymentstartdate": "5/9/2017 12:00:00 AM",
    "paymentenddate": "5/7/2017 3:36:15 PM",
    "nextpaymentdate": null,
    "amountoutstanding": "2100.00",
    "frequency": "30",
    "paymentmode": "credit",
    "tokenizedaccountnumber": "9418594164541111",
    "expirymmyy": "1221",
    "cvv": null,
    "routingnumber": null,
    "currency": "USD",
    "orderid": "ord_08_may_1102",
    "udfield1": null,
    "udfield2": null,
    "udfield3": null,
    "profileid": "11268569028755504929",
    "payeeid": "pay_08_may_1102",
    "payeefirstname": "John",
    "payeelastname": "Doe",
    "address": null,
    "city": null,
    "state": null,
    "country": null,
    "zip": null,
    "email": "celerisupport@singularpayments.com",
    "partnerkey": null,
    "partnerid": null
  },
  {
    "recurringamount": "100.45",
    "paymentstartdate": "5/9/2017 12:00:00 AM",
    "paymentenddate": "5/7/2017 3:36:15 PM",
    "nextpaymentdate": "6/8/2017 12:00:00 AM",
    "amountoutstanding": "2100.00",
    "frequency": "30",
    "paymentmode": "credit",
    "tokenizedaccountnumber": "9418594164541111",
    "expirymmyy": "1221",
    "cvv": null,
    "routingnumber": null,
    "currency": "USD",
    "orderid": "ord_08_may_1102",
    "udfield1": null,
    "udfield2": null,
    "udfield3": null,
    "profileid": "19210638296609539567",
    "payeeid": "pay_08_may_1102",
    "payeefirstname": "John",
    "payeelastname": "Doe",
    "address": null,
    "city": null,
    "state": null,
    "country": null,
    "zip": null,
    "email": "celerisupport@singularpayments.com",
    "partnerkey": null,
    "partnerid": null
  },
  {
    "recurringamount": "100.45",
    "paymentstartdate": "5/9/2017 12:00:00 AM",
    "paymentenddate": "5/7/2017 3:36:15 PM",
    "nextpaymentdate": "6/8/2017 12:00:00 AM",
    "amountoutstanding": "2100.00",
    "frequency": "30",
    "paymentmode": "credit",
    "tokenizedaccountnumber": "9418594164541111",
    "expirymmyy": "1221",
    "cvv": null,
    "routingnumber": null,
    "currency": "USD",
    "orderid": "ord_08_may_1102",
    "udfield1": null,
    "udfield2": null,
    "udfield3": null,
    "profileid": "18274832003220720382",
    "payeeid": "pay_08_may_1102",
    "payeefirstname": "John",
    "payeelastname": "Doe",
    "address": null,
    "city": null,
    "state": null,
    "country": null,
    "zip": null,
    "email": "celerisupport@singularpayments.com",
    "partnerkey": null,
    "partnerid": null
  }
]

Cancel a recurring transaction

HTTP Request

POST /v1/subscription/cancel

Parameters

Parameter Located in Required Schema
sbpRecurringRequest body Yes Defined in Parameter section

Response

Parameter Http Status Schema
sbpRecurringRequest 200 Defined in Parameter section

Query

POST https://devapi.singularbillpay.com/v1/subscription/query

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' -d '{ \ 
    "partnerkey": "mobile-api-user-login", \
    "partnerid": "demo", \
    "orderid": "ord_08_may_1102",  \
    "payeeid": "pay_08_may_1102" \
 }' 'https://devapi.singularbillpay.com/v1/subscription/cancel'

The above command returns JSON structured like this.If a payeeid has more than one subscriptions, all of teh subscriptions will be cancelled.Pass in the orderid if a specific subscription need to be cancelled.

[
  {
    "recurringamount": "100.45",
    "paymentstartdate": "5/9/2017 12:00:00 AM",
    "paymentenddate": "5/7/2017 3:36:15 PM",
    "nextpaymentdate": null,
    "amountoutstanding": "2100.00",
    "frequency": "30",
    "paymentmode": "credit",
    "tokenizedaccountnumber": "9418594164541111",
    "expirymmyy": "1221",
    "cvv": null,
    "routingnumber": null,
    "currency": "USD",
    "orderid": "ord_08_may_1102",
    "udfield1": null,
    "udfield2": null,
    "udfield3": null,
    "profileid": "11268569028755504929",
    "payeeid": "pay_08_may_1102",
    "payeefirstname": "John",
    "payeelastname": "Doe",
    "address": null,
    "city": null,
    "state": null,
    "country": null,
    "zip": null,
    "email": "celerisupport@singularpayments.com",
    "partnerkey": null,
    "partnerid": null
  },
  {
    "recurringamount": "100.45",
    "paymentstartdate": "5/9/2017 12:00:00 AM",
    "paymentenddate": "5/7/2017 3:36:15 PM",
    "nextpaymentdate": "6/8/2017 12:00:00 AM",
    "amountoutstanding": "2100.00",
    "frequency": "30",
    "paymentmode": "credit",
    "tokenizedaccountnumber": "9418594164541111",
    "expirymmyy": "1221",
    "cvv": null,
    "routingnumber": null,
    "currency": "USD",
    "orderid": "ord_08_may_1102",
    "udfield1": null,
    "udfield2": null,
    "udfield3": null,
    "profileid": "19210638296609539567",
    "payeeid": "pay_08_may_1102",
    "payeefirstname": "John",
    "payeelastname": "Doe",
    "address": null,
    "city": null,
    "state": null,
    "country": null,
    "zip": null,
    "email": "celerisupport@singularpayments.com",
    "partnerkey": null,
    "partnerid": null
  },
  {
    "recurringamount": "100.45",
    "paymentstartdate": "5/9/2017 12:00:00 AM",
    "paymentenddate": "5/7/2017 3:36:15 PM",
    "nextpaymentdate": "6/8/2017 12:00:00 AM",
    "amountoutstanding": "2100.00",
    "frequency": "30",
    "paymentmode": "credit",
    "tokenizedaccountnumber": "9418594164541111",
    "expirymmyy": "1221",
    "cvv": null,
    "routingnumber": null,
    "currency": "USD",
    "orderid": "ord_08_may_1102",
    "udfield1": null,
    "udfield2": null,
    "udfield3": null,
    "profileid": "18274832003220720382",
    "payeeid": "pay_08_may_1102",
    "payeefirstname": "John",
    "payeelastname": "Doe",
    "address": null,
    "city": null,
    "state": null,
    "country": null,
    "zip": null,
    "email": "celerisupport@singularpayments.com",
    "partnerkey": null,
    "partnerid": null
  }
]

Query a recurring transaction associated with a payee

HTTP Request

POST /v1/subscription/query

Parameters

Parameter Located in Required Schema
sbpRecurringRequest body Yes Defined in Parameter section

Response

Parameter Http Status Schema
sbpRecurringRequest 200 Defined in Parameter section

Reports

POST https://devapi.singularbillpay.com/v1/Reports

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "partnerkey": "mobile-api-user-login", \ 
   "partnerid": "demo", \ 
   "fromdate": "1/10/2017", \ 
   "todate": "1/31/2017", \ 
   "transactionreference": null, \ 
   "payeeid": null, \ 
   "orderid": null, \ 
   "paymentmode": null \ 
 }' 'https://devapi.singularbillpay.com/v1/Reports'

Response array of json objects

[
  {
    "transactiontype": "Check",
    "tokenizedaccountnumber": "9418594164541111",
    "paymentmode": "Check",
    "transactionamount": "12.34",
    "surchargeamount": null,
    "currency": "USD",
    "payeename": "CLIFFORD HARDT",
    "address": "",
    "city": "College Grove",
    "state": "TN",
    "country": "US",
    "zip": "37046",
    "email": "nairbinod@gmail.com",
    "orderid": null,
    "payeeid": "FG1069",
    "profileid": null,
    "transactionreference": "015866284045",
    "transactionid": null,
    "responsecode": "PPS895",
    "responsestatus": "Approval",
    "responsemessage": null
  },
  {
    "transactiontype": "Credit Card",
    "tokenizedaccountnumber": "OTT_0ST4CN1Q3DSL44FUW4V4LO1VNLAC",
    "paymentmode": "Credit Card",
    "transactionamount": "123.45",
    "surchargeamount": null,
    "currency": "USD",
    "payeename": "Thomas Schreiber",
    "address": "",
    "city": "College Grove",
    "state": "TN",
    "country": "US",
    "zip": "37046",
    "email": "nairbinod@gmail.com",
    "orderid": null,
    "payeeid": "FG1166",
    "profileid": null,
    "transactionreference": "625370401",
    "transactionid": null,
    "responsecode": "OK9999",
    "responsestatus": "A",
    "responsemessage": null
  }
]

The above command returns an array of JSON structured like this:

[
  {
    "transactiontype": "Check",
    "tokenizedaccountnumber": "9418594164541111",
    "paymentmode": "Check",
    "transactionamount": "12.34",
    "surchargeamount": null,
    "currency": "USD",
    "payeename": "CLIFFORD HARDT",
    "address": "",
    "city": "College Grove",
    "state": "TN",
    "country": "US",
    "zip": "37046",
    "email": "nairbinod@gmail.com",
    "orderid": null,
    "payeeid": "FG1069",
    "profileid": null,
    "transactionreference": "015866284045",
    "transactionid": null,
    "responsecode": "PPS895",
    "responsestatus": "Approval",
    "responsemessage": null
  },
  {
    "transactiontype": "Credit Card",
    "tokenizedaccountnumber": "OTT_0ST4CN1Q3DSL44FUW4V4LO1VNLAC",
    "paymentmode": "Credit Card",
    "transactionamount": "123.45",
    "surchargeamount": null,
    "currency": "USD",
    "payeename": "Thomas Schreiber",
    "address": "",
    "city": "College Grove",
    "state": "TN",
    "country": "US",
    "zip": "37046",
    "email": "nairbinod@gmail.com",
    "orderid": null,
    "payeeid": "FG1166",
    "profileid": null,
    "transactionreference": "625370401",
    "transactionid": null,
    "responsecode": "OK9999",
    "responsestatus": "A",
    "responsemessage": null
  }
]

Execute reports to get data from Singular BillPAY API

HTTP Request

POST /v1/reports

Parameters

Parameter Located in Required Schema
sbpQueryRequest body Yes Defined in Parameter section

Response

Parameter Http Status Schema
sbpResponse 200 Defined in Parameter section

Enrollment

POST https://devapi.singularbillpay.com/v1/enroll


Response json object

{
  "clientId": "string",
  "salesCode": "string",
  "email": "string",
  "dbaName": "string",
  "legalName": "string",
  "merchantCategoryCode": "string",
  "ownershipType": "string",
  "taxId": "string",
  "businessAddress": "string",
  "businessCity": "string",
  "businessState": "string",
  "businessZip": "string",
  "businessPhoneNumber": "string",
  "businessWebsite": "string",
  "monthlyVolume": "string",
  "averageTicket": "string",
  "highTicket": "string",
  "swipedPercent": "string",
  "keyedPercent": "string",
  "ecomPercent": "string",
  "signerFirstName": "string",
  "signerLastName": "string",
  "signerTitle": "string",
  "signerAddress": "string",
  "signerCity": "string",
  "signerState": "string",
  "signerZip": "string",
  "signerPhoneNumber": "string",
  "signerDateOfBirth": "string",
  "accountHolderName": "string",
  "bankAccountNumber": "string",
  "bankRoutingNumber": "string",
  "partnerkey": "string",
  "partnerid": "string"
}

Enroll a merchant in the Singular BillPAY system

HTTP Request

POST /v1/enroll

Parameters

Parameter Located in Required Schema
sbpMerchant body Yes Defined in Parameter section

Response

Parameter Http Status Schema
sbpMerchant 200 Defined in Parameter section

Hosted Payment Page

Singular BillPAY Hosted Page Integration

Singular BillPAY provides a hosted payment page for integration partners so that Singular BillPAY platform handles all credit card and ACH handling and finally processing the transaction.

Sandbox

https://devapi.singularbillpay.com/Hosted/Payment

Production

https://api.singularbillpay.com/Hosted/Payment

Take a look

https://devapi.singularbillpay.com/testbillpost.html click here to try

Process Flow

The partner application sends required parameters to the Singular BillPAY hosted application and a secure payment page is provided back to the caller.The caller fills in all the required fields and completes the transaction.The transaction complete page is shown based on the success or failure of the transaction. The screen shots are shown below

Payment Page

Confirmation Page

The caller can make call to the Reports API to get the status of the transaction.

The Singular BillPAY API responds back with a JSON object which will have all the information about the transaction.The caller can also make calls to the API to “void” or “return” a previous transaction.

Post Parameters

Parameter Required Description
bpPartnerKey required Singular BillPAY assigned Partner Key
bpPartnerId required Singular BillPAY assigned partnerId
bpParam1 optional Additional partner fields
bpParam2 optional Additional partner fields
bpPartnerOrderId optional Unique order Id provided by partner
bpAmount required Payment Amount
bpPayeeId optional Partner assigned payee id
bpPayeeName required Payee Name
bpPayeeAddress optional Payee Address
bpPayeeCity optional Payee City
bpPayeeState optional Payee State
bpPayeeCountry optional Payee Country
bpPayeeZip optional Payee Zipcode
bpPayeeEmail optional Payee Email (receipts will be send to this email)
bpMobilePay required Default to “mobile” to get a payment page
bpReturnUrl optional Transaction result parameters will be posted back

Payment Widget

Singular BillPAY Widget Page

We have a widget page that can be embeddable for desktop, table, and mobile devices. It works within your site in an unobstrusive way and handles all credit card and ACH transactions keeping your site PCI compliant.

Its easy to integrate and our development team can help you at any stage of integration.

Take a look

Check out our demo shopping cart page and see how easy it is to get the widget working.

https://embed.plnkr.co/vdBgjzhDMuAdLlUlDS0P/ click here to try


<!-- BEGIN SINGULAR BILLPAY HIDDEN FIELDS -->

<!-- MANDATORY CONSTANT FIELDS -->

<!-- Singular BillPAY assigned PartnerKey -->
<input type="hidden" name="bpPartnerKey" id="bpPartnerKey" value="mobile-api-user-login">

<!-- Singular BillPAY assigned PartnerId -->
<input type="hidden" name="bpPartnerId" id="bpPartnerId" value="demo">

<!-- Singular BillPAY widget flag -->
<input type="hidden" name="bpMobilePay" id="bpMobilePay" value="widget">

<!-- Optional Fields provided by partner -->
<input type="hidden" name="bpPartnerOrderId" id="bpPartnerOrderId" value="orderid-1234567">
<input type="hidden" name="bpPayeeId" id="bpPayeeId" value="customerid-1234567">

<!-- MANDATORY FIELDS SET FROM CART by partner site -->
<input type="text" name="bpAmount" id="bpAmount" value="50">
<input type="text" name="bpPayeeName" id="bpPayeeName" value="John Doe">

<!-- include script file -->
<script src="https://devapi.celeripay.com/scripts/singularbillpay.js?ver=3"></script>

<!-- END OF SINGULAR BILLPAY HIDDEN FIELDS -->

Process Flow

The partner application sends required parameters to the Singular BillPAY widget via hidden fields and a secure payment page is provided back to the caller.The caller fills in all the required fields and completes the transaction.The transaction complete page is shown based on the success or failure of the transaction. The screen shots are shown below

Widget Page

Confirmation Page

The caller can make call to the Reports API to get the status of the transaction.

The Singular BillPAY API responds back with a JSON object which will have all the information about the transaction.The caller can also make calls to the API to “void” or “return” a previous transaction.

Post Parameters

Parameter Required Description
bpPartnerKey required Singular BillPAY assigned Partner Key
bpPartnerId required Singular BillPAY assigned partnerId
bpParam1 optional Additional partner fields
bpParam2 optional Additional partner fields
bpPartnerOrderId optional Unique order Id provided by partner
bpAmount required Payment Amount
bpPayeeId optional Partner assigned payee id
bpPayeeName required Payee Name
bpPayeeAddress optional Payee Address
bpPayeeCity optional Payee City
bpPayeeState optional Payee State
bpPayeeCountry optional Payee Country
bpPayeeZip optional Payee Zipcode
bpPayeeEmail optional Payee Email (receipts will be send to this email)
bpMobilePay required Default to “mobile” to get a payment page
bpReturnUrl optional Transaction result parameters will be posted back

SingularCard Plugin


<!-- STEP 1 : include the SingularCard.js in <head> tag -->
<head>
.
.
<script src="https://devapi.singularbillpay.com/plugin/singularcard.js"></script> 
.
</head>

<!-- STEP 2 : Embed SingularCard placeholder in your payment page -->
<div class="col-xs-10" id="credit-card"/>

<!-- Your processing button --> 
<button type="button" class="btn btn-primary" id="btnProcess">Pay Now</button>

<!-- STEP 3 : Add the following script to the bottom of your payment page -->
<script>
        var singularcard = CreateCard('credit-card'); // Create a card object

        // Re-wire your payment button to call our processing code
        document.getElementById('btnProcess').addEventListener('click', singularCardProcess); 

        function singularCardProcess(e) {
            // if you want to change message on your button and disable it, to prevent user from clicking it twice
            document.getElementById('btnProcess').innerHTML = "Processing ..";
            document.getElementById('btnProcess').disabled = true;          

            e.preventDefault();

            // REQUIRED FIELDS
            // Singular assigned api key
            singularcard.sendMessage('partnerkey', 'ef41e254-10f2-44ca-9036-701aedcb6613');  //REQUIRED

            // Singular assigned partner-id
            singularcard.sendMessage('partnerid', 'epic'); //REQUIRED

            // OPTIONAL FIELDS
            // If you want us to charge and give you back the transaction reference Id, inlcude below line.
            // If you want to ONLY tokenize, ignore the line below
            singularcard.sendMessage('authorize', 'y');  //OPTIONAL

            // If you want to send the payee name from your form
            singularcard.sendMessage('payeename', document.getElementById('inputPayeeName').value);

            // If you want to send the payee email from your form
            singularcard.sendMessage('payeeemail', document.getElementById('inputPayeeEmail').value);

            // If you want to send the PayeeId/CustomerId/ from your form
            singularcard.sendMessage('payeeid', document.getElementById('inputPayeeid').value);

            // If you want to send the OrderId from your form
            singularcard.sendMessage('orderid', document.getElementById('inputOrderId').value);

            // If you want to send amount from your form for auth transactions.Not required for tokenization
            singularcard.sendMessage('amount', document.getElementById('inputAmount').value);

            //REQUIRED : send the process message to our library to do the processing 
            singularcard.sendMessage('process', e.target);
        }

        // Subscribe to the OnProcess event, which will be fired once processing is complete
        $(document).on("OnProcess", function (event, data) {

            if (data.status == true)
                console.log('good:' + data.message);           
            else
                console.log('bad:' + data.message);

            document.getElementById('btnProcess').disabled = false;
            document.getElementById('btnProcess').innerHTML = "Ready to submit";

            //Do what you need at this point and submit the form
            form.submit();
        });

</script>

SingularCard Plugin integration

SingularCard is a javascript library that provides Singular managed fields for collecting the credit card information.By sending the appropriate data to the SingularCard library, you can either get a token or have the card processed and return you a transaction reference.

You can accept and process credit card payments in 3 easy steps using our plugin. Check code block to the right

Sandbox

https://devapi.singularbillpay.com/plugin/singularcard.js

Production

https://api.singularbillpay.com/plugin/singularcard.js

Take a look

https://devapi.celeripay.com/plugintest.html click here to try

1-2-3 and done

Step 1: Embed a javascript in your payment page

Step 2: Add a div tag for the card to appear

Step 3: Add script to process.

Sample Payment Form

Questions ?

Send us an email at integration@singularpayments.com and we can help you with your integration needs

Code Samples

Libraries & Integrations

Please follow this link for code samples

Contact us at integration@singularpayments.com if you have any integration questions

Test Card Numbers

Following account numbers can be used for testing

Account Type Account Number Routing Number
Credit Card 4111111111111111
Credit Card 5555555555554444
Credit Card 5105105105105100
Credit Card 4012888888881881
eCheck 123456789 036001808