Restful Onboarding Gateway
Introduction
This document describes the structure of SaltPay's Restful Onboarding Gateway which enables affiliates to submit an application for possible future merchants and fetch the status of an submitted applications. To begin with users of this gateway need to implement their own user interface on top of this gateway.
Environments
The Restful Onboarding Gateway is a restful web api. Communication between client and server can only happend over HTTPS. A username and password is required to use the service. User must get a security token from the web api using the username and password. This token must then be passed with all requests made to the web api.
Functionality
TestURL: https://test.borgun.is/Onboarding.API
API reference
API
Get token
To gain access to Restful Onboarding Gateway user must be registered with SaltPay, have a username and password. If a user is registered an access token can be requested from the API.
Each time a equest is made to the sever the access token must be present in the header of the HTTP request under header key "Authorization" with the value "Bearer YOURACCESSTOKENKEY".
To get the token this is the HTML code:
POST /token HTTP/1.1
Host: API_URL/token
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: dd07869c-b173-3d31-6c9c-3b58bdb1e0ab
grant_type=password&username=YOURUSERNAME&password=YOURPASSWORD
To test in CURL:
curl -X POST -H "Accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -H "Cache-Control: no-cache" -H "Postman-Token: 5b67d2ea-564a-0e59-39b7-1bafef9971ff" -d 'grant_type=password&username=YOURUSERNAME&password=YOURPASSWORD' "https://API_URL/token"
The API will answere with a JSON that looks something like this:
{
"access_token": "ivxAfHb0hBxTm-bcaDl4azEhVWwALwpAHoRVzhQqTNmkvCtvAu_yOqilbaTRe95j8NqcfWR305NvSgH6oAEQVUUiwuuvosfFh98IRVeJFTbmpeUvF85W6nHRJsvo9E3GQVS68Wr1s2KEJOs2jVE5QPRF5n_xzsi6sq_33g72sCmJp9ex0qXY02aHWX196rqFB2_inUood6nbVol9nux-ri55vKe9zAAADFYe3szBu-N3qJ-dKAWaCBXEEANOL1vyqPpnfhmslQwUltwAE3HcfQ",
"token_type": "bearer",
"expires_in": 3599
}
The "access_token" in the code example above must be put in the header under Authorization. Like in this HTTP code:
GET /api/application HTTP/1.1
Host: API_URL:API_PORT
Authorization: Bearer ivxAfHb0hBxTm-bcaDl4azEhVWwALwpAHoRVzhQqTNmkvCtvAu_yOqilbaTRe95j8NqcfWR305NvSgH6oAEQVUUiwuuvosfFh98IRVeJFTbmpeUvF85W6nHRJsvo9E3GQVS68Wr1s2KEJOs2jVE5QPRF5n_xzsi6sq_33g72sCmJp9ex0qXY02aHWX196rqFB2_inUood6nbVol9nux-ri55vKe9zAAADFYe3szBu-N3qJ-dKAWaCBXEEANOL1vyqPpnfhmslQwUltwAE3HcfQ
Cache-Control: no-cache
Postman-Token: 6e532dc2-8659-6ea8-9ebc-228e531f92ec
To test with curl
Curl example:
curl -X GET -H "Authorization: Bearer ivxAfHb0hBxTm-bcaDl4azEhVWwALwpAHoRVzhQqTNmkvCtvAu_yOqilbaTRe95j8NqcfWR305NvSgH6oAEQVUUiwuuvosfFh98IRVeJFTbmpeUvF85W6nHRJsvo9E3GQVS68Wr1s2KEJOs2jVE5QPRF5n_xzsi6sq_33g72sCmJp9ex0qXY02aHWX196rqFB2_inUood6nbVol9nux-ri55vKe9zAAADFYe3szBu-N3qJ-dKAWaCBXEEANOL1vyqPpnfhmslQwUltwAE3HcfQ" -H "Cache-Control: no-cache" -H "Postman-Token: 3a7ce164-654a-928d-61f2-96fcbaafa303" "https://API_URL:API_PORT/api/application"
We recommend using Postman or similar tool to test.
Get Countries
Returns a list of countries containing name and a two digit ISO code.
Example
{
"iso": "AF",
"name": "Afghanistan"
}
ISO field is supposed to be used when entering name of country.
Submit Application
Fill out the Application object, see API swagger site link.
If everything is successful an application ID will be returned.
Below is a detailed list of the object required to send in application.
Application
Field |
Type |
Explanation |
type |
ApplicationType |
Type of application |
euCompany |
Company |
EU company information |
nonEUCompanty |
Company |
Non EU company information |
business |
Business |
Information about the business |
website |
Array Website |
List of websites connected to this application |
settlement |
Settlement |
Settlement bank account |
processing |
Processing |
Reason for applying for this merchant account |
paymentServiceProvider |
PaymentServiceProvider |
Payment service provider in use |
warehouseAndShipmentDetails |
WarehouseProductShipment |
Warehouse and product shipment details (If applicable, only if physical goods are being sold and delivered) |
ApplicationType
Enum: "PreApproval", "Merchant", "PF", "SubMerchant"
Company
Field |
Type |
Explanation |
registrationNumber |
string |
Company registration number |
legalName |
string |
Legal name of company |
registeredTrademark |
string |
Trading name (if other than legal name) |
totalNumberOfEmployees |
integer |
number of employees that work at the company |
applyingForTerminal |
boolean |
true or false. |
applyingForECommerce |
boolean |
true or false |
Business
Field |
Type |
Explanation |
startupBusiness |
boolean |
true if this is a startup business, else false |
timeInBusiness |
string |
if this is not a startup business then this field is needed |
typeOfBusiness |
string |
Type of business |
descriptor |
string |
Descriptor (DBA or doing business as, max 22 letters, appears on the card statement) |
cityField |
string |
Customer support phone number (max 13 figures) |
acquirer |
string |
Previous/current acquirer |
monthlySalesVolumes |
Amount |
Current monthly sales volume (per currency) |
productServiceForSale |
string |
Products/Service for sale on website |
paymentType |
string |
Payment type (Recurring/subscription fee, one-time payment, pay-per minute, pay-per download, etc.) |
paymentTime |
string |
When does the payment take place? (upon purchase, on delivery, with download, etc.) |
threeDSecure |
ThreeDSecure |
3D secure to be used? |
processingCurrencies |
Array Currency |
array of currency |
terminals |
Array Terminal |
array of terminals |
cardOptions |
Array Card |
array of cards |
companyTurnover |
TotalAnnualTurnover |
Total annual company turnover |
cardTurnover |
TotalAnnualTurnover |
Total annual card turnover |
deposit |
Deposit |
Do you take any deposits? |
prePayment |
PrePayment |
Do you take a full payment for goods/service in advance? |
usesAffiliatesForMarketing |
boolean |
The merchant uses affiliates for marketing purposes? |
marketCoverages |
Array MarketCoverage |
list of market coverage |
Website
Field |
Type Explanation |
url |
string |
Url |
loginUsername |
string |
Login username (if applicable) |
loginPassword |
string |
Login password (if applicable) |
ipAddress |
string |
IP address |
Settlement
Field |
Type |
Explanation |
owner |
string |
Owner of bank account |
bankName |
string |
Bank name |
bankAddress |
Address |
Bank address |
bankTelephone |
string |
Bank telephone number |
accounts |
Array Account |
Bank accounts details |
comments |
string |
Addidtional comments |
settlementFrequency |
SettlementFrequency |
The frequency of settlements shall be |
Processsing
PaymentServiceProvider
Field |
Type |
Explanation |
companyName |
string |
Name of company |
website |
Website |
Website |
country |
string |
Country by two digit ISO code |
serviceProvided |
string |
Service provided (pls. specify) |
pcidssCompliance |
PCIDSSCompliance |
PCI DSS compliance |
additionalInfo |
string |
Additional information |
WarehouseProductShipment
Field |
Type |
Explanation |
goods |
string ENUM |
"PhysicalGoods", "DigitalContentViaInternet" |
contact |
Contact |
Contact person |
method |
string ENUM |
"InHouse", "FullfilmentHouse", "ThirdPartyAgent", "Other" |
warehouseLocationSameAsOfficeAddress |
boolean |
If in-house, where is the warehouse location |
warehouseLocation |
Address |
If other, please specify the warehouse location |
fulfilmentHouseCompanyName |
string |
Fulfilment house or third party agent details: Company name |
fulfilmentHouseAddress |
Address |
Fulfilment house or third party agent details: Address |
fulfilmentHouseContact |
Contact |
Fulfilment house or third party agent details: Contact person |
Field |
Type |
Explanation |
roles |
Array ContactType |
List of roles this contact has |
firstName |
string |
first name |
lastName |
string |
last name |
email |
string |
email |
phone |
string |
phone |
address |
Address |
Current home address |
passportNumber |
string |
Passport number |
dateOfBirth |
string |
Date of birth |
ownership |
number |
Ownership (%) |
nature |
NatureOfOwnership |
Nature of ownership (Direct or indirect? If indirect please describe) |
PrimaryContact, BeneficialOwner, Director, MerchantTechnicalContact, PFTechnicalContact, IntegrationTechnicalContact, FinancialContact, ChargebackContact, ChargebackNotification, CustomerSupport, SettlementContact, WarehouseContact
Address
Field |
Type |
Explanation |
street |
string |
street |
postCode |
string |
postal code, zip |
state |
string |
state |
city |
string |
city |
country |
string |
Country by two digit ISO code |
Amount
Field |
Type |
Explanation |
currency |
Currency |
what currency |
amountNumber |
number |
the actual amount |
ThreeDSecure
Field |
Type |
Explanation |
active |
boolean |
If yes, MPI used? |
borgunMPI |
boolean |
SaltPay´s MPI used |
otherMPI |
string |
Other MPI used |
Terminal
Field |
Type |
Explanation |
type |
string |
"OneTime", "Moto", "Recurring", "ThreeDSecure", "eCommerce", "PayByLink", "VirtualTerminal", "Other", |
otherExplanation |
string |
explanation for other |
Card
Field |
Type |
Explanation |
cardScheme |
string |
"VISA", "MasterCard", "AMEX", "UnionPay", "Diners", "Discover", "JCB", "CUP", "Other" |
cardType |
string |
"Debet", "Credit", "PrePaid", "GiftCard", "Other" |
TotalAnnualTurnover
Field |
Type |
Explanation |
actualOrEstimated |
Amount |
Annual / Estimated |
projected |
Amount |
Projected |
Deposit
Field |
Type |
Explanation |
depositAllowed |
boolean |
Do you take any deposits?: |
cardTurnoverPercentage |
number |
What % of total card turnover is taken as a deposit? |
goodsServicesPercentage |
number |
What % of goods/service value is taken as a deposit? |
daysInAdvance |
number |
How far in advance do you take the deposit? |
PrePayment
Field |
Type |
Explanation |
fullPaymentsInAdvance |
boolean |
Do you take a full payment for goods/service in advance? |
daysInAdvance |
number |
How far in advance do you take full payment? |
percentageOfCardTurnover |
number |
What % of the total Card Turnover is taken as Full Pre-Payment? |
MarketCoverage
Field |
Type |
Explanation |
country |
string |
Country by two digit ISO code |
percentage |
number |
Please specify market coverage, major countries where the customers come from |
Account
Field |
Type |
Explanation |
currency |
Currency |
what currency |
swiftCode |
string |
Swift Code |
ibaNnumber |
string |
IBAN number |
referenceCode |
string |
Reference code (if needed) |
sortCode |
string |
Sort code |
SettlementFrequency
Field |
Type |
Explanation |
frequency |
string |
enum: "Daily3daysDelay", "Daily7daysDelay", "WeeklyOnWednesdays", "Other" |
otherExplanation |
string |
other |
ProjectedProcessingVolume
ProjectedNumberOfTransactions
Field |
Type |
Explanation |
month1 |
number |
1st month |
month2 |
number |
2nd month |
month3 |
number |
3rd month |
month4 |
number |
4th month |
month5 |
number |
5ht month |
month6 |
number |
6th month |
month7To12 |
number |
Month 7-12 |
year2 |
number |
Year 2 |
year3 |
number |
Yaer 3 |
ProductServicePriceRange
CustomerOrderPercentage
Field |
Type |
Explanation |
online |
number |
Online |
moto |
number |
MO/TO |
other |
number |
Other |
VolumeByContinentPercentage
Field |
Type |
Explanation |
europe |
number |
Europe |
northAmerica |
number |
USA |
other |
number |
Other |
VolumeByCardTypes
Field |
Type |
Explanation |
card |
Card |
Visa, Mastercard,... |
percentage |
number |
Volume divided by card types (%) |
PCIDSSCompliance
Field |
Type |
Explanation |
verified |
boolean |
Verified |
verifiedBy |
string |
Verified by (Verified by a certified Qualified Security Assessor (QSA) or Approved Scanning Vendor (ASV)) |
expiry |
string |
Expire date |
NatureOfOwnership
Field |
Type |
Explanation |
direct |
boolean |
Direct ownership |
descriptionOfOwnership |
string |
If indirect please describe |
Currency
List of currencies: "USD", "EUR", "GBP", "SEK", "NOK", "DKK", "AUD", "CAD", "CHF", "YEN", "HUF", "CZK", "PLN", "ISK", "Other"
Get Application Status
Returns the status of a single application. Returned values include:
- stage (Application Stage)
- stageClassifier (reason for application being in either the OnHold or Declined stages)
- stageComments (further comments regarding the OnHold or Declined stage)
- mcc (MCC code)
mid (Merchant ID number)
The application can be in one of the following stages:
New,
ReceiveCheck,
PendingReview,
Review,
AcceptedPendingInfo,
PendingSetup,
Setup,
PendingContractReview,
ContractFinalization,
Declined,
Closed,
Boarded,
OpenChangeRequest,
PreApproved,
OnHold
Upload Application Documents
Upload documents that are connected to the application.
Total size of payload is limited to 50MB. Multiple files can be uploaded.
Allowed file endings are following:
- .doc
- .docx
- .xls
- .xlsx
- .png
- .jpg
- .tif
- .tiff
- .pdf
- .odt
- .ods
- .zip
Returns að list of all Contacts connected to one application.
Adds multiple Contact to selected application.
The contact object must be in the body of the POST request.
If the contact object is not correct an HTTP 400 with a list of first name and the reason why the object is not valid.
Example
{
"message": "John: The Roles field is required", "Alex: The Email field is required"
}
Add Fees
Adds Fees to a seller application.
The fees object must be in the body of POST request.
Fees
Field |
Type |
Explanation |
ContactName |
string |
name of contact |
ContactEmail |
string |
email of contact |
EmailForSettlement |
string |
email settlement information is sent to |
CardSchemes |
Array [string] |
these enum members are valid: "VISA", "MasterCard", "AMEX", "UnionPay", "Diners", "Discover", "JCB", "CUP", "Other" |
RefundsAllowed |
boolean |
true or false |
MOTO |
boolean |
true or false |
MOTOPercentage |
decimal |
percentage of MOTO |
ProcessingCurrency1 |
Currency |
what currency |
ProcessingCurrency2 |
Currency |
what currency |
SettlementCurrency1 |
Currency |
what currency |
SettlementCurrency2 |
Currency |
what currency |
ServiceFeesMasterCardCP |
ServiceFees |
Card Present service fees MasterCard |
ServiceFeesMasterCardCnP |
ServiceFees |
Card not Present service fees MasterCard |
ServiceFeesVISACP |
ServiceFees |
Card Present service fees VISA |
ServiceFeesVISACnP |
ServiceFees |
Card not Present service fees VISA |
ServiceFeesOtherCardsCP |
ServiceFees |
Card Present service fees other cards |
ServiceFeesOtherCardsCnP |
ServiceFees |
Card not Present service fees other cards |
TransactionFeesCP |
TransactionFees |
Card Present transaction fees |
TransactionFeesCnP |
TransactionFees |
Card not Present transaction fees |
OtherFeesCP |
CurrencyFees |
Card Present other fees |
OtherFeesCnP |
CurrencyFees |
Card not Present other fees |
RollingReserveAggreement |
boolean |
true or false |
RollingReserve |
string |
rolling reserve |
Service fees
Field |
Type |
Explanation |
DomesticConsumerCredit |
decimal |
Domestic consumer credit fee |
IntraConsumerCredit |
decimal |
Intra consumer credit fee |
InterConsumerCredit |
decimal |
Inter consumer credit fee |
DomesticConsumerDebit |
decimal |
Domestic consumer debit fee |
IntraConsumerDebit |
decimal |
Intra consumer debit fee |
InterConsumerDebit |
decimal |
Inter consumer debit fee |
DomesticCommercialCredit |
decimal |
Domestic commercial credit fee |
IntraCommercialCredit |
decimal |
Intra commercial credit fee |
InterCommercialCredit |
decimal |
Inter commercial credit fee |
DomesticCommercialDebit |
decimal |
commercial consumer debit fee |
IntraCommercialDebit |
decimal |
Intra commercial debit fee |
InterCommercialDebit |
decimal |
Inter commercial debit fee |
Transaction fees
Field |
Type |
Explanation |
Currency |
Currency |
what currency |
Authorised |
string |
Authorised and settled |
Declined |
string |
Declined/voided |
Currency fees
Field |
Type |
Explanation |
Currency |
Currency |
what currency |
ChargebackFee |
string |
Chargeback fee |
StatementFee |
string |
Statement fee |
RefundFee |
string |
Refund fee |
OneTimeSetUpFee |
string |
One time set-up fee |
MonthlyFee |
string |
Monthly fee |
MonthlyFeePlusVAT |
string |
Monthly fee plus VAT |
AnnualFee |
string |
Annual fee |
PaymentPageSetupFee |
string |
Secure hosted payment page setup fee |
PaymentPagMonthlyFee |
string |
Secure hosted payment page monthly fee |
GatewayConnectionFee |
string |
Gateway connection fee |
GatewayMonthlyFee |
string |
Gateway monthly fee |
PayByLinkFee |
string |
Pay by link fee |
VirtualTerminal |
string |
Virtual terminal fee |
MinimumMonthlyFee |
string |
Minimum monthly fee |
Add Equipment
Adds Equipment to a seller application.
The equipment object must be in the body of POST request.
Equipment
TerminalInfos
Field |
Type |
Explanation |
DBAName |
string |
DBA on slip, max 22 chars |
Address |
string |
Address on slip |
City |
string |
City on slip |
Postcode |
string |
Postcode on slip |
AdditionalComments |
string |
Additional comments |
VerifoneTerminal
Field |
Type |
Explanation |
TerminalType |
string |
One of "VX680GPRS", "VX680WIFI", "VX520IP", "VX690GPRS", "VX690WIFI", "VX820IP" |
Quantity |
number |
Number of terminals |
MOTO |
boolean |
MOTO payments allowed |
PreAuth |
boolean |
PreAuth payments allowed |
Gratuity |
boolean |
Gratuity allowed |
Base |
boolean |
Base required |
Comment |
string |
Additional comments regarding terminal |
OptomanyTerminal
Field |
Type |
Explanation |
TerminalType |
string |
One of "PaxS800IP", " "PaxS900WIFIGPRS" |
Quantity |
number |
Number of terminals |
MOTO |
boolean |
MOTO payments allowed |
PreAuth |
boolean |
PreAuth payments allowed |
Gratuity |
boolean |
Gratuity allowed |
Base |
boolean |
Base required |
AMEX |
boolean |
AMEX payments allowed |
Comment |
string |
Additional comments regarding terminal |
HandpointTerminal
Field |
Type |
Explanation |
TerminalType |
string |
One of "HiLite", "HiPro", "HiFive" |
Quantity |
number |
Number of terminals |
Gratuity |
boolean |
Gratuity allowed |
Base |
boolean |
Base required |
Comment |
string |
Additional comments regarding terminal |
SpireTerminal
Field |
Type |
Explanation |
TerminalType |
string |
One of "SPW70GPRS", "SPW60WIFI", "SPC50IP", "SPp10PINPad" |
Quantity |
number |
Number of terminals |
MOTO |
boolean |
MOTO payments allowed |
PreAuth |
boolean |
PreAuth payments allowed |
Gratuity |
boolean |
Gratuity allowed |
Base |
boolean |
Base required |
AP |
number |
Number of APs |
TailwindStand |
boolean |
TailwindStand required |
AMEX |
boolean |
AMEX payments allowed |
Comment |
string |
Additional comments regarding terminal |
SpireDelivery
Field |
Type |
Explanation |
TerminalDeliveryAddress |
string |
Terminal delivery address |
SameAsRegisteredAddress |
boolean |
Same address as registered address? |
SameAsTradingAddress |
boolean |
Same address as trading address? |
ContactName |
string |
Contact name |
ContactEMail |
string |
Contact email |
ContactMobile |
string |
Contact mobile number |
Add Note
Adds Note to a seller application.
The note object must be in the body of POST request.
Note
Field |
Type |
Explanation |
Title |
string |
Title of note |
Description |
string |
Content of note |