/api/v2/merchant/fees

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Update Merchant Fees (V2)

Updates the complete fee schedule for an existing V2 merchant application. The request body wraps the merchant profile ID and a fees object that may include any combination of fee categories: fees program override, Amex fees, Visa/MC/Discover fees, authorization and monthly fees, POS fees, standard fees, card brand flags, debit/PIN/EBT fees, gateway product fees, and miscellaneous fees. Only the fee categories included in the request are updated; omitted categories retain their current values.

Endpoint

POST /api/v2/merchant/fees

Authentication

Basic HTTP Authentication required.
Encode username:password in Base64 and pass in the Authorization header:

Authorization: Basic {base64(username:password)}

When to use

Call this endpoint after creating a merchant (POST /api/v2/merchant/create) to configure or adjust the merchant's pricing before final submission. Use GET /api/v2/merchant/fees first to retrieve the current fee structure, make your changes, and POST back the updated values. This endpoint can also be called after submission if fee adjustments are required prior to approval.

Request Body

FieldTypeRequiredDescription
idinteger (int32)YesMerchant profile ID (1–999999) — the record whose fees are being updated
feesTsysFeesV2FeesProgramNoFee configuration object; all sub-fields are optional
fees.feesProgramstring (enum)NoOverride the fees program: Traditional, CashDiscount, Surcharge, ServiceFee, DualPricing
fees.cashDiscountRatenumber (double)NoCash discount rate percentage
fees.minimumDiscountAmountnumber (double)NoMinimum discount amount in dollars (0–500)
fees.minimumDiscountStartDatestring (date-time)NoDate the minimum discount takes effect
fees.minimumDiscountTypestring (enum)NoDaily or Monthly
fees.earlyTerminationFeeAmountnumber (double)NoETF amount in dollars (0–999999)
fees.earlyTerminationFeeContractMonthsinteger (int32)NoContract length in months for ETF (0–60)
fees.amexAmexFeesNoAmex fee rates (interchangePlus, tieredDiscounts, noSurcharge, amexInterchangePlusPlus)
fees.visaMasterCardDiscoverVisaMasterCardDiscoverFeesNoVisa/MC/Discover rates
fees.authorizationMonthlyAndSpecialProgramAuthorizationMonthlyAndSpecialProgramFeesNoAuthorization, batch, chargeback, statement, PCI, and other fees
fees.posPOSFeesNoPOS package and license fees
fees.standardStandardFeesNoStandard fees (dialPay, onlinePortal, nextDayFunding, etc.)
fees.cardBrandCardBrandFeesNoCard brand fee enable flags
fees.debitPinAndEBTDebitPinAndEBTFeesNoPIN debit and EBT fee rates
fees.gatewayProductsGatewayProductsFeesNoGateway and wireless fee rates
fees.miscFeesarray of TsysMiscFeeNoCustom miscellaneous fees
fees.miscFeesVolumearray of TsysMiscFeeNoVolume-based miscellaneous fees

Each TsysFee sub-object (used throughout the fee structure):

FieldTypeRequiredDescription
perItemnumber (double)YesPer-transaction dollar amount
percentnumber (double)YesPercentage rate

Each TsysMiscFee entry:

FieldTypeRequiredDescription
namestringYesName of the miscellaneous fee
frequencystring (enum)YesAnnual, SemiAnnual, Quarterly, Monthly, OneTime
perItemnumber (double)YesPer-occurrence dollar amount
percentnumber (double)YesPercentage rate
startDatestring (date-time)NoEffective start date
stopDatestring (date-time)NoFee expiration date
{
  "id": 30912,
  "fees": {
    "feesProgram": "Traditional",
    "earlyTerminationFeeAmount": 295.0,
    "earlyTerminationFeeContractMonths": 36,
    "minimumDiscountAmount": 25.0,
    "minimumDiscountType": "Monthly",
    "authorizationMonthlyAndSpecialProgram": {
      "vsmcdiscAuth": { "perItem": 0.08, "percent": 0.0 },
      "chargeback": { "perItem": 25.00, "percent": 0.0 },
      "statement": { "perItem": 10.00, "percent": 0.0 },
      "pciAnnual": { "perItem": 99.00, "percent": 0.0 },
      "pciNonCompliance": { "perItem": 19.95, "percent": 0.0 }
    },
    "visaMasterCardDiscover": {
      "interchangePlus": {
        "vsQualCrDiscount": { "perItem": 0.10, "percent": 0.25 },
        "mcQualCrDiscount": { "perItem": 0.10, "percent": 0.25 }
      }
    },
    "miscFees": [
      {
        "name": "Annual Card Brand Fee",
        "frequency": "Annual",
        "perItem": 79.00,
        "percent": 0.0,
        "startDate": "2025-01-01T00:00:00Z"
      }
    ]
  }
}

Response

200 OK

FieldTypeDescription
data.idintegerMerchant profile ID that was updated
data.feesobjectUpdated fee configuration as stored
requestIdintegerEcho of the internal request ID
successbooleantrue if the fees were updated successfully
errorstringError message if success is false
validationErrorsarrayField-level validation errors with field and error properties
{
  "data": {
    "id": 30912,
    "fees": {
      "feesProgram": "Traditional",
      "earlyTerminationFeeAmount": 295.0,
      "earlyTerminationFeeContractMonths": 36
    }
  },
  "requestId": 55902,
  "success": true,
  "error": null,
  "validationErrors": []
}

Error Codes

CodeWhen it happens
400id is missing or outside the 1–999999 range, or fee values fail validation (e.g., minimumDiscountAmount > 500, earlyTerminationFeeContractMonths > 60)
401Invalid or missing Basic Auth credentials
403User does not have permission to update this merchant's fees
404Merchant profile with the given id not found
500Internal server error

Common Mistakes

  • Using HTTP GET instead of POST — this path uses POST for both reads (GET /api/v2/merchant/fees) and writes (POST /api/v2/merchant/fees), distinguished only by method.
  • Sending minimumDiscountAmount greater than 500 — the schema enforces a maximum of 500.
  • Sending earlyTerminationFeeContractMonths greater than 60 — the schema enforces a maximum of 60 months.
  • Expecting partial TsysFee objects to work — each TsysFee requires both perItem and percent even if one is 0.
  • Omitting the id field — it is required and the only way to identify which merchant's fees to update.

Related Endpoints

  • GET /api/v2/merchant/fees — Retrieve the current fee schedule before updating
  • POST /api/v2/merchant/create — Create the merchant whose fees are managed here
  • POST /api/v2/merchant/submit — Submit the complete application including the updated fees

Example

curl -X POST https://hq.staging.netevia.dev/api/v2/merchant/fees \
  -H "Authorization: Basic $(echo -n 'username:password' | base64)" \
  -H "Content-Type: application/json" \
  -d '{
    "id": 30912,
    "fees": {
      "feesProgram": "Traditional",
      "earlyTerminationFeeAmount": 295.0,
      "earlyTerminationFeeContractMonths": 36,
      "authorizationMonthlyAndSpecialProgram": {
        "vsmcdiscAuth": { "perItem": 0.08, "percent": 0.0 },
        "statement": { "perItem": 10.00, "percent": 0.0 }
      }
    }
  }'
Body Params
fees
object
int32
required
1 to 999999
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Response

Language
Credentials
Basic
base64
:
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
text/json