About Fee Navigator API
Fee Navigator API offers a suite of technology components to automate merchant statement analysis and comparison.
These are a subset of the full solution that Fee Navigator offers to the industry, which include the email analysis bot, Lead Funnel Unlimited, knowledge management, affiliate system, and AI-DYI capabilities when automatic analysis fails. For more information about the full solution, please visit https://www.feenavigator.com
We made this API available to help the industry produce custom experiences on top of our technology. Contact sales@feenavigator.com to get an API key and start coding!
Authorization
Fee Navigator API ("FNAPI") uses API keys to allow access to the API. Be sure to request your key by contacting sales@feenavigator.com.
FNAPI expects the API key to be included in all API requests to the server in a header that looks like the following:
Authorization: {apiKey}
1. Admin
1.1 Fee Library - GET
Returns the current fee library.
These are custom fees in your account, set up based on rate, per transaction, or as an individual fee.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-fee-library" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-fee-library"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-fee-library',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-fee-library'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
[
{
"id": 4,
"name": "Statement Fee"
},
{
"id": 6,
"name": "Monthly Fee"
}
]
Example response (400):
null
HTTP Request
GET api/v1/get-fee-library
1.2 Pricing Regimens - GET
Returns the pricing regimens.
These are pricing structures defined in your plan, which may include one or more of the following: Interchange Plus, Interchange Plus with Pass-Through AMEX, Flat, Cash Discount, Surcharge, Tier.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-pricing-regimens" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-pricing-regimens"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-pricing-regimens',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-pricing-regimens'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
[
{
"id": 66,
"name": "Sample Flat",
"type": "Flat"
},
{
"id": 67,
"name": "Sample IC Plus",
"type": "IC Plus"
}
]
Example response (400):
null
HTTP Request
GET api/v1/get-pricing-regimens
1.3 Pricing Regimen (id) - GET
Returns a specific pricing regimen identified by its id.
This returns all the details (definition) of the selected pricing regimen.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-pricing-regimens/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-pricing-regimens/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-pricing-regimens/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-pricing-regimens/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"name": "Sample Flat",
"type": "Flat",
"minMargin": 50,
"minMarginLevels": [
{
"minLevel": 0,
"minMargin": 50
}
],
"minMarginPeriod": "Monthly",
"targetMargin": 500,
"targetPercent": null,
"targetType": "fixed",
"targetMarginPeriod": "Monthly",
"datapoints": {
"Visa Debit nrTransactions": 0.23,
"Visa Auth nrTransactions": 2,
"Mastercard Credit amount": 3
},
"serviceFees": [
{
"idServiceFee": 22,
"networkType": [
"Credit",
"Debit"
],
"rate": 0.0001,
"per_tx": 0,
"fixedAmount": 0
},
{
"idServiceFee": 4,
"networkType": [],
"rate": 0,
"perTx": 0,
"fixedAmount": 10
},
{
"idServiceFee": 8,
"networkType": [
"Credit"
],
"rate": 0,
"perTx": 0.02,
"fixedAmount": 3
}
],
"tiers": [
{
"name": "Qualified",
"network": [
"Visa",
"Mastercard",
"Discover",
"American Express"
],
"network_type": [
"Credit"
],
"volumePercentage": 0.75,
"rate": 0.0169,
"perTx": 0.2
},
{
"name": "MidQual",
"network": [
"Visa",
"Mastercard",
"Discover",
"American Express"
],
"network_type": [
"Credit"
],
"volumePercentage": 0.1,
"rate": 0.028,
"perTx": 0.2
},
{
"name": "NonQual",
"network": [
"Visa",
"Mastercard",
"Discover",
"American Express"
],
"network_type": [
"Credit"
],
"volumePercentage": 0.15,
"rate": 0.033,
"perTx": 0.2
},
{
"name": "Debit",
"network": [
"Visa",
"Mastercard",
"Discover",
"American Express"
],
"networkType": [
"Debit"
],
"volumePercentage": 1,
"rate": 0.0169,
"perTx": 0.2
}
]
}
Example response (400):
{
"errors": "Pricing regimen not found",
"code": 400
}
HTTP Request
GET api/v1/get-pricing-regimens/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid pricing regimen ID previously obtained. |
1.4 Cost Schedules - GET
Returns a list of the available cost/commission schedules.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-cost-schedules" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-cost-schedules"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-cost-schedules',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-cost-schedules'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
[
{
"id": 113,
"name": "Sample Schedule A"
},
{
"id": 145,
"name": "AT Sample Schedule A"
}
]
Example response (400):
null
HTTP Request
GET api/v1/get-cost-schedules
1.5 Cost Schedule (id) - GET
Returns the details of a specific cost/commission schedule.
This will include buy and sell rates for each revenue source, as well as revenue shares.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-cost-schedules/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-cost-schedules/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-cost-schedules/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-cost-schedules/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"name": "Sample Schedule A",
"datapoints": {
"Visa Debit nrTransactions": {
"buyRate": 0.0001,
"buyRevShare": 80,
"sellRate": 0.0001,
"sellRevShare": 40
}
},
"serviceFees": [
{
"idServiceFee": 4,
"buyRate": 1,
"buyRevShare": 100,
"sellRate": 1,
"sellRevShare": 100
}
]
}
Example response (400):
{
"errors": "Commission not found",
"code": 400
}
HTTP Request
GET api/v1/get-cost-schedules/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid Commission ID previously obtained. |
1.6 Proposal Templates - GET
Returns a list with the available proposal templates.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-proposal-templates" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-proposal-templates"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-proposal-templates',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-proposal-templates'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
[
{
"id": 34,
"name": "FN_Sample_EXCEL_Proposal.xlsx"
},
{
"id": 85,
"name": "Sample_Excel_Second_Proposal.xlsx"
}
]
Example response (400):
null
HTTP Request
GET api/v1/get-proposal-templates
1.7 Proposal Template (id) - GET
Returns the proposal template identified by the specific id
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-proposal-templates/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-proposal-templates/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-proposal-templates/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-proposal-templates/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (400):
{
"errors": "Proposal template not found",
"code": 400
}
Example response (500):
{
"message": "Server Error"
}
HTTP Request
GET api/v1/get-proposal-templates/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid proposal template ID previously obtained. |
1.8 Usable Tokens - GET
Returns the available data point tokens, including the ones extracted and calculated from the statement, as well as the ones generated by the proposal.
The tokens may be used in Excel and Word templates, and they will be replaced at runtime with their actual values.
Tokens may be used to create calculations in Excel, and they also may be formatted for display as desired.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-usable-tokens" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-usable-tokens"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-usable-tokens',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-usable-tokens'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
[
{
"term": "VisaAuthorizations",
"definition": "Number of authorizations for Visa"
},
{
"id": "VisaPerAuthCurrent",
"name": "Per authorization cost for Visa (Current)"
}
]
HTTP Request
GET api/v1/get-usable-tokens
1.9 Plans - GET
Returns a list of the available proposal plans.
A proposal plan includes (1) pricing regimen, (1) cost schedule, and (1) Excel/Word template file that will format the generated data.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-plans" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-plans"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-plans',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-plans'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
[
{
"id": 102,
"name": "Sample IC Plus Fixed",
"isDefault": 0
},
{
"id": 103,
"name": "Sample IC Plus Dynamic",
"isDefault": 1
}
]
Example response (400):
null
HTTP Request
GET api/v1/get-plans
1.10 Plan (id) - GET
Returns the details of a specific proposal plan.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-plans/175" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-plans/175"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-plans/175',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-plans/175'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"name": "Name",
"pricingRegimen": {
"68": "pricing regimen name"
},
"commission": {
"113": "commission name"
},
"template": {
"36": "template.docx"
},
"onboardUrl": "https:\/\/www.your-onboarding-url.com",
"targetMcc": "5399",
"supportsICOptimization": 1,
"dynamicPricing": 0,
"isDefault": 0,
"showResiduals": 1,
"maxDiscRate": 0.0399,
"maxTransactionFee": 0.49,
"distributionOrder": "rateThenTxFee",
"hideWordExport": 0
}
Example response (400):
{
"errors": "Proposal template not found",
"code": 400
}
HTTP Request
GET api/v1/get-plans/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid plan ID previously obtained. |
1.11 Assignments - GET
Returns the users that are part of the team and their roles.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-assignments" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-assignments"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-assignments',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-assignments'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
[
{
"id": 1,
"name": "Example User",
"role": "manager"
},
{
"id": 2,
"name": "Example User two",
"role": "member"
}
]
Example response (400):
null
HTTP Request
GET api/v1/get-assignments
1.12 Assignment (id) - GET
Returns the proposal plans assigned to the specified user, including the default plan.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-assignments/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-assignments/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-assignments/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-assignments/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"name": "A7 User",
"role": "owner",
"idDefaultPlan": 105,
"assignedPlans": {
"102": "Sample IC Plus Fixed",
"103": "Sample IC Plus Dynamic"
}
}
Example response (400):
{
"errors": "Proposal template not found",
"code": 400
}
HTTP Request
GET api/v1/get-assignments/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid assignment ID previously obtained. |
2. Proposal
2.1 Submit Statement - POST
Upload a PDF statement (native or scanned) and get an id as a result. You will use this id to perform functions on this statement.
Example request:
curl -X POST \
"https://developer.feenavigator.com/api/v1/statements/upload" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}" \
-d '{"pdf":"my_pdf_statement.pdf","merchantId":"95b7a4b5-da9a-43bf-bd4a-b6d158d9e6f6","merchantData":{"merchantName":"Acme Inc.","industry":"5712","firstName":"John","lastName":"Smith","phone":"consequatur","email":"john@smith.com","zip":"23456"},"withDatapoints":0}'
const url = new URL(
"https://developer.feenavigator.com/api/v1/statements/upload"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
let body = {
"pdf": "my_pdf_statement.pdf",
"merchantId": "95b7a4b5-da9a-43bf-bd4a-b6d158d9e6f6",
"merchantData": {
"merchantName": "Acme Inc.",
"industry": "5712",
"firstName": "John",
"lastName": "Smith",
"phone": "consequatur",
"email": "john@smith.com",
"zip": "23456"
},
"withDatapoints": 0
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://developer.feenavigator.com/api/v1/statements/upload',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'multipart' => [
[
'name' => 'pdf',
'contents' => file_get_contents('my_pdf_statement.pdf'),
],
[
'name' => 'merchantId',
'contents' => '95b7a4b5-da9a-43bf-bd4a-b6d158d9e6f6',
],
[
'name' => 'merchantData[merchantName]',
'contents' => 'Acme Inc.',
],
[
'name' => 'merchantData[industry]',
'contents' => '5712',
],
[
'name' => 'merchantData[firstName]',
'contents' => 'John',
],
[
'name' => 'merchantData[lastName]',
'contents' => 'Smith',
],
[
'name' => 'merchantData[phone]',
'contents' => 'consequatur',
],
[
'name' => 'merchantData[email]',
'contents' => 'john@smith.com',
],
[
'name' => 'merchantData[zip]',
'contents' => '23456',
],
[
'name' => 'withDatapoints',
'contents' => '0',
],
]
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/statements/upload'
payload = {
"pdf": "my_pdf_statement.pdf",
"merchantId": "95b7a4b5-da9a-43bf-bd4a-b6d158d9e6f6",
"merchantData": {
"merchantName": "Acme Inc.",
"industry": "5712",
"firstName": "John",
"lastName": "Smith",
"phone": "consequatur",
"email": "john@smith.com",
"zip": "23456"
},
"withDatapoints": 0
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200):
{
"id": 1755002352774017576
}
Example response (404):
{
"errors": [
"Not Found -- The specified resource could not be found"
]
}
HTTP Request
POST api/v1/statements/upload
Body Parameters
Parameter | Type | Status | Description |
---|---|---|---|
pdf |
file | required | Statement PDF file. |
merchantId |
string | optional | The ID of the existing Merchant to whom the statement belongs to. Note: If it is not provided it means that a new Merchant must be created and therefore the below section (merchantData) is required. |
merchantData[merchantName] |
string | optional | The Merchant's name. Note: It is required if merchantId was not provided. |
merchantData[industry] |
string | optional | The Merchant's MCC industry code. Note: It is required if merchantId was not provided. |
merchantData[firstName] |
string | optional | Merchant's first name. |
merchantData[lastName] |
string | optional | Merchant's last name. |
merchantData[phone] |
string | optional | Merchant's mobile phone number. |
merchantData[email] |
string | optional | Merchant's email address. |
merchantData[zip] |
string | optional | Merchant's ZIP. |
withDatapoints |
integer | optional | Append all data points to the response. Default value = 0. Possible values: [1 = true, 0 = false]. |
2.2 Delete Statement (id) - DEL
Deletes a statement and all extracted or processed information, including any associated analyses.
Example request:
curl -X DELETE \
"https://developer.feenavigator.com/api/v1/statements/delete/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/statements/delete/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "DELETE",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://developer.feenavigator.com/api/v1/statements/delete/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/statements/delete/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Example response (200):
[]
HTTP Request
DELETE api/v1/statements/delete/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid statement ID previously obtained. |
2.3 Submit Quote - POST
When no statement is available, you may generate a proposal using generated data.
Submit a quote by entering just a few data points.
Example request:
curl -X POST \
"https://developer.feenavigator.com/api/v1/submit-quote" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}" \
-d '{"debitVsCredit":50,"cpVsCnp":80,"volume":100000,"averageTransaction":45,"fees":2500,"idPlan":"100","merchantId":"95b7a4b5-da9a-43bf-bd4a-b6d158d9e6f6","merchantData":{"merchantName":"Acme Inc","industry":"5712","firstName":"John","lastName":"Smith","phone":"23456785","email":"john@smith.com","zip":"52343"},"withDatapoints":0}'
const url = new URL(
"https://developer.feenavigator.com/api/v1/submit-quote"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
let body = {
"debitVsCredit": 50,
"cpVsCnp": 80,
"volume": 100000,
"averageTransaction": 45,
"fees": 2500,
"idPlan": "100",
"merchantId": "95b7a4b5-da9a-43bf-bd4a-b6d158d9e6f6",
"merchantData": {
"merchantName": "Acme Inc",
"industry": "5712",
"firstName": "John",
"lastName": "Smith",
"phone": "23456785",
"email": "john@smith.com",
"zip": "52343"
},
"withDatapoints": 0
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://developer.feenavigator.com/api/v1/submit-quote',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'body' => [
'debitVsCredit' => '50',
'cpVsCnp' => '80',
'volume' => '100000',
'averageTransaction' => '45',
'fees' => '2500',
'idPlan' => '100',
'merchantId' => '95b7a4b5-da9a-43bf-bd4a-b6d158d9e6f6',
'merchantData' => [
'merchantName' => 'Acme Inc',
'industry' => '5712',
'firstName' => 'John',
'lastName' => 'Smith',
'phone' => '23456785',
'email' => 'john@smith.com',
'zip' => '52343',
]
'withDatapoints' => '0',
]
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/submit-quote'
payload = {
"debitVsCredit": 50,
"cpVsCnp": 80,
"volume": 100000,
"averageTransaction": 45,
"fees": 2500,
"idPlan": "100",
"merchantId": "95b7a4b5-da9a-43bf-bd4a-b6d158d9e6f6",
"merchantData": {
"merchantName": "Acme Inc",
"industry": "5712",
"firstName": "John",
"lastName": "Smith",
"phone": "23456785",
"email": "john@smith.com",
"zip": "52343"
},
"withDatapoints": 0
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200):
{
"idStatement": "qK6J3byd",
"idCase": 676,
"status": "processed",
"lastProposalIdPlan": 125,
"datapoints": {
"merchant": {
"id": "95b7a4b5-da9a-43bf-bd4a-b6d158d9e6f6",
"company_id": 37955,
"merchant_name": "Company Name",
"first_name": "John",
"last_name": "Smith",
"email": "john.smith@john-smith.com",
"mobile": null,
"zip": "12345",
"industry": 5713,
"crm_stage_id": null,
"created_at": "2023-02-06T19:46:02.000000Z",
"updated_at": "2023-02-06T19:46:02.000000Z"
},
"MerchantProposalLink": "https:\/\/periscope-ui.pro.feenavigator.com\/#\/merchant-proposal\/d7cef5a4-003d-4f4d-920a-b2cc997acf04",
"AnalysisEditLink": "https:\/\/www.feenavigator.com\/compass\/#\/upload\/case\/676",
"Pricing Type": "IC Plus",
"Merchant Name": "Company Name",
"Statement Period Start": "2023-02-01",
"Statement Period End": "2023-02-28",
"Visa Credit amount": 20000,
"Visa Credit discRate": 0.0146,
"Visa Credit nrTransactions": 444,
"Visa Credit discRateProposed": 0.0146,
"Visa Credit transactionFeeProposed": 0,
"Visa Debit amount": 20000,
"Visa Debit discRate": 0.0146,
"Visa Debit nrTransactions": 444,
"Visa Debit discRateProposed": 0.0146,
"Visa Debit transactionFeeProposed": 0,
"Mastercard Credit amount": 15000,
"Mastercard Credit discRate": 0.0146,
"Mastercard Credit nrTransactions": 333,
"Mastercard Credit discRateProposed": 0.0146,
"Mastercard Credit transactionFeeProposed": 0,
"Mastercard Debit amount": 15000,
"Mastercard Debit discRate": 0.0146,
"Mastercard Debit nrTransactions": 333,
"Mastercard Debit discRateProposed": 0.0146,
"Mastercard Debit transactionFeeProposed": 0,
"Discover Credit amount": 10000,
"Discover Credit discRate": 0.0146,
"Discover Credit nrTransactions": 222,
"Discover Credit discRateProposed": 0.0146,
"Discover Credit transactionFeeProposed": 0,
"Discover Debit amount": 10000,
"Discover Debit discRate": 0.0146,
"Discover Debit nrTransactions": 222,
"Discover Debit discRateProposed": 0.0146,
"Discover Debit transactionFeeProposed": 0,
"American Express amount": 10000,
"American Express discRate": 0.0146,
"American Express nrTransactions": 222,
"American Express discRateProposed": 0.0146,
"American Express transactionFeeProposed": 0,
"Interchange & downgrades": 1858.82,
"Dues & Assessments": 160,
"Total Volume": 100000,
"Total Fees": 3500,
"Industry": "5713",
"Processing Fees": 1481.18,
"Pass-Through Fees": 2018.82,
"Other fees": 21,
"Total Calculated Fees": 3500,
"Monthly Fees": 3500,
"1-Year Fees": 42000,
"3-Year Fees": 126000,
"Effective Rate": 0.035,
"Avoidable Fees": null,
"Potential Savings": 2.13,
"Statement Period": "Feb 2023",
"Total nrTransactions": 2222.22,
"Average Ticket": 45,
"Processing Fees Proposed": 1481,
"Interchange & downgrades Proposed": 1858.82,
"PCI compliance Proposed": null,
"Non-PCI compliance Proposed": null,
"Monthly Proposed": null,
"Chargeback Proposed": null,
"Other fees Proposed": 21,
"Total Fees Proposed": 3499.82,
"Effective Rate Proposed": 0.035,
"Monthly Savings": 0.18,
"3 Year Savings": 6.4,
"Pass-Through Fees Proposed": 2018.82,
"Percent Processing Fees": 0.0148,
"Percent Processing Fees Proposed": 0.0148,
"Percent Pass-Through Fees": 0.0202,
"Percent Pass-Through Fees Proposed": 0.0202,
"Calculated Total Volume": 100000,
"Dues & Assessments Proposed": 160,
"Margin Proposed Company": 1158.22,
"Company Residual Proposed": 579.11,
"Agent Residual Proposed": 579.11,
"Potential Margin Company": 1160.14,
"Potential Margin Agent": 1160.14,
"Processor Cost Proposed": 301.78,
"Margin Proposed Agent": 1158.22,
"Pass-through Fees To Substract": 0,
"IsQuickQuote": 1
}
}
Example response (200):
{
"message": "The given data was invalid.",
"errors": {
"merchantData.merchantName": [
"The merchant data.merchant name field is required."
],
"merchantData.industry": [
"The merchant data.industry field is required."
]
}
}
HTTP Request
POST api/v1/submit-quote
Body Parameters
Parameter | Type | Status | Description |
---|---|---|---|
debitVsCredit |
integer | required | Debit vs credit percentage. |
cpVsCnp |
integer | required | Card present vs card not present percentage. |
volume |
float | required | |
averageTransaction |
float | required | |
fees |
float | required | |
idPlan |
string | optional | |
merchantId |
string | optional | The ID of the existing Merchant for whom the quick quote is done for. Note: If it is not provided it means that a new Merchant must be created and therefore the below section (merchantData) is required. |
merchantData[merchantName] |
string | optional | The Merchant's name. Note: It is required if merchantId is missing. |
merchantData[industry] |
string | optional | The Merchant's MCC industry code. Note: It is required if merchantId is missing. |
merchantData[firstName] |
string | optional | Merchant's first name. |
merchantData[lastName] |
string | optional | Merchant's last name. |
merchantData[phone] |
string | optional | Merchant's mobile phone number. |
merchantData[email] |
string | optional | Merchant's email address. |
merchantData[zip] |
string | optional | Merchant's ZIP. |
withDatapoints |
integer | optional | Append all data points to the response. Default value = 0. Possible values: [1 = true, 0 = false]. |
2.4 Delete Quote (id) - DEL
Deletes a specified quote, and all the data associated with it.
Example request:
curl -X DELETE \
"https://developer.feenavigator.com/api/v1/submit-quote/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/submit-quote/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "DELETE",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://developer.feenavigator.com/api/v1/submit-quote/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/submit-quote/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Example response (200):
[]
HTTP Request
DELETE api/v1/submit-quote/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid statement ID previously obtained. |
2.5 Get Statement (id) - GET
Returns the uploaded statement with the specified id.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/statement/download/pdf/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/statement/download/pdf/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/statement/download/pdf/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/statement/download/pdf/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (500):
{
"message": "Server Error"
}
HTTP Request
GET api/v1/statement/download/pdf/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid statement ID previously obtained. |
2.6 Get Extracted Text (id) - GET
Returns the textual representation after performing optical-character-recognition (OCR) on the PDF statement.
Depending on the quality of the document itself, this may not match 100% the PDF content.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/statements/get-extracted-text/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/statements/get-extracted-text/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/statements/get-extracted-text/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/statements/get-extracted-text/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"extractedText": ".... extracted text as a string ..."
}
HTTP Request
GET api/v1/statements/get-extracted-text/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid statement ID previously obtained. |
2.7 Get Data Points (id)- GET
Returns the extracted and processed elements from the statement and proposal.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/statements/get-datapoints/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/statements/get-datapoints/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/statements/get-datapoints/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/statements/get-datapoints/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"EBT discRate": null,
"Pricing Type": "IC Plus",
"Merchant Name": "GRILLE",
"Merchant Address": null,
"Merchant Number": "496",
"Statement Period Start": "05\/01\/18",
"Statement Period End": "05\/31\/18",
"Third Party Transactions": null,
"Visa Credit amount": 22517.51,
"Visa Credit discRate": 0.0015,
"Visa Credit nrTransactions": 436,
"Visa Credit transactionFee": null,
"Visa Credit discRateProposed": 0.0027,
"Visa Credit transactionFeeProposed": 0,
"Visa Debit amount": 25568.33,
"Visa Debit discRate": 0.0015,
"Visa Debit nrTransactions": 553,
"Visa Debit transactionFee": null,
"Visa Debit discRateProposed": 0.0027,
"Visa Debit transactionFeeProposed": 0,
"Visa Auth nrTransactions": 1031,
"Visa Auth transactionFee": 0.05,
"Visa Auth transactionFeeProposed": 0,
"Mastercard Credit amount": 15250.57,
"Mastercard Credit discRate": 0.0015,
"Mastercard Credit nrTransactions": 316,
"Mastercard Credit transactionFee": null,
"Mastercard Credit discRateProposed": 0.0027,
"Mastercard Credit transactionFeeProposed": 0,
"Mastercard Debit amount": 5275.82,
"Mastercard Debit discRate": 0.0015,
"Mastercard Debit nrTransactions": 103,
"Mastercard Debit transactionFee": null,
"Mastercard Debit discRateProposed": 0.0027,
"Mastercard Debit transactionFeeProposed": 0,
"Mastercard Auth nrTransactions": 435,
"Mastercard Auth transactionFee": 0.05,
"Mastercard Auth transactionFeeProposed": 0,
"Discover Credit amount": 3609.83,
"Discover Credit discRate": 0.0015,
"Discover Credit nrTransactions": 64,
"Discover Credit transactionFee": null,
"Discover Credit discRateProposed": 0.0027,
"Discover Credit transactionFeeProposed": 0,
"Discover Debit amount": 152.31,
"Discover Debit discRate": 0.0015,
"Discover Debit nrTransactions": null,
"Discover Debit transactionFee": null,
"Discover Debit discRateProposed": 0.0027,
"Discover Debit transactionFeeProposed": null,
"Discover Auth nrTransactions": 64,
"Discover Auth transactionFee": 0.05,
"Discover Auth transactionFeeProposed": 0,
"American Express amount": 13237.43,
"American Express discRate": 0.0025,
"American Express nrTransactions": 238,
"American Express transactionFee": null,
"American Express discRateProposed": 0.0027,
"American Express transactionFeeProposed": 0,
"American Express Auth nrTransactions": 242,
"American Express Auth transactionFee": 0.05,
"American Express Auth transactionFeeProposed": 0,
"PIN Debit amount": null,
"PIN Debit discRate": null,
"PIN Debit nrTransactions": null,
"PIN Debit transactionFee": null,
"PIN Debit discRateProposed": null,
"PIN Debit transactionFeeProposed": null,
"EBT amount": null,
"EBT nrTransactions": null,
"EBT transactionFee": null,
"EBT transactionFeeProposed": null,
"Fleet Cards \/ Other amount": null,
"Fleet Cards \/ Other discRate": null,
"Fleet Cards \/ Other nrTransactions": null,
"Fleet Cards \/ Other transactionFee": null,
"Fleet Cards \/ Other discRateProposed": null,
"Fleet Cards \/ Other transactionFeeProposed": null,
"Interchange & downgrades": 1606.9,
"Dues & Assessments": 153.86,
"PIN debit interchange": null,
"AVS nrTransactions": null,
"AVS transactionFee": null,
"PCI compliance": null,
"Non-PCI compliance": null,
"Batch nrTransactions": 24,
"Batch transactionFee": 0.05,
"Monthly": 13.5,
"Chargeback": null,
"Surcharging": null,
"Total Volume": 85611.8,
"Total Fees": 2013.2,
"Industry": "5399",
"Representative First Name": null,
"Representative Last Name": null,
"Representative Phone": null,
"Representative Email": null,
"Card brands \/ other": null,
"Processing Fees": 252.44,
"Pass-Through Fees": 1760.76,
"Other fees": 7.48,
"Calculated Other Fees": null,
"Total Calculated Fees": 2013.2,
"Monthly Fees": 2013.2,
"1-Year Fees": 24158.4,
"3-Year Fees": 72475.2,
"Effective Rate": 0.0235,
"Avoidable Fees": null,
"Potential Savings": 820.71,
"Statement Period": "May 2018",
"Total nrTransactions": 1710,
"Average Ticket": 50.07,
"Processing Fees Proposed": 239.84,
"Interchange & downgrades Proposed": 1577.23,
"Interchange optimization Proposed": -26.12,
"PIN debit interchange Proposed": null,
"AVS transactionFee Proposed": null,
"PCI compliance Proposed": null,
"Non-PCI compliance Proposed": null,
"Batch transactionFee Proposed": 0.05,
"Monthly Proposed": null,
"Chargeback Proposed": null,
"Other fees Proposed": 7.48,
"Total Fees Proposed": 1944.81,
"Effective Rate Proposed": 0.0227,
"Monthly Savings": 68.39,
"3 Year Savings": 2462.14,
"Pass-Through Fees Proposed": 1704.97,
"Percent Processing Fees": 0.0029,
"Percent Processing Fees Proposed": 0.0028,
"Percent Pass-Through Fees": 0.0206,
"Percent Pass-Through Fees Proposed": 0.0199,
"Calculated Other Fees Proposed": null,
"Percent Other Fees": null,
"Percent Other Fees Proposed": null,
"Calculated Total Volume": 85611.8,
"Card brands \/ other Proposed": null,
"Dues & Assessments Proposed": 153.86,
"Surcharging Proposed": null,
"Tiers Proposed": null,
"Custom Service Proposed": null,
"Other Processing Fees": null,
"Margin Proposed Company": 161.99,
"Company Residual Proposed": 81,
"Agent Residual Proposed": 81,
"Potential Margin Company": 218.97,
"Potential Margin Agent": 218.97,
"Processor Cost Proposed": 69.16,
"Margin Proposed Agent": 161.99,
"Pass-through Fees To Substract": 0,
"Interchange": [
{
"term": "MC-WORLDCARD RESTAURANT",
"normalized": "Restaurant - World",
"network": "Mastercard",
"amount": 1320.32,
"countTx": 44,
"rate": 0.0173,
"perTx": 0.1,
"fee": 27.24,
"standardRate": 0.0173,
"standardPerTx": 0.1,
"standardFee": 27.241536,
"padding": 0
},
{
"term": "MC-COM T & E I(US) FLEET",
"normalized": "Commercial T&E Large Market",
"network": "Mastercard",
"amount": 1199.97,
"countTx": 32,
"rate": 0.0275,
"perTx": 0,
"fee": 33,
"standardRate": 0.0265,
"standardPerTx": 0.1,
"standardFee": 34.999205,
"padding": 0
},
{
"term": "MC-CORP T & E I(US) BUS",
"normalized": "Commercial T&E Large Market",
"network": "Mastercard",
"amount": 1352.58,
"countTx": 29,
"rate": 0.025,
"perTx": 0,
"fee": 33.82,
"standardRate": 0.0265,
"standardPerTx": 0.1,
"standardFee": 38.74337,
"padding": 0
},
{
"term": "MC-CORP PURCHASING INTL PUR",
"normalized": "T&E Large Ticket - World High Value",
"network": "Mastercard",
"amount": 40,
"countTx": 1,
"rate": 0.0285,
"perTx": 0,
"fee": 1.14,
"standardRate": 0.02,
"standardPerTx": 0,
"standardFee": 0.8,
"padding": 0.34
},
{
"term": "MC-CORP T & E I(US) CORP",
"normalized": "Commercial T&E Large Market",
"network": "Mastercard",
"amount": 1237.1,
"countTx": 27,
"rate": 0.0275,
"perTx": 0,
"fee": 34.02,
"standardRate": 0.0265,
"standardPerTx": 0.1,
"standardFee": 35.48315,
"padding": 0
},
{
"term": "MC-CORP BUSINESS INTL FLT",
"normalized": "T&E Large Ticket - World High Value",
"network": "Mastercard",
"amount": 153.13,
"countTx": 3,
"rate": 0.0285,
"perTx": 0,
"fee": 4.36,
"standardRate": 0.02,
"standardPerTx": 0,
"standardFee": 3.0626,
"padding": 1.2974
},
{
"term": "MC-WORLD ELITE RESTAURANT",
"normalized": "Restaurant - World Elite",
"network": "Mastercard",
"amount": 1460.21,
"countTx": 44,
"rate": 0.022,
"perTx": 0.1,
"fee": 36.52,
"standardRate": 0.022,
"standardPerTx": 0.1,
"standardFee": 36.52462,
"padding": 0
},
{
"term": "MC-WORLD ELITE - OTHER",
"normalized": "Merit I - World Elite ",
"network": "Mastercard",
"amount": 1855.57,
"countTx": 19,
"rate": 0.0275,
"perTx": 0.1,
"fee": 52.93,
"standardRate": 0.025,
"standardPerTx": 0.1,
"standardFee": 48.28925,
"padding": 4.64075
},
{
"term": "MC-BUS LEVEL 2 T&E I",
"normalized": "Commercial T&E Business Level 2",
"network": "Mastercard",
"amount": 71,
"countTx": 4,
"rate": 0.0266,
"perTx": 0,
"fee": 1.89,
"standardRate": 0.025,
"standardPerTx": 0.1,
"standardFee": 2.175,
"padding": 0
},
{
"term": "MC-SMALL TICKET (DB)",
"normalized": "Small Ticket Debit\/Prepaid - Non-Regulated Consumer Debit",
"network": "Mastercard",
"amount": 55.24,
"countTx": 6,
"rate": 0.0155,
"perTx": 0.04,
"fee": 1.1,
"standardRate": 0.0155,
"standardPerTx": 0.04,
"standardFee": 1.09622,
"padding": 0
},
{
"term": "MC-RESTAURANT (DB)",
"normalized": null,
"network": null,
"amount": 308.38,
"countTx": 12,
"rate": 0.0119,
"perTx": 0.1,
"fee": 4.87,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-INT SPR PREM ELECTRONIC(US)",
"normalized": null,
"network": null,
"amount": 25.14,
"countTx": 1,
"rate": 0.0283,
"perTx": 0,
"fee": 0.71,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-COM T & E I(US) PURCH",
"normalized": null,
"network": null,
"amount": 449.72,
"countTx": 7,
"rate": 0.0275,
"perTx": 0,
"fee": 12.37,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-BUS LEVEL 3 T&E I",
"normalized": null,
"network": null,
"amount": 122.06,
"countTx": 2,
"rate": 0.0271,
"perTx": 0,
"fee": 3.31,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-BUS LEVEL 4 T&E I",
"normalized": "Commercial T&E Business Level 4",
"network": "Mastercard",
"amount": 30.78,
"countTx": 1,
"rate": 0.0281,
"perTx": 0,
"fee": 0.86,
"standardRate": 0.0265,
"standardPerTx": 0.1,
"standardFee": 0.91567,
"padding": 0
},
{
"term": "MC-REG INCENT FRF ADJ POS (DB)",
"normalized": "Regulated Purchases POS Debit with Fraud Adjustment - Debit Rate | Universal Regulated Debit Fraud Adj",
"network": "Mastercard",
"amount": 3268.01,
"countTx": 60,
"rate": 0.0005,
"perTx": 0.22,
"fee": 14.83,
"standardRate": 0.0005,
"standardPerTx": 0.22,
"standardFee": 14.834005,
"padding": 0
},
{
"term": "MC-REGULATED FRD ADJ COMM (DB)",
"normalized": "Regulated Purchases POS Debit with Fraud Adjustment - Debit Rate | Universal Regulated Debit Fraud Adj",
"network": "Mastercard",
"amount": 103,
"countTx": 1,
"rate": 0.0005,
"perTx": 0.22,
"fee": 0.27,
"standardRate": 0.0005,
"standardPerTx": 0.22,
"standardFee": 0.2715,
"padding": 0
},
{
"term": "MC-PREM CON ELEC ACQUSISSCAN",
"normalized": null,
"network": null,
"amount": 197.24,
"countTx": 3,
"rate": 0.027,
"perTx": 0,
"fee": 5.33,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-ENHANCED MERIT III BASE",
"normalized": "Merit III Base - Enhanced (=Card Present)",
"network": "Mastercard",
"amount": 1280.19,
"countTx": 32,
"rate": 0.0173,
"perTx": 0.1,
"fee": 25.35,
"standardRate": 0.0173,
"standardPerTx": 0.1,
"standardFee": 25.347287,
"padding": 0
},
{
"term": "MC-PREM CON ELEC ACQUSISSLAC",
"normalized": null,
"network": null,
"amount": 30.1,
"countTx": 2,
"rate": 0.027,
"perTx": 0,
"fee": 0.81,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-HIGH VAL RESTAURANT",
"normalized": "Restaurant - World High Value",
"network": "Mastercard",
"amount": 84.32,
"countTx": 2,
"rate": 0.022,
"perTx": 0.1,
"fee": 2.06,
"standardRate": 0.022,
"standardPerTx": 0.1,
"standardFee": 2.05504,
"padding": 0
},
{
"term": "MC-DOMESTIC MERIT III (DB)",
"normalized": "Merit III Base (Card Present) - Non-Regulated Consumer Debit",
"network": "Mastercard",
"amount": 1541.19,
"countTx": 24,
"rate": 0.0105,
"perTx": 0.15,
"fee": 19.78,
"standardRate": 0.0105,
"standardPerTx": 0.15,
"standardFee": 19.782495,
"padding": 0
},
{
"term": "MC-FOREIGN ELECTRONIC PLUS",
"normalized": null,
"network": null,
"amount": 73.05,
"countTx": 4,
"rate": 0.0195,
"perTx": 0,
"fee": 1.42,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-DOMESTIC MERIT III",
"normalized": "Merit III Base - Core (=Card Present) | Consumer Credit",
"network": "Mastercard",
"amount": 1882.57,
"countTx": 38,
"rate": 0.0158,
"perTx": 0.1,
"fee": 33.54,
"standardRate": 0.0158,
"standardPerTx": 0.1,
"standardFee": 33.544606,
"padding": 0
},
{
"term": "MC-WORLDCARD - OTHER",
"normalized": "Merit III Base - World (=Card Present)",
"network": "Mastercard",
"amount": 2385.52,
"countTx": 21,
"rate": 0.023,
"perTx": 0.1,
"fee": 56.97,
"standardRate": 0.0177,
"standardPerTx": 0.1,
"standardFee": 44.323704,
"padding": 12.646296
},
{
"term": "VISA",
"normalized": null,
"network": null,
"amount": -25,
"countTx": 1,
"rate": 0,
"perTx": 0,
"fee": 0,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-US REGULATED (DB)",
"normalized": "CPS\/Supermarket, Debit - Regulated (CP)",
"network": "Visa",
"amount": 17032.88,
"countTx": 326,
"rate": 0.0005,
"perTx": 0.22,
"fee": 80.24,
"standardRate": 0.0005,
"standardPerTx": 0.22,
"standardFee": 80.23644,
"padding": 0
},
{
"term": "VI-CPS SMALL TICKET (PP)",
"normalized": "CPS\/Small Ticket, Prepaid - Exempt (CP)",
"network": "Visa",
"amount": 55.46,
"countTx": 6,
"rate": 0.016,
"perTx": 0.05,
"fee": 1.19,
"standardRate": 0.016,
"standardPerTx": 0.05,
"standardFee": 1.18736,
"padding": 0
},
{
"term": "VI-BUSINESS CARD CP (DB)",
"normalized": "Business Debit Card Present CP - Exempt",
"network": "Visa",
"amount": 57.72,
"countTx": 2,
"rate": 0.017,
"perTx": 0.1,
"fee": 1.18,
"standardRate": 0.017,
"standardPerTx": 0.1,
"standardFee": 1.18124,
"padding": 0
},
{
"term": "VI-US REGULATED COMM (DB)",
"normalized": "Interregional Regulated Debit - All Commercial Products",
"network": "Visa",
"amount": 510.5,
"countTx": 8,
"rate": 0.0005,
"perTx": 0.22,
"fee": 2.02,
"standardRate": 0.0005,
"standardPerTx": 0.22,
"standardFee": 2.01525,
"padding": 0
},
{
"term": "VI-US CPS\/SMALL TCKT REG (DB)",
"normalized": "CPS\/Small Ticket, Debit - Regulated (CP)",
"network": "Visa",
"amount": 498.36,
"countTx": 53,
"rate": 0.0005,
"perTx": 0.22,
"fee": 11.91,
"standardRate": 0.0005,
"standardPerTx": 0.22,
"standardFee": 11.90918,
"padding": 0
},
{
"term": "VI-CPS\/SMALL TICKET",
"normalized": "Small Ticket - All Other",
"network": "Visa",
"amount": 264.38,
"countTx": 25,
"rate": 0.0165,
"perTx": 0.04,
"fee": 5.36,
"standardRate": 0.019,
"standardPerTx": 0,
"standardFee": 5.02322,
"padding": 0.33678
},
{
"term": "VI-CPS\/REWARDS 2",
"normalized": null,
"network": null,
"amount": 1780.83,
"countTx": 24,
"rate": 0.0195,
"perTx": 0.1,
"fee": 37.13,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-CPS\/RESTAURANT CREDIT",
"normalized": null,
"network": null,
"amount": 1304.7,
"countTx": 27,
"rate": 0.0154,
"perTx": 0.1,
"fee": 22.79,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-INTREG BUS\/CORP\/PURCH (US)",
"normalized": "T&E Large Ticket - World High Value",
"network": "Mastercard",
"amount": 334.68,
"countTx": 10,
"rate": 0.0245,
"perTx": 0,
"fee": 8.2,
"standardRate": 0.02,
"standardPerTx": 0,
"standardFee": 6.6936,
"padding": 1.5064
},
{
"term": "VI-ELECTRONIC (US ACQ)",
"normalized": "Electronic Program - All Commerical Products",
"network": "Visa",
"amount": 248.93,
"countTx": 10,
"rate": 0.0155,
"perTx": 0,
"fee": 3.86,
"standardRate": 0.02,
"standardPerTx": 0,
"standardFee": 4.9786,
"padding": 0
},
{
"term": "VI-INTREG CHIP ISS (US)",
"normalized": "Issuer Chip Card - All Commerical Products",
"network": "Visa",
"amount": 114.82,
"countTx": 4,
"rate": 0.0165,
"perTx": 0,
"fee": 1.89,
"standardRate": 0.02,
"standardPerTx": 0,
"standardFee": 2.2964,
"padding": 0
},
{
"term": "VI-EIRF NON CPS ALL OTHER",
"normalized": null,
"network": null,
"amount": 181,
"countTx": 1,
"rate": 0.023,
"perTx": 0.1,
"fee": 4.26,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-SIGNATURE CARD ELECTRONIC",
"normalized": null,
"network": null,
"amount": 5682.82,
"countTx": 101,
"rate": 0.023,
"perTx": 0.1,
"fee": 140.81,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-INTER PREM CAN ISS US ACQ",
"normalized": null,
"network": null,
"amount": 111.49,
"countTx": 3,
"rate": 0.0225,
"perTx": 0,
"fee": 2.51,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-BUSINESS CARD TR1 ELEC T&E",
"normalized": null,
"network": null,
"amount": 246.88,
"countTx": 4,
"rate": 0.024,
"perTx": 0.1,
"fee": 6.33,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-SIGNATURE PREFERRED CRP ELC",
"normalized": null,
"network": null,
"amount": 8346.52,
"countTx": 158,
"rate": 0.024,
"perTx": 0.1,
"fee": 216.12,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-SIGNATURE PREFERRED CRP STD",
"normalized": null,
"network": null,
"amount": 86.63,
"countTx": 1,
"rate": 0.0295,
"perTx": 0.1,
"fee": 2.66,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-SUPER PREMIUM LAC ISS US AC",
"normalized": "Issuer Chip Card - Infinite",
"network": "Visa",
"amount": 86.2,
"countTx": 4,
"rate": 0.0242,
"perTx": 0,
"fee": 2.09,
"standardRate": 0.0197,
"standardPerTx": 0,
"standardFee": 1.69814,
"padding": 0.39186
},
{
"term": "VI-BUSINESS CARD TR2 ELEC T&E",
"normalized": "Commercial\/Corporate\/Purchasing Level II",
"network": "Visa",
"amount": 36,
"countTx": 1,
"rate": 0.0275,
"perTx": 0.15,
"fee": 1.14,
"standardRate": 0.025,
"standardPerTx": 0.1,
"standardFee": 1,
"padding": 0.14
},
{
"term": "VI-BUSINESS CARD TR3 ELEC T&E",
"normalized": null,
"network": null,
"amount": 281.19,
"countTx": 5,
"rate": 0.0285,
"perTx": 0.2,
"fee": 9.01,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-CPS SMALL TICKET (DB)",
"normalized": "CPS\/Small Ticket, Debit - Exempt (CP)",
"network": "Visa",
"amount": 248.33,
"countTx": 22,
"rate": 0.0155,
"perTx": 0.04,
"fee": 4.73,
"standardRate": 0.0155,
"standardPerTx": 0.04,
"standardFee": 4.729115,
"padding": 0
},
{
"term": "VI-CPS\/RESTAURANT (DB)",
"normalized": "CPS\/Restaurant, Debit - Exempt (CP)",
"network": "Visa",
"amount": 6826.5,
"countTx": 123,
"rate": 0.0119,
"perTx": 0.1,
"fee": 93.54,
"standardRate": 0.0119,
"standardPerTx": 0.1,
"standardFee": 93.53535,
"padding": 0
},
{
"term": "VI-CORPORATE TRAVEL SVC",
"normalized": "Commercial\/Corporate\/Purchasing Travel Service",
"network": "Visa",
"amount": 1881.49,
"countTx": 28,
"rate": 0.0265,
"perTx": 0.1,
"fee": 52.66,
"standardRate": 0.0265,
"standardPerTx": 0.1,
"standardFee": 52.659485,
"padding": 0
},
{
"term": "VI-PURCHASING TRAVEL SVC",
"normalized": "Commercial\/Corporate\/Purchasing Travel Service",
"network": "Visa",
"amount": 830.56,
"countTx": 12,
"rate": 0.0265,
"perTx": 0.1,
"fee": 23.21,
"standardRate": 0.0265,
"standardPerTx": 0.1,
"standardFee": 23.20984,
"padding": 0
},
{
"term": "VI-US HNW CONSUMER ELECT",
"normalized": null,
"network": null,
"amount": 159.79,
"countTx": 7,
"rate": 0.024,
"perTx": 0.1,
"fee": 4.54,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-BUSINESS CARD TR4 ELEC",
"normalized": null,
"network": null,
"amount": 563.6,
"countTx": 11,
"rate": 0.0295,
"perTx": 0.2,
"fee": 18.83,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI-CPS\/RESTAURANT (PP)",
"normalized": "CPS\/Restaurant, Prepaid - Exempt (CP)",
"network": "Visa",
"amount": 338.58,
"countTx": 13,
"rate": 0.0115,
"perTx": 0.15,
"fee": 5.84,
"standardRate": 0.0115,
"standardPerTx": 0.15,
"standardFee": 5.84367,
"padding": 0
},
{
"term": "DSCVR INTL CONSUMER CREDIT",
"normalized": "PSL US International Commercial",
"network": "Discover",
"amount": 58,
"countTx": 2,
"rate": 0.0215,
"perTx": 0,
"fee": 1.25,
"standardRate": 0.024,
"standardPerTx": 0.1,
"standardFee": 1.592,
"padding": 0
},
{
"term": "DSCVR PSL REST DB",
"normalized": "PSL Restaurants - Premium Plus",
"network": "Discover",
"amount": 152.31,
"countTx": 1,
"rate": 0.011,
"perTx": 0.16,
"fee": 1.84,
"standardRate": 0.024,
"standardPerTx": 0.1,
"standardFee": 3.75544,
"padding": 0
},
{
"term": "DSCVR COMML ELECT OTHER",
"normalized": "PSL Commercial Electronic",
"network": "Discover",
"amount": 978.02,
"countTx": 17,
"rate": 0.023,
"perTx": 0.1,
"fee": 24.19,
"standardRate": 0.0235,
"standardPerTx": 0.1,
"standardFee": 24.68347,
"padding": 0
},
{
"term": "DSCVR PSL REST PR",
"normalized": "PSL Restaurants - Rewards",
"network": "Discover",
"amount": 894.54,
"countTx": 10,
"rate": 0.022,
"perTx": 0.1,
"fee": 20.68,
"standardRate": 0.0195,
"standardPerTx": 0.1,
"standardFee": 18.44353,
"padding": 2.23647
},
{
"term": "DSCVR PSL REST RW",
"normalized": "PSL Restaurants - Core",
"network": "Discover",
"amount": 1666.27,
"countTx": 32,
"rate": 0.019,
"perTx": 0.1,
"fee": 34.86,
"standardRate": 0.0156,
"standardPerTx": 0.1,
"standardFee": 29.193812,
"padding": 5.666188
},
{
"term": "DSCVR PSL EXP SVC RW",
"normalized": "PSL Express Services - Core",
"network": "Discover",
"amount": 13,
"countTx": 2,
"rate": 0.0195,
"perTx": 0,
"fee": 0.25,
"standardRate": 0.0195,
"standardPerTx": 0,
"standardFee": 0.2535,
"padding": 0
},
{
"term": "AXP RESTAURANT BASE T1",
"normalized": "Restaurant Tier 1",
"network": "AMEX",
"amount": 987.3,
"countTx": 55,
"rate": 0.0185,
"perTx": 0.1,
"fee": 23.77,
"standardRate": 0.0185,
"standardPerTx": 0.1,
"standardFee": 23.76505,
"padding": 0
},
{
"term": "AXP RESTAURANT NONUS T1",
"normalized": "Restaurant Non-U.S. Tier 1",
"network": "AMEX",
"amount": 93.8,
"countTx": 4,
"rate": 0.0225,
"perTx": 0.1,
"fee": 2.51,
"standardRate": 0.0225,
"standardPerTx": 0.1,
"standardFee": 2.5105,
"padding": 0
},
{
"term": "AXP RESTAURANT BASE T2",
"normalized": "Restaurant Tier 2",
"network": "AMEX",
"amount": 9111.85,
"countTx": 166,
"rate": 0.0245,
"perTx": 0.1,
"fee": 239.84,
"standardRate": 0.025,
"standardPerTx": 0.1,
"standardFee": 244.39625,
"padding": 0
},
{
"term": "AXP RESTAURANT NONSWIPE T2",
"normalized": "Restaurant Non-Swipe Tier 2",
"network": "AMEX",
"amount": 41.2,
"countTx": 1,
"rate": 0.0275,
"perTx": 0.1,
"fee": 1.23,
"standardRate": 0.028,
"standardPerTx": 0.1,
"standardFee": 1.2536,
"padding": 0
},
{
"term": "AXP RESTAURANT NONUS T2",
"normalized": "Restaurant Non-U.S. Tier 2",
"network": "AMEX",
"amount": 131.43,
"countTx": 3,
"rate": 0.0285,
"perTx": 0.1,
"fee": 4.05,
"standardRate": 0.025,
"standardPerTx": 0.1,
"standardFee": 3.58575,
"padding": 0.46425
},
{
"term": "AXP RESTAURANT BASE T3",
"normalized": "Restaurant Tier 3",
"network": "AMEX",
"amount": 2871.85,
"countTx": 9,
"rate": 0.0275,
"perTx": 0.1,
"fee": 79.88,
"standardRate": 0.0285,
"standardPerTx": 0.1,
"standardFee": 82.747725,
"padding": 0
}
],
"Total Interchange padding": 29.666393999999997,
"Interchange optimization": {
"totalSavings": 189.54499,
"items": [
{
"term": "MC-CORP DATA RATE I (US) BUS",
"normalized": "Data Rate I Level 1 Business Core | Commercial Data Rate I Business Level 1",
"network": "Mastercard",
"amount": 15303.97,
"rate": 0.0265,
"countTx": 48,
"perTx": 0.1,
"fee": 410.36,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 410.35521,
"standardRate": 0.0265,
"standardPerTx": 0.1,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "Data Rate II Level 1 Business Core | Commercial Data Rate II L1",
"optimizedRate": 0.019,
"optimizedPerTx": 0.1,
"optimizedCost": 295.57543,
"savings": 114.77978
}
],
"maxOptimizedCategory": "Data Rate II Level 1 Business Core | Commercial Data Rate II L1",
"maxOptimizedRate": 0.019,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 295.57543,
"maxOptimizedSavings": 114.77978
},
{
"term": "VI-PURCHASING CARD CNP",
"normalized": "Commercial\/Corporate\/Purchasing Card Not Present",
"network": "Visa",
"amount": 5297.85,
"rate": 0.027,
"countTx": 11,
"perTx": 0.1,
"fee": 144.14,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 144.14195,
"standardRate": 0.027,
"standardPerTx": 0.1,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "Commercial\/Corporate\/Purchasing Level II",
"optimizedRate": 0.025,
"optimizedPerTx": 0.1,
"optimizedCost": 133.54625,
"savings": 10.5957
},
{
"level": 3,
"optimizedCategory": "Commercial\/Corporate\/Purchasing Level III",
"optimizedRate": 0.019,
"optimizedPerTx": 0.1,
"optimizedCost": 101.75915,
"savings": 42.3828
}
],
"maxOptimizedCategory": "Commercial\/Corporate\/Purchasing Level III",
"maxOptimizedRate": 0.019,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 101.75915,
"maxOptimizedSavings": 42.3828
},
{
"term": "MC-WORLD ELITE MERIT I",
"normalized": "Merit I - World Elite ",
"network": "Mastercard",
"amount": 1671.82,
"rate": 0.026,
"countTx": 7,
"perTx": 0.1,
"fee": 44.17,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 44.16732,
"standardRate": 0.026,
"standardPerTx": 0.1,
"availableOptimizations": [
{
"level": 3,
"optimizedCategory": "MC World Elite Merit 1 (3D Secure)",
"optimizedRate": 0.022,
"optimizedPerTx": 0.1,
"optimizedCost": 37.48004,
"savings": 6.68728
}
],
"maxOptimizedCategory": "MC World Elite Merit 1 (3D Secure)",
"maxOptimizedRate": 0.022,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 37.48004,
"maxOptimizedSavings": 6.68728
},
{
"term": "VI-EIRF NON CPS ALL OTHER (PP)",
"normalized": "Electronic Interchange Reimbursement Fee (EIRF) - Exempt",
"network": "Visa",
"amount": 1825,
"rate": 0.018,
"countTx": 5,
"perTx": 0.2,
"fee": 33.85,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 33.85,
"standardRate": 0.018,
"standardPerTx": 0.2,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "CPS\/Card Not Present, Prepaid - Exempt (CNP)",
"optimizedRate": 0.0175,
"optimizedPerTx": 0.2,
"optimizedCost": 32.9375,
"savings": 0.9125
}
],
"maxOptimizedCategory": "CPS\/Card Not Present, Prepaid - Exempt (CNP)",
"maxOptimizedRate": 0.0175,
"maxOptimizedPerTx": 0.2,
"maxOptimizedCost": 32.9375,
"maxOptimizedSavings": 0.9125
},
{
"term": "MC-COM DATA RATE I FLT NFUEL",
"normalized": "Data Rate I - Large Market Credit | Commercial Data Rate I Large Market",
"network": "Mastercard",
"amount": 1118.8,
"rate": 0.027,
"countTx": 8,
"perTx": 0.1,
"fee": 31.01,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 31.0076,
"standardRate": 0.027,
"standardPerTx": 0.1,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "Data Rate II - Large Market Credit | Commercial Data Rate II Large Market",
"optimizedRate": 0.025,
"optimizedPerTx": 0.1,
"optimizedCost": 28.77,
"savings": 2.2376
},
{
"level": 3,
"optimizedCategory": "Data Rate III - Large Market Credit | Commercial Data Rate III Large Market",
"optimizedRate": 0.019,
"optimizedPerTx": 0.1,
"optimizedCost": 22.0572,
"savings": 8.9504
}
],
"maxOptimizedCategory": "Data Rate III - Large Market Credit | Commercial Data Rate III Large Market",
"maxOptimizedRate": 0.019,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 22.0572,
"maxOptimizedSavings": 8.9504
},
{
"term": "MC-DOMESTIC MERIT I (DB)",
"normalized": "Merit I - Debit Rate | Non-Regulated Consumer Debit",
"network": "Mastercard",
"amount": 1067.32,
"rate": 0.0165,
"countTx": 9,
"perTx": 0.15,
"fee": 18.96,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 18.96078,
"standardRate": 0.0165,
"standardPerTx": 0.15,
"availableOptimizations": [
{
"level": 3,
"optimizedCategory": "MC Merit 1 Debit (3D Secure)",
"optimizedRate": 0.011,
"optimizedPerTx": 0.15,
"optimizedCost": 13.09052,
"savings": 5.87026
}
],
"maxOptimizedCategory": "MC Merit 1 Debit (3D Secure)",
"maxOptimizedRate": 0.011,
"maxOptimizedPerTx": 0.15,
"maxOptimizedCost": 13.09052,
"maxOptimizedSavings": 5.87026
},
{
"term": "MC-BUS LEVEL 2 DATA RATE I",
"normalized": "Data Rate I Level 2 Business World | Commercial Data Rate I Business Level 2",
"network": "Mastercard",
"amount": 550,
"rate": 0.028,
"countTx": 1,
"perTx": 0.1,
"fee": 15.5,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 15.5,
"standardRate": 0.028,
"standardPerTx": 0.1,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "Data Rate II Level 2 Business World | Commercial Data Rate II L2",
"optimizedRate": 0.0205,
"optimizedPerTx": 0.1,
"optimizedCost": 11.375,
"savings": 4.125
}
],
"maxOptimizedCategory": "Data Rate II Level 2 Business World | Commercial Data Rate II L2",
"maxOptimizedRate": 0.0205,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 11.375,
"maxOptimizedSavings": 4.125
},
{
"term": "VI-EIRF NON CPS ALL OTHER (DB)",
"normalized": "Electronic Interchange Reimbursement Fee (EIRF), Debit - Exempt",
"network": "Visa",
"amount": 558.22,
"rate": 0.0175,
"countTx": 5,
"perTx": 0.2,
"fee": 10.77,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 10.76885,
"standardRate": 0.0175,
"standardPerTx": 0.2,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "CPS\/Card Not Present, Debit - Exempt (CNP)",
"optimizedRate": 0.0165,
"optimizedPerTx": 0.15,
"optimizedCost": 9.96063,
"savings": 0.80822
}
],
"maxOptimizedCategory": "CPS\/Card Not Present, Debit - Exempt (CNP)",
"maxOptimizedRate": 0.0165,
"maxOptimizedPerTx": 0.15,
"maxOptimizedCost": 9.96063,
"maxOptimizedSavings": 0.80822
},
{
"term": "VI-US BUS TR4 PRD 1",
"normalized": "Business Product 1 - Tier 4",
"network": "Visa",
"amount": 254.5,
"rate": 0.0295,
"countTx": 2,
"perTx": 0.1,
"fee": 7.71,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 7.70775,
"standardRate": 0.0295,
"standardPerTx": 0.1,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "Business Level II - Tier 4",
"optimizedRate": 0.022,
"optimizedPerTx": 0.1,
"optimizedCost": 5.799,
"savings": 1.90875
}
],
"maxOptimizedCategory": "Business Level II - Tier 4",
"maxOptimizedRate": 0.022,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 5.799,
"maxOptimizedSavings": 1.90875
},
{
"term": "VI-NON QUAL BUS CR",
"normalized": "Business Non-Qualified - Tier 1",
"network": "Visa",
"amount": 200,
"rate": 0.0315,
"countTx": 1,
"perTx": 0.2,
"fee": 6.5,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 6.5,
"standardRate": 0.0315,
"standardPerTx": 0.2,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "Business Level II - Tier 1",
"optimizedRate": 0.019,
"optimizedPerTx": 0.1,
"optimizedCost": 3.9,
"savings": 2.6
}
],
"maxOptimizedCategory": "Business Level II - Tier 1",
"maxOptimizedRate": 0.019,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 3.9,
"maxOptimizedSavings": 2.6
},
{
"term": "MC-ENHANCED MERIT I",
"normalized": "Merit I - Enhanced ",
"network": "Mastercard",
"amount": 130,
"rate": 0.021,
"countTx": 1,
"perTx": 0.1,
"fee": 2.83,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 2.83,
"standardRate": 0.021,
"standardPerTx": 0.1,
"availableOptimizations": [
{
"level": 3,
"optimizedCategory": "MC Enhanced Value Merit 1 (3D Secure)",
"optimizedRate": 0.017,
"optimizedPerTx": 0.1,
"optimizedCost": 2.31,
"savings": 0.52
}
],
"maxOptimizedCategory": "MC Enhanced Value Merit 1 (3D Secure)",
"maxOptimizedRate": 0.017,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 2.31,
"maxOptimizedSavings": 0.52
}
]
},
"Card Brands Dues and Assessments": [
{
"term": "MASTERCARD ASSESSMENT FEE",
"normalized": "Assessment %",
"network": "Mastercard",
"amount": 20526.39,
"countTx": 1,
"rate": 0.0013,
"perTx": 0,
"fee": 26.68,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC LICENSE VOLUME FEE",
"normalized": "MC Acquirer License Fee",
"network": "Mastercard",
"amount": 20526.39,
"countTx": 1,
"rate": 6.1e-5,
"perTx": 0,
"fee": 1.25,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC NETWORK ACCESS AUTH FEE",
"normalized": "Assessment PI (NABU Fee)",
"network": "Mastercard",
"amount": 0,
"countTx": 416,
"rate": 0,
"perTx": 0.0195,
"fee": 8.11,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VISA ASSESSMENT FEE CR",
"normalized": "Assessments %",
"network": "Visa",
"amount": 22542.51,
"countTx": 1,
"rate": 0.0013,
"perTx": 0,
"fee": 29.31,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VISA ASSESSMENT FEE DB",
"normalized": "Visa Debit Assessments",
"network": "Visa",
"amount": 25568.33,
"countTx": 1,
"rate": 0.0013,
"perTx": 0,
"fee": 33.24,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "ACQUIRER PROCESSOR FEE CREDIT",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 448,
"rate": 0,
"perTx": 0.0195,
"fee": 8.74,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "ACQUIRER PROCESSOR FEE DB\/PP",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 573,
"rate": 0,
"perTx": 0.0155,
"fee": 8.88,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "DISCOVER ASSESSMENT FEE",
"normalized": "Assessment %",
"network": "Discover",
"amount": 3762.14,
"countTx": 1,
"rate": 0.0013,
"perTx": 0,
"fee": 4.89,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "DISCOVER DATA USAGE FEE",
"normalized": "Assessment PI (Network Authorization Fee)†",
"network": "Discover",
"amount": 0,
"countTx": 64,
"rate": 0,
"perTx": 0.0195,
"fee": 1.25,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "NETWORK AUTHORIZATION FEE",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 64,
"rate": 0,
"perTx": 0.0025,
"fee": 0.16,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "AMEX NETWORK FEE",
"normalized": "Amex Network Fees",
"network": "AMEX",
"amount": 13237.43,
"countTx": 1,
"rate": 0.0015,
"perTx": 0,
"fee": 19.86,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI BASE II SYSTEM FILE FEE",
"normalized": "Clearing Access",
"network": "Visa",
"amount": 0,
"countTx": 990,
"rate": 0,
"perTx": 0.0018,
"fee": 1.78,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI BASE II CR VOUCHER FEE CR",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 1,
"rate": 0,
"perTx": 0.0195,
"fee": 0.02,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VISA INTL SERVICE FEE - BASE",
"normalized": null,
"network": null,
"amount": 797.21,
"countTx": 28,
"rate": 0,
"perTx": 0,
"fee": 6.38,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "US CROSS BORDER FEE",
"normalized": null,
"network": null,
"amount": 518.66,
"countTx": 14,
"rate": 0,
"perTx": 0,
"fee": 3.11,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VI TRANSACTION INTEGRITY FEE",
"normalized": "Visa Transaction Integrity Fee (TIF)",
"network": "Visa",
"amount": 0,
"countTx": 2,
"rate": 0,
"perTx": 0.1,
"fee": 0.2,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
}
],
"Total Card Brands Dues and Assessments padding": 0,
"Processor-Specific Fees": [
{
"term": "MASTERCARD SALES DISCOUNT",
"category": "Processing fee",
"network": "Processor",
"amount": 15250.57,
"rate": 0.0015,
"countTx": 1,
"perTx": 0,
"fee": 22.88
},
{
"term": "MASTERCARD DEBIT SALES DISC",
"category": "Processing fee",
"network": "Processor",
"amount": 5275.82,
"rate": 0.0015,
"countTx": 1,
"perTx": 0,
"fee": 7.91
},
{
"term": "MASTERCARD AUTH FEE",
"category": "Processing fee",
"network": "Processor",
"amount": 0,
"rate": 0,
"countTx": 435,
"perTx": 0.05,
"fee": 21.75
},
{
"term": "VISA DEBIT SALES DISCOUNT",
"category": "Processing fee",
"network": "Processor",
"amount": 25568.33,
"rate": 0.0015,
"countTx": 1,
"perTx": 0,
"fee": 38.35
},
{
"term": "VISA SALES DISCOUNT",
"category": "Processing fee",
"network": "Processor",
"amount": 22542.51,
"rate": 0.0015,
"countTx": 1,
"perTx": 0,
"fee": 33.81
},
{
"term": "VISA AUTH FEE",
"category": "Processing fee",
"network": "Processor",
"amount": 0,
"rate": 0,
"countTx": 1031,
"perTx": 0.05,
"fee": 51.55
},
{
"term": "DISCOVER SALES DISCOUNT",
"category": "Processing fee",
"network": "Processor",
"amount": 3609.83,
"rate": 0.0015,
"countTx": 1,
"perTx": 0,
"fee": 5.41
},
{
"term": "DISCOVER DEBIT SALES DISCOUNT",
"category": "Processing fee",
"network": "Processor",
"amount": 152.31,
"rate": 0.0015,
"countTx": 1,
"perTx": 0,
"fee": 0.23
},
{
"term": "DISCOVER AUTH FEE",
"category": "Processing fee",
"network": "Processor",
"amount": 0,
"rate": 0,
"countTx": 64,
"perTx": 0.05,
"fee": 3.2
},
{
"term": "AMEX AUTH FEE",
"category": "Processing fee",
"network": "Processor",
"amount": 0,
"rate": 0,
"countTx": 242,
"perTx": 0.05,
"fee": 12.1
},
{
"term": "AMEX SALES DISCOUNT",
"category": "Processing fee",
"network": "Processor",
"amount": 13237.43,
"rate": 0.0025,
"countTx": 1,
"perTx": 0,
"fee": 33.09
},
{
"term": "BATCH SETTLEMENT FEE",
"category": "Batch",
"network": "Processor",
"amount": 0,
"rate": 0,
"countTx": 24,
"perTx": 0.05,
"fee": 1.2
},
{
"term": "REGULATORY PRODUCT FEE",
"category": "Service",
"network": "Processor",
"amount": 0,
"rate": 0,
"countTx": 1,
"perTx": 0,
"fee": 3.5
},
{
"term": "MONTHLY STATEMENT FEE",
"category": "Service",
"network": "Processor",
"amount": 0,
"rate": 0,
"countTx": 1,
"perTx": 0,
"fee": 10
}
],
"Unknown Fees": [
{
"term": "MASTERCARD KILOBYTE TRANS FEE",
"normalized": null,
"network": null,
"amount": 0,
"rate": 0,
"countTx": 213,
"perTx": 0.035,
"fee": 7.46
}
]
}
HTTP Request
GET api/v1/statements/get-datapoints/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | A valid statement ID previously obtained. |
2.8 Get FeeNav Excel (id) - GET
Returns the completed analysis in the Fee Navigator standard Excel .xlsx format. It will include multiple tabs, based on the options selected.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/analysis/download/excel/"xK1v5bvy"?analysis=1&summary=0&padding=1&optimization=1" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/analysis/download/excel/"xK1v5bvy""
);
let params = {
"analysis": "1",
"summary": "0",
"padding": "1",
"optimization": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/analysis/download/excel/"xK1v5bvy"',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'query' => [
'analysis'=> '1',
'summary'=> '0',
'padding'=> '1',
'optimization'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/analysis/download/excel/"xK1v5bvy"'
params = {
'analysis': '1',
'summary': '0',
'padding': '1',
'optimization': '1',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (404):
{
"errors": [
"Statement not found"
]
}
Example response (500):
{
"errors": [
"Internal Server Error -- We had a problem with our server. Try again later."
]
}
Example response (500):
{
"message": "Server Error"
}
HTTP Request
GET api/v1/analysis/download/excel/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | Statement id previously obtained. |
Query Parameters
Parameter | Status | Description |
---|---|---|
analysis |
required | Whether to return full analysis (1) or not (0). |
summary |
required | Whether to return summary analysis (1) or not (0). |
padding |
required | Whether to extract IC Padding (1) or not (0). |
optimization |
required | Whether to extract IC Optimization (1) or not (0). |
2.9 Get Proposal PDF (id) - GET
Returns the completed proposal in PDF format. That is, once generated in Word/Excel, it will be converted to PDF and returned.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-proposal-pdf/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-proposal-pdf/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-proposal-pdf/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-proposal-pdf/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (404):
{
"errors": [
"Statement not found"
]
}
Example response (500):
{
"errors": [
"Internal Server Error -- We had a problem with our server. Try again later."
]
}
Example response (500):
{
"message": "Server Error"
}
HTTP Request
GET api/v1/get-proposal-pdf/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | Statement id previously obtained. |
2.10 Get Proposal - GET
Returns the completed proposal in its source template format - either Word or Excel.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-proposal/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-proposal/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-proposal/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-proposal/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (404):
{
"errors": [
"Statement not found"
]
}
Example response (500):
{
"errors": [
"Internal Server Error -- We had a problem with our server. Try again later."
]
}
Example response (500):
{
"message": "Server Error"
}
HTTP Request
GET api/v1/get-proposal/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | Statement id previously obtained. |
2.11 Update Proposal (id) - POST
ID | Name | Description |
---|---|---|
95 | Visa Credit discRateProposed | Discount Rate for Visa Credit (Proposed) |
96 | Visa Credit transactionFeeProposed | Per transaction cost for Visa Credit (Proposed) |
97 | Visa Debit discRateProposed | Discount Rate for Visa Debit (Proposed) |
98 | Visa Debit transactionFeeProposed | Per transaction cost for Visa Debit (Proposed) |
99 | Visa Auth transactionFeeProposed | Per authorization cost for Visa (Proposed) |
100 | Mastercard Credit discRateProposed | Discount Rate for Mastercard Credit (Proposed) |
101 | Mastercard Credit transactionFeeProposed | Per transaction cost for Mastercard Credit (Proposed) |
102 | Mastercard Debit discRateProposed | Discount Rate for Mastercard Debit (Proposed) |
103 | Mastercard Debit transactionFeeProposed | Per transaction cost for Mastercard Debit (Proposed) |
104 | Mastercard Auth transactionFeeProposed | Per authorization cost for Mastercard (Proposed) |
105 | Discover Credit discRateProposed | Discount Rate for Discover Credit (Proposed) |
106 | Discover Credit transactionFeeProposed | Per transaction cost for Discover Credit (Proposed) |
107 | Discover Debit discRateProposed | Discount Rate for Discover Debit (Proposed) |
108 | Discover Debit transactionFeeProposed | Per transaction cost for Discover Debit (Proposed) |
109 | Discover Auth transactionFeeProposed | Per authorization cost for Discover (Proposed) |
110 | American Express discRateProposed | Discount Rate for AMEX Credit (Proposed) |
111 | American Express transactionFeeProposed | Per transaction cost for AMEX Credit (Proposed) |
112 | American Express Auth transactionFeeProposed | Per authorization cost for AMEX (Proposed) |
113 | PIN Debit discRateProposed | Discount Rate for PIN Debit (Proposed) |
114 | PIN Debit transactionFeeProposed | Discount Rate for Discover Debit (Proposed) |
115 | EBT transactionFeeProposed | Discount Rate for EBT (Proposed) |
116 | Fleet Cards / Other discRateProposed | |
117 | Fleet Cards / Other transactionFeeProposed | |
122 | Interchange & downgrades Proposed | Interchange & Amex Program (Proposed) |
123 | Interchange optimization Proposed | "Interchange optimization, if available" |
125 | AVS transactionFee Proposed | Cost Per AVS transaction (Proposed) |
126 | PCI compliance Proposed | PCI Compliance Fee (Proposed) |
127 | Non-PCI compliance Proposed | PCI Non-Complince Fee (Proposed) |
128 | Batch transactionFee Proposed | Per batch transaction cost (Proposed) |
129 | Monthly Proposed | Service/Custom fees (Proposed) |
151 | Other fees Proposed | |
155 | Dues & Assessments Proposed | Dues & Assessments (Proposed) |
162 | Chargeback Proposed | Chargeback (Proposed) |
166 | Surcharging Proposed | Surcharging (Proposed) |
169 | Total Volume Proposed | Volume amount for all card types (Proposed) |
Update proposed data points for a statement's proposal.
If the plan is changed after setting the datapoints, all the custom datapoints entered will be overwritten.
Example request:
curl -X POST \
"https://developer.feenavigator.com/api/v1/update-proposal/x236td5" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}" \
-d '{"dataPoints":"{\"95\":\"0.01990\",\"162\":\"30\"}"}'
const url = new URL(
"https://developer.feenavigator.com/api/v1/update-proposal/x236td5"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
let body = {
"dataPoints": "{\"95\":\"0.01990\",\"162\":\"30\"}"
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://developer.feenavigator.com/api/v1/update-proposal/x236td5',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'body' => [
'dataPoints' => '{"95":"0.01990","162":"30"}',
]
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/update-proposal/x236td5'
payload = {
"dataPoints": "{\"95\":\"0.01990\",\"162\":\"30\"}"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (404):
{
"errors": [
"Statement not found."
]
}
Example response (200):
{
"status": "success",
"affectedDataPoints": [
{
"id": 78,
"name": "Potential Savings",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": -21569.14,
"prettyValue": null
},
{
"id": 121,
"name": "Processing Fees Proposed",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": 2233.82,
"prettyValue": null
},
{
"id": 130,
"name": "Total Fees Proposed",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": 2884.62,
"prettyValue": null
},
{
"id": 131,
"name": "Effective Rate Proposed",
"type": "percentage",
"decimals": 2,
"isCorrect": null,
"value": 0.0844,
"prettyValue": null
},
{
"id": 132,
"name": "Monthly Savings",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": -1797.43,
"prettyValue": null
},
{
"id": 133,
"name": "3 Year Savings",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": -64707.42,
"prettyValue": null
},
{
"id": 134,
"name": "Pass-Through Fees Proposed",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": 650.8,
"prettyValue": null
},
{
"id": 136,
"name": "Percent Processing Fees Proposed",
"type": "percentage",
"decimals": 2,
"isCorrect": null,
"value": 0.0654,
"prettyValue": null
},
{
"id": 138,
"name": "Percent Pass-Through Fees Proposed",
"type": "percentage",
"decimals": 2,
"isCorrect": null,
"value": 0.019,
"prettyValue": null
},
{
"id": 80,
"name": "Markup",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": 0.07,
"prettyValue": null
},
{
"id": 142,
"name": "Margin Proposed Company",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": 1123.3,
"prettyValue": null
},
{
"id": 146,
"name": "Company Residual Proposed",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": 561.65,
"prettyValue": null
},
{
"id": 147,
"name": "Agent Residual Proposed",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": 561.65,
"prettyValue": null
},
{
"id": 150,
"name": "Processor Cost Proposed",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": 464.14,
"prettyValue": null
},
{
"id": 152,
"name": "Margin Proposed Agent",
"type": "number",
"decimals": 2,
"isCorrect": null,
"value": 1123.3,
"prettyValue": null
}
]
}
HTTP Request
POST api/v1/update-proposal/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | Statement id previously obtained. |
Body Parameters
Parameter | Type | Status | Description |
---|---|---|---|
dataPoints |
string | required | An JSON encoded array containing some or all the proposed data points new values having the data point ID as key. |
2.12 New Proposal - GET
Generates a new Proposal for existing analysed statement based on the specified plan.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/new-proposal/xYz23Pq?idPlan=123" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/new-proposal/xYz23Pq"
);
let params = {
"idPlan": "123",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/new-proposal/xYz23Pq',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'query' => [
'idPlan'=> '123',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/new-proposal/xYz23Pq'
params = {
'idPlan': '123',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"idStatement": "ccYrRdByO",
"idCase": "_NNN_",
"idMerchant": "_UUID_",
"MerchantProposalLink": "https:\/\/periscope-ui.pro.feenavigator.com\/#\/merchant-proposal\/_UUID_",
"AnalysisEditLink": "https:\/\/feenavigator.com\/compass\/#\/upload\/case\/_NNNNN_",
"datapoints": {
"merchant": {
"id": "_UUID_",
"company_id": 1234,
"merchant_name": "SOME MERCHANT NAME",
"first_name": "John",
"last_name": "Smith",
"email": null,
"mobile": null,
"zip": "90670-5133",
"industry": 5713,
"crm_stage_id": null,
"created_at": "2023-01-17T07:27:22.000000Z",
"updated_at": "2023-01-17T07:27:22.000000Z"
},
"MerchantProposalLink": "https:\/\/periscope-ui.pro.feenavigator.com\/#\/merchant-proposal\/_UUID_",
"AnalysisEditLink": "https:\/\/feenavigator.com\/compass\/#\/upload\/case\/_NNNNN_",
"EBT discRate": null,
"Pricing Type": "IC Plus",
"Merchant Name": "SOME MERCHANT NAME",
"Merchant Address": "1234 BEST AVE\r\nSANTA FE SPGS CA 90670-1234",
"Merchant Number": "56220000005223",
"Statement Period Start": "10\/01\/22",
"Statement Period End": "10\/31\/22",
"Third Party Transactions": null,
"Visa Credit amount": 430446.3,
"Visa Credit discRate": 0.0055,
"Visa Credit nrTransactions": 88,
"Visa Credit transactionFee": null,
"Visa Credit discRateProposed": 0.0121,
"Visa Credit transactionFeeProposed": 0.18,
"Visa Debit amount": null,
"Visa Debit discRate": null,
"Visa Debit nrTransactions": null,
"Visa Debit transactionFee": null,
"Visa Debit discRateProposed": null,
"Visa Debit transactionFeeProposed": null,
"Visa Auth nrTransactions": null,
"Visa Auth transactionFee": null,
"Visa Auth transactionFeeProposed": null,
"Mastercard Credit amount": 39225.75,
"Mastercard Credit discRate": 0.0055,
"Mastercard Credit nrTransactions": 18,
"Mastercard Credit transactionFee": null,
"Mastercard Credit discRateProposed": 0.0121,
"Mastercard Credit transactionFeeProposed": 0.18,
"Mastercard Debit amount": null,
"Mastercard Debit discRate": null,
"Mastercard Debit nrTransactions": null,
"Mastercard Debit transactionFee": null,
"Mastercard Debit discRateProposed": null,
"Mastercard Debit transactionFeeProposed": null,
"Mastercard Auth nrTransactions": null,
"Mastercard Auth transactionFee": null,
"Mastercard Auth transactionFeeProposed": null,
"Discover Credit amount": 2171.6,
"Discover Credit discRate": 0.0055,
"Discover Credit nrTransactions": 1,
"Discover Credit transactionFee": null,
"Discover Credit discRateProposed": 0.0121,
"Discover Credit transactionFeeProposed": 0.18,
"Discover Debit amount": null,
"Discover Debit discRate": null,
"Discover Debit nrTransactions": null,
"Discover Debit transactionFee": null,
"Discover Debit discRateProposed": null,
"Discover Debit transactionFeeProposed": null,
"Discover Auth nrTransactions": null,
"Discover Auth transactionFee": null,
"Discover Auth transactionFeeProposed": null,
"American Express amount": 47138.3,
"American Express discRate": 0.0055,
"American Express nrTransactions": 16,
"American Express transactionFee": null,
"American Express discRateProposed": 0.0121,
"American Express transactionFeeProposed": 0.18,
"American Express Auth nrTransactions": null,
"American Express Auth transactionFee": null,
"American Express Auth transactionFeeProposed": null,
"PIN Debit amount": null,
"PIN Debit discRate": null,
"PIN Debit nrTransactions": null,
"PIN Debit transactionFee": null,
"PIN Debit discRateProposed": null,
"PIN Debit transactionFeeProposed": null,
"EBT amount": null,
"EBT nrTransactions": null,
"EBT transactionFee": null,
"EBT transactionFeeProposed": null,
"Fleet Cards \/ Other amount": null,
"Fleet Cards \/ Other discRate": null,
"Fleet Cards \/ Other nrTransactions": null,
"Fleet Cards \/ Other transactionFee": null,
"Fleet Cards \/ Other discRateProposed": null,
"Fleet Cards \/ Other transactionFeeProposed": null,
"Interchange & downgrades": 12407,
"Dues & Assessments": 747.84,
"PIN debit interchange": null,
"AVS nrTransactions": null,
"AVS transactionFee": null,
"PCI compliance": 3,
"Non-PCI compliance": null,
"Batch nrTransactions": 21,
"Batch transactionFee": 0.25,
"Monthly": 153.44,
"Chargeback": null,
"Surcharging": null,
"Total Volume": 518981.95,
"Total Fees": 16737.1,
"Industry": "5713",
"Representative First Name": null,
"Representative Last Name": null,
"Representative Phone": null,
"Representative Email": null,
"Card brands \/ other": null,
"Processing Fees": 3582.26,
"Pass-Through Fees": 13154.84,
"Other fees": 566.17,
"Calculated Other Fees": null,
"Total Calculated Fees": 16737.1,
"Monthly Fees": 16737.1,
"1-Year Fees": 200845.2,
"3-Year Fees": 602535.6,
"Effective Rate": 0.0322,
"Avoidable Fees": null,
"Potential Savings": 7598.12,
"Statement Period": "Oct 2022",
"Total nrTransactions": 123,
"Average Ticket": 4219.37,
"Processing Fees Proposed": 6873.24,
"Interchange & downgrades Proposed": 12406.99,
"Interchange optimization Proposed": -3924.15,
"PIN debit interchange Proposed": null,
"AVS transactionFee Proposed": null,
"PCI compliance Proposed": null,
"Non-PCI compliance Proposed": null,
"Batch transactionFee Proposed": 0.25,
"Monthly Proposed": null,
"Chargeback Proposed": null,
"Other fees Proposed": 566.17,
"Total Fees Proposed": 16103.92,
"Effective Rate Proposed": 0.031,
"Monthly Savings": 633.18,
"3 Year Savings": 22794.37,
"Pass-Through Fees Proposed": 9230.68,
"Percent Processing Fees": 0.0069,
"Percent Processing Fees Proposed": 0.0132,
"Percent Pass-Through Fees": 0.0253,
"Percent Pass-Through Fees Proposed": 0.0178,
"Calculated Other Fees Proposed": null,
"Percent Other Fees": null,
"Percent Other Fees Proposed": null,
"Calculated Total Volume": 518981.95,
"Card brands \/ other Proposed": null,
"Dues & Assessments Proposed": 747.84,
"Surcharging Proposed": null,
"Tiers Proposed": null,
"Custom Service Proposed": null,
"Other Processing Fees": null,
"Margin Proposed Company": 4999.81,
"Company Residual Proposed": 2499.91,
"Agent Residual Proposed": 2499.91,
"Potential Margin Company": 6166.42,
"Potential Margin Agent": 6166.42,
"Processor Cost Proposed": 1302.01,
"Margin Proposed Agent": 4999.81,
"Pass-through Fees To Substract": 0,
"Interchange": [
{
"term": "VS Non-Qual Purchasing Credit",
"normalized": null,
"network": null,
"amount": 5299.95,
"countTx": 1,
"rate": 0.0295,
"perTx": 0.1,
"fee": 156.45,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VS EIRF Debit",
"normalized": "Electronic Interchange Reimbursement Fee (EIRF), Debit - Exempt",
"network": "Visa",
"amount": 1387.22,
"countTx": 1,
"rate": 0.0175,
"perTx": 0.2,
"fee": 24.48,
"standardRate": 0.0175,
"standardPerTx": 0.2,
"standardFee": 24.47635,
"padding": 0
},
{
"term": "VS Non Qual Cons Cr",
"normalized": "Non-Qualified Consumer Credit - Signature Preferred (Visa Infinite)",
"network": "Visa",
"amount": 21581.19,
"countTx": 9,
"rate": 0.0315,
"perTx": 0.1,
"fee": 680.71,
"standardRate": 0.0315,
"standardPerTx": 0.1,
"standardFee": 680.707485,
"padding": 0
},
{
"term": "VS Non Qual Bus Cr",
"normalized": "Business Non-Qualified - Tier 1",
"network": "Visa",
"amount": 298378.08,
"countTx": 28,
"rate": 0.0315,
"perTx": 0.2,
"fee": 9404.52,
"standardRate": 0.0315,
"standardPerTx": 0.2,
"standardFee": 9404.50952,
"padding": 0.01048
},
{
"term": "VS US Regulated Debit",
"normalized": "CPS\/Retail, Debit - Regulated (CP)",
"network": "Visa",
"amount": 105031.36,
"countTx": 50,
"rate": 0.0005,
"perTx": 0.22,
"fee": 63.52,
"standardRate": 0.0005,
"standardPerTx": 0.22,
"standardFee": 63.51568,
"padding": 0
},
{
"term": "MC World Elite Key Entered",
"normalized": "Key-entered - World Elite",
"network": "Mastercard",
"amount": 5541.63,
"countTx": 2,
"rate": 0.026,
"perTx": 0.1,
"fee": 144.29,
"standardRate": 0.026,
"standardPerTx": 0.1,
"standardFee": 144.28238,
"padding": 0
},
{
"term": "MC Business Level 5 Data Rate I",
"normalized": "Data Rate I Level 5 | Commercial Data Rate I Business Level 5",
"network": "Mastercard",
"amount": 25357.9,
"countTx": 11,
"rate": 0.03,
"perTx": 0.1,
"fee": 761.84,
"standardRate": 0.03,
"standardPerTx": 0.1,
"standardFee": 761.837,
"padding": 0
},
{
"term": "MC US Cons Regulated POS Debit w\/Fraud Adj",
"normalized": "Regulated Purchases POS Debit with Fraud Adjustment - Debit Rate | Universal Regulated Debit Fraud Adj",
"network": "Mastercard",
"amount": 8326.22,
"countTx": 5,
"rate": 0.0005,
"perTx": 0.22,
"fee": 5.27,
"standardRate": 0.0005,
"standardPerTx": 0.22,
"standardFee": 5.26311,
"padding": 0
},
{
"term": "AM Retail Tier 2",
"normalized": "Retail Tier 2",
"network": "AMEX",
"amount": 2643.42,
"countTx": 4,
"rate": 0.0195,
"perTx": 0.1,
"fee": 51.94,
"standardRate": 0.0195,
"standardPerTx": 0.1,
"standardFee": 51.94669,
"padding": 0
},
{
"term": "AM Retail Tier 3",
"normalized": "Retail Tier 3",
"network": "AMEX",
"amount": 44502.81,
"countTx": 13,
"rate": 0.024,
"perTx": 0.1,
"fee": 1069.36,
"standardRate": 0.024,
"standardPerTx": 0.1,
"standardFee": 1069.36744,
"padding": 0
},
{
"term": "DS PSL Key Entry PR",
"normalized": "PSL Key Entry - Premium",
"network": "Discover",
"amount": 2171.6,
"countTx": 1,
"rate": 0.0205,
"perTx": 0.1,
"fee": 44.62,
"standardRate": 0.0205,
"standardPerTx": 0.1,
"standardFee": 44.6178,
"padding": 0
}
],
"Total Interchange padding": 0.01048,
"Interchange optimization": {
"totalSavings": 3924.14747,
"items": [
{
"type": "Other",
"term": "VS Non Qual Bus Cr",
"normalized": "Business Non-Qualified - Tier 1",
"network": "Visa",
"amount": 298378.08,
"rate": 0.0315,
"countTx": 28,
"perTx": 0.2,
"fee": 9404.52,
"padding": 0.01048,
"paddingPercentage": 1.114357776793116e-6,
"standardCost": 9404.50952,
"standardRate": 0.0315,
"standardPerTx": 0.2,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "Business Level II - Tier 1",
"optimizedRate": 0.019,
"optimizedPerTx": 0.1,
"optimizedCost": 5671.98352,
"savings": 3732.526
}
],
"maxOptimizedCategory": "Business Level II - Tier 1",
"maxOptimizedRate": 0.019,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 5671.98352,
"maxOptimizedSavings": 3732.526
},
{
"type": "Other",
"term": "MC Business Level 5 Data Rate I",
"normalized": "Data Rate I Level 5 | Commercial Data Rate I Business Level 5",
"network": "Mastercard",
"amount": 25357.9,
"rate": 0.03,
"countTx": 11,
"perTx": 0.1,
"fee": 761.84,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 761.837,
"standardRate": 0.03,
"standardPerTx": 0.1,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "Data Rate II Level 5 | Commercial Data Rate II L5",
"optimizedRate": 0.0225,
"optimizedPerTx": 0.1,
"optimizedCost": 571.65275,
"savings": 190.18425
}
],
"maxOptimizedCategory": "Data Rate II Level 5 | Commercial Data Rate II L5",
"maxOptimizedRate": 0.0225,
"maxOptimizedPerTx": 0.1,
"maxOptimizedCost": 571.65275,
"maxOptimizedSavings": 190.18425
},
{
"type": "Other",
"term": "VS EIRF Debit",
"normalized": "Electronic Interchange Reimbursement Fee (EIRF), Debit - Exempt",
"network": "Visa",
"amount": 1387.22,
"rate": 0.0175,
"countTx": 1,
"perTx": 0.2,
"fee": 24.48,
"padding": 0,
"paddingPercentage": 0,
"standardCost": 24.47635,
"standardRate": 0.0175,
"standardPerTx": 0.2,
"availableOptimizations": [
{
"level": 2,
"optimizedCategory": "CPS\/Card Not Present, Debit - Exempt (CNP)",
"optimizedRate": 0.0165,
"optimizedPerTx": 0.15,
"optimizedCost": 23.03913,
"savings": 1.43722
}
],
"maxOptimizedCategory": "CPS\/Card Not Present, Debit - Exempt (CNP)",
"maxOptimizedRate": 0.0165,
"maxOptimizedPerTx": 0.15,
"maxOptimizedCost": 23.03913,
"maxOptimizedSavings": 1.43722
}
]
},
"Card Brands Dues and Assessments": [
{
"term": "VS-NAPF-Credit",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 45,
"rate": 0,
"perTx": 0.0195,
"fee": 0.88,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VS-NAPFDOMCRAUTHREV",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 1,
"rate": 0,
"perTx": 0.0195,
"fee": 0.02,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VS-VS FANF CP",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 1,
"rate": 0,
"perTx": 0,
"fee": 2,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VS-NAPF-Debit",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 55,
"rate": 0,
"perTx": 0.0155,
"fee": 0.85,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VS-TIF",
"normalized": null,
"network": null,
"amount": 431677.8,
"countTx": 89,
"rate": 0,
"perTx": 0.1,
"fee": 8.9,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VS-ASSMNT CREDIT",
"normalized": "Assessments %",
"network": "Visa",
"amount": 325259.22,
"countTx": 38,
"rate": 0.0014,
"perTx": 0,
"fee": 455.34,
"standardRate": 0.0014,
"standardPerTx": 0,
"standardFee": 455.362908,
"padding": 0
},
{
"term": "VS-ASSMNT DEBIT",
"normalized": null,
"network": null,
"amount": 106418.58,
"countTx": 51,
"rate": 0.0013,
"perTx": 0,
"fee": 138.34,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VS-VS TRANSMFEE",
"normalized": null,
"network": null,
"amount": 432909.3,
"countTx": 90,
"rate": 0,
"perTx": 0.0018,
"fee": 0.16,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "VS-VSCRVCHRFEEDB",
"normalized": null,
"network": null,
"amount": 1231.5,
"countTx": 1,
"rate": 0,
"perTx": 0.0155,
"fee": 0.02,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-ACQ Brnd Vol ABV",
"normalized": null,
"network": null,
"amount": 27791.75,
"countTx": 8,
"rate": 0.0014,
"perTx": 0,
"fee": 38.92,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-ACQ Brand Volume",
"normalized": null,
"network": null,
"amount": 11434,
"countTx": 10,
"rate": 0.0013,
"perTx": 0,
"fee": 14.86,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-AVS CardPresent",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 10,
"rate": 0,
"perTx": 0.01,
"fee": 0.1,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-MC Acq Licn Fee",
"normalized": null,
"network": null,
"amount": 39225.75,
"countTx": 18,
"rate": 0.000125,
"perTx": 0,
"fee": 4.9,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-MC Location Fee",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 1,
"rate": 0,
"perTx": 0,
"fee": 1.25,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-NABU Auth",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 21,
"rate": 0,
"perTx": 0.0195,
"fee": 0.41,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "MC-MC Sfe Nt Aq Fee",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 21,
"rate": 0,
"perTx": 0.0007,
"fee": 0.01,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "AM-AM USASSMNTFEE",
"normalized": null,
"network": null,
"amount": 47146.23,
"countTx": 17,
"rate": 0.00165,
"perTx": 0,
"fee": 77.82,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "DS-DS Assessment",
"normalized": null,
"network": null,
"amount": 2171.6,
"countTx": 1,
"rate": 0.0014,
"perTx": 0,
"fee": 3.04,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
},
{
"term": "DS-DS Ntwk Auth Fee",
"normalized": null,
"network": null,
"amount": 0,
"countTx": 1,
"rate": 0,
"perTx": 0.019,
"fee": 0.02,
"standardRate": 0,
"standardPerTx": 0,
"standardFee": 0,
"padding": 0
}
],
"Total Card Brands Dues and Assessments padding": 0,
"Processor-Specific Fees": [
{
"term": "Discover Authorization",
"category": "Processing fee",
"amount": 0,
"rate": 0,
"countTx": 1,
"perTx": 0.1,
"fee": 0.1
},
{
"term": "MasterCard Authorization",
"category": "Processing fee",
"amount": 0,
"rate": 0,
"countTx": 21,
"perTx": 0.1,
"fee": 2.1
},
{
"term": "Visa Authorization",
"category": "Processing fee",
"amount": 0,
"rate": 0,
"countTx": 102,
"perTx": 0.1,
"fee": 10.2
},
{
"term": "AMEX Authorization",
"category": "Processing fee",
"amount": 0,
"rate": 0,
"countTx": 19,
"perTx": 0.1,
"fee": 1.9
},
{
"term": "AM-Non-Swiped Tr",
"category": "Processing fee",
"amount": 49085.22,
"rate": 0.003,
"countTx": 18,
"perTx": 0,
"fee": 147.25
},
{
"term": "AMEX Support Fee",
"category": "Service",
"amount": 47146.23,
"rate": 0.003,
"countTx": 1,
"perTx": 0,
"fee": 141.44
},
{
"term": "Monthly Service Fee",
"category": "Service",
"amount": 5,
"rate": 0,
"countTx": 1,
"perTx": 0,
"fee": 5
},
{
"term": "Regulatory Compliance Fee",
"category": "PCI Compliance",
"amount": 3,
"rate": 0,
"countTx": 1,
"perTx": 0,
"fee": 3
},
{
"term": "Gateway Access Fee",
"category": "Service",
"amount": 7,
"rate": 0,
"countTx": 1,
"perTx": 0,
"fee": 7
},
{
"term": "Batch Fee",
"category": "Batch",
"amount": 0,
"rate": 0,
"countTx": 21,
"perTx": 0.25,
"fee": 5.25
}
],
"Unknown Fees": [
{
"term": "Gateway Authorization",
"normalized": null,
"network": null,
"amount": 0,
"rate": 0,
"countTx": 143,
"perTx": 0.07,
"fee": 10.01
},
{
"term": "VS-Visa US AVS",
"normalized": null,
"network": null,
"amount": 0,
"rate": 0,
"countTx": 70,
"perTx": 0.001,
"fee": 0.07
},
{
"term": "AM-Amex AcqTransFee",
"normalized": null,
"network": null,
"amount": 49085.22,
"rate": 0,
"countTx": 18,
"perTx": 0.02,
"fee": 0.36
},
{
"term": "DS-DS AVS",
"normalized": null,
"network": null,
"amount": 0,
"rate": 0,
"countTx": 1,
"perTx": 0.005,
"fee": 0.01
},
{
"term": "DS-DS Dig Invt Fee",
"normalized": null,
"network": null,
"amount": 2171.6,
"rate": 0.0001,
"countTx": 1,
"perTx": 0,
"fee": 0.22
},
{
"term": "TSS Network Fee",
"normalized": null,
"network": null,
"amount": 520221.38,
"rate": 0.0007,
"countTx": 125,
"perTx": 0,
"fee": 364.15
},
{
"term": "Compass Reporting Fee",
"normalized": null,
"network": null,
"amount": 3,
"rate": 0,
"countTx": 1,
"perTx": 0,
"fee": 3
}
],
"IsQuickQuote": 0
}
}
HTTP Request
GET api/v1/new-proposal/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | Statement id previously obtained. |
Query Parameters
Parameter | Status | Description |
---|---|---|
idPlan |
optional | optional The new plan based on which to generate the new proposal. |
2.13 Set Plan (id) - PUT
Sets a specified proposal plan so that the proposal may be re-generated using the corresponding {pricing regimen, cost/commissions, proposal template} set.
Example request:
curl -X PUT \
"https://developer.feenavigator.com/api/v1/set-plan/1755002352774017576?idPlan=1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/set-plan/1755002352774017576"
);
let params = {
"idPlan": "1755002352774017576",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "PUT",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://developer.feenavigator.com/api/v1/set-plan/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'query' => [
'idPlan'=> '1755002352774017576',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/set-plan/1755002352774017576'
params = {
'idPlan': '1755002352774017576',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('PUT', url, headers=headers, params=params)
response.json()
Example response (200):
{
"status": "updated"
}
Example response (404):
{
"errors": [
"Statement not found"
]
}
Example response (500):
{
"errors": [
"Internal Server Error -- We had a problem with our server. Try again later."
]
}
HTTP Request
PUT api/v1/set-plan/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | Statement id previously obtained. |
Query Parameters
Parameter | Status | Description |
---|---|---|
idPlan |
required | ApPlan id previously obtained. |
2.14 Set Default Plan (id) - PUT
Sets the default proposal plan for this user.
The proposal plan includes a set of {pricing regimen, cost/commissions, proposal template}.
Example request:
curl -X PUT \
"https://developer.feenavigator.com/api/v1/set-default-plan/1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/set-default-plan/1755002352774017576"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "PUT",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://developer.feenavigator.com/api/v1/set-default-plan/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/set-default-plan/1755002352774017576'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('PUT', url, headers=headers)
response.json()
Example response (200):
{
"status": "updated"
}
Example response (404):
{
"errors": [
"Statement not found"
]
}
Example response (500):
{
"errors": [
"Internal Server Error -- We had a problem with our server. Try again later."
]
}
HTTP Request
PUT api/v1/set-default-plan/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | Statement id previously obtained. |
2.15 Set MCC (id) - PUT
Sets the industry/MCC associated with the statement.
Example request:
curl -X PUT \
"https://developer.feenavigator.com/api/v1/set-mcc/1755002352774017576?idMcc=1755002352774017576" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/set-mcc/1755002352774017576"
);
let params = {
"idMcc": "1755002352774017576",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "PUT",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://developer.feenavigator.com/api/v1/set-mcc/1755002352774017576',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'query' => [
'idMcc'=> '1755002352774017576',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/set-mcc/1755002352774017576'
params = {
'idMcc': '1755002352774017576',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('PUT', url, headers=headers, params=params)
response.json()
Example response (200):
{
"status": "updated"
}
Example response (404):
{
"errors": [
"Statement not found"
]
}
Example response (500):
{
"errors": [
"Internal Server Error -- We had a problem with our server. Try again later."
]
}
HTTP Request
PUT api/v1/set-mcc/{id}
URL Parameters
Parameter | Status | Description |
---|---|---|
id |
required | Statement id previously obtained. |
Query Parameters
Parameter | Status | Description |
---|---|---|
idMcc |
required | industry id previously obtained. |
2.16 Get History - GET
Returns the count and names of PDF statements submitted by all the team users during a specific time interval.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-statement-history?startDate=2020-06-01&endDate=2020-12-01" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-statement-history"
);
let params = {
"startDate": "2020-06-01",
"endDate": "2020-12-01",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-statement-history',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'query' => [
'startDate'=> '2020-06-01',
'endDate'=> '2020-12-01',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-statement-history'
params = {
'startDate': '2020-06-01',
'endDate': '2020-12-01',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"count": 2,
"history": [
{
"timestamp": "2020-06-19 12:56:32",
"statementId": 1753313502913753640,
"fileName": "Demo Statement 1.pdf"
},
{
"timestamp": "2020-06-19 13:55:11",
"statementId": 1753032027937042984,
"fileName": "Demo Statement 2.pdf"
}
]
}
Example response (400):
{
"error": [
"Please provide a valid startDate.",
"Please provide a valid endDate."
],
"code": 400
}
HTTP Request
GET api/v1/get-statement-history
Query Parameters
Parameter | Status | Description |
---|---|---|
startDate |
required | Beginning of the date/time interval. |
endDate |
required | End of the date/time interval. |
2.17 Get History User - GET
Returns the count and names of PDF statements submitted by a specific user during a chosen time interval.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/get-user-statement-history?email=example%40example.com&startDate=2020-06-01&endDate=2020-12-01" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/get-user-statement-history"
);
let params = {
"email": "example@example.com",
"startDate": "2020-06-01",
"endDate": "2020-12-01",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/get-user-statement-history',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'query' => [
'email'=> 'example@example.com',
'startDate'=> '2020-06-01',
'endDate'=> '2020-12-01',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/get-user-statement-history'
params = {
'email': 'example@example.com',
'startDate': '2020-06-01',
'endDate': '2020-12-01',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"count": 2,
"history": [
{
"timestamp": "2020-06-19 12:56:32",
"statementId": 1753313502913753640,
"fileName": "Demo Statement 1.pdf"
},
{
"timestamp": "2020-06-19 13:55:11",
"statementId": 1753032027937042984,
"fileName": "Demo Statement 2.pdf"
}
]
}
Example response (400):
{
"error": [
"Please provide a valid startDate.",
"Please provide a valid endDate.",
"Can not find user with provided company"
],
"code": 400
}
HTTP Request
GET api/v1/get-user-statement-history
Query Parameters
Parameter | Status | Description |
---|---|---|
email |
required | Searched user email. |
startDate |
required | Beginning of the date/time interval. |
endDate |
required | End of the date/time interval. |
2.18 Send Proposal link - POST
Send Proposal link.
Example request:
curl -X POST \
"https://developer.feenavigator.com/api/v1/proposal/send-link" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}" \
-d '{"proposalId":"267672","sendTo":{"merchantName":"consequatur","firstName":"John","email":"john@smith.com","mobile":"62345678","sendVia":"email","expirationDays":2,"expirationViews":20}}'
const url = new URL(
"https://developer.feenavigator.com/api/v1/proposal/send-link"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
let body = {
"proposalId": "267672",
"sendTo": {
"merchantName": "consequatur",
"firstName": "John",
"email": "john@smith.com",
"mobile": "62345678",
"sendVia": "email",
"expirationDays": 2,
"expirationViews": 20
}
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://developer.feenavigator.com/api/v1/proposal/send-link',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'body' => [
'proposalId' => '267672',
'sendTo' => [
'merchantName' => 'consequatur',
'firstName' => 'John',
'email' => 'john@smith.com',
'mobile' => '62345678',
'sendVia' => 'email',
'expirationDays' => '2',
'expirationViews' => '20',
]
]
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/proposal/send-link'
payload = {
"proposalId": "267672",
"sendTo": {
"merchantName": "consequatur",
"firstName": "John",
"email": "john@smith.com",
"mobile": "62345678",
"sendVia": "email",
"expirationDays": 2,
"expirationViews": 20
}
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
HTTP Request
POST api/v1/proposal/send-link
Body Parameters
Parameter | Type | Status | Description |
---|---|---|---|
proposalId |
string | required | A previously acquired analysis id. |
sendTo[merchantName] |
string | optional | The Merchant's name. |
sendTo[firstName] |
string | required | The contact person's first name. |
sendTo[email] |
string | optional | The contact person's email. |
sendTo[mobile] |
string | optional | The contact person's mobile phone. |
sendTo[sendVia] |
string | required | The chosen method to send the link: 'mobile' for sending by SMS, and 'email' for sending by email. |
sendTo[expirationDays] |
integer | required | After how many days the link becomes invalid. |
sendTo[expirationViews] |
integer | required | After how many visualizations the link becomes invalid. |
3. Industry
3.1 Get IC Schedule - GET
Returns the current interchange schedule .
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/ic-schedule" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/ic-schedule"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/ic-schedule',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/ic-schedule'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
[
{
"type": "IC",
"network": "Discover",
"plan": "PSL E-Commerce DB Reg",
"rate": "0.05000000",
"perTx": "0.21000000",
"cap": "0.00000000"
},
{
"type": "IC",
"network": "Visa",
"plan": "Non-Qualified Commercial Prepaid Regulated",
"rate": "0.05000000",
"perTx": "0.22000000",
"cap": "0.00000000"
},
{
"type": "DA",
"network": "Visa",
"plan": "Fixed Acquirer Network Fee - Table 1B Tier 4",
"rate": null,
"perTx": "0.00000000",
"cap": "0.00000000"
},
{
"type": "IC",
"network": "Mastercard",
"plan": "Standard - Core | Consumer Standard Consumer Credit",
"rate": "2.95000000",
"perTx": "0.10000000",
"cap": "0.00000000"
},
{
"type": "DA",
"network": "Visa",
"plan": "Int'l Acquiring Fee (IAF)",
"rate": null,
"perTx": "0.00000000",
"cap": "0.00000000"
},
{
"type": "IC",
"network": "Discover",
"plan": "PSL Card Not Present (excluding eCommerce\/ Internet) - Core",
"rate": "1.89000000",
"perTx": "0.10000000",
"cap": "0.00000000"
},
{
"type": "IC",
"network": "Discover",
"plan": "PSL E-Commerce Secured DB Reg",
"rate": "0.05000000",
"perTx": "0.21000000",
"cap": "0.00000000"
}
]
Example response (400):
{
"error": [
"Please provide a valid startDate.",
"Please provide a valid endDate."
],
"code": 400
}
HTTP Request
GET api/v1/ic-schedule
3.2 Get Normalized Term - GET
Returns the most recent interchange normalized term associated with the entered term, as well as its rate, per tx, and cap.
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/normalized-term?term=consequatur" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/normalized-term"
);
let params = {
"term": "consequatur",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/normalized-term',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
'query' => [
'term'=> 'consequatur',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/normalized-term'
params = {
'term': 'consequatur',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"type": "IC",
"network": "Mastercard",
"plan": "Full UCAF SecureCode - World",
"rate": "2.05000000",
"perTx": "0.10000000",
"cap": "0.00000000"
}
Example response (400):
{
"error": [
"Please provide a valid startDate.",
"Please provide a valid endDate."
],
"code": 400
}
HTTP Request
GET api/v1/normalized-term
Query Parameters
Parameter | Status | Description |
---|---|---|
term |
required | Searched term |
3.3 Get MCC List - GET
Returns the industry/MCC list
Example request:
curl -X GET \
-G "https://developer.feenavigator.com/api/v1/mcc-list" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: {apiKey}"
const url = new URL(
"https://developer.feenavigator.com/api/v1/mcc-list"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "{apiKey}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://developer.feenavigator.com/api/v1/mcc-list',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Authorization' => '{apiKey}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://developer.feenavigator.com/api/v1/mcc-list'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '{apiKey}'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
[
{
"id": 31,
"Industry": "FURNISHINGS\/APPLIANCES OFFICE & HOME",
"mcc": "5712",
"MCC": "FURNITURE\/EQUIP STORES"
},
{
"id": 32,
"Industry": "FURNISHINGS\/APPLIANCES OFFICE & HOME",
"mcc": "5713",
"MCC": "FLOOR COVERING STORES"
},
{
"id": 33,
"Industry": "FURNISHINGS\/APPLIANCES OFFICE & HOME",
"mcc": "5714",
"MCC": "DRAPERY & UPHOLSTERY STORES"
},
{
"id": 34,
"Industry": "FURNISHINGS\/APPLIANCES OFFICE & HOME",
"mcc": "5719",
"MCC": "MISC HOME FURNISHING SPECIALT"
},
{
"id": 35,
"Industry": "FURNISHINGS\/APPLIANCES OFFICE & HOME",
"mcc": "5722",
"MCC": "HOUSEHOLD APPLIANCE STORES"
}
]
Example response (400):
{
"error": [
"Please provide a valid startDate.",
"Please provide a valid endDate."
],
"code": 400
}
HTTP Request
GET api/v1/mcc-list
Errors
The FNAPI uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- The resource requested requires an elevated set of credentials. |
404 | Not Found -- The specified resource could not be found |
405 | Method Not Allowed -- You tried to access a resource with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
410 | Gone -- The requested resource has been removed from our servers. |
422 | Unprocessable Entity -- The request contains invalid parameters. |
429 | Too Many Requests -- You're requesting too many resources! Slow down! |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |