List Fee Charges

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://docs.omni-dev.integratedcommerce.io/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "Omni API Dev MCP server": {
    "url": "https://docs.omni-dev.integratedcommerce.io/mcp"
  }
}

Close
GET /fee-charges

Returns a paginated list of merchant fee charges for a given date or date range, based on the charge date.

Either date or fromDate/toDate must be provided.

The endpoint supports filtering and sorting via the filters and sorts parameters (see List Transactions for the filter operator table).

For one merchant, one rail and one statement period, the StatementOnly charges - the derived InterchangeAndPassthrough entry included - sum exactly to the amount the provider's statement says was deducted. Nothing that statement billed is missing from this list, and nothing in it was billed twice.

Examples:
  • Single day: ?date=2026-07-01
  • Everything a month billed outside the daily settlement reports: ?fromDate=2026-07-01&toDate=2026-07-31&filters=source==StatementOnly
  • One kind of fee: ?fromDate=2026-07-01&toDate=2026-07-31&filters=category==StatementFee

Query parameters

  • date string(date)

    A single day to report on. Either date or at least one of fromDate/toDate must be provided. When date is given it takes precedence and the range is that single day. Only the date part is used; any time component is ignored.

  • fromDate string(date)

    Inclusive start of the date range. If omitted while toDate is given, the range is the single day toDate. Only the date part is used; any time component is ignored.

  • toDate string(date)

    Inclusive end of the date range. If omitted while fromDate is given, the range is the single day fromDate. Only the date part is used; any time component is ignored.

  • merchantIds string

    Comma-separated list of merchant IDs to report on. Forward-compatible parameter for multi-merchant API keys; currently every ID must be the merchant resolved from the API key, and any other ID is rejected with 401. Omit it to default to that merchant.

  • filters string

    Filter criteria in the format: field==value,field!=value Multiple filters can be separated by commas. Available fields: category, source, amount, chargeDate

  • sorts string

    Sort criteria as comma-separated field names. Prefix a field with - for descending order. Available fields: category, source, amount, chargeDate

  • page integer

    Page number to retrieve (starts at 1). For example, if you have 100 records with 10 per page, page 2 gives you records 11 to 20.

    Minimum value is 1. Default value is 1.

  • pageSize integer

    Number of records per page. For example, if you have 100 records with 10 per page, page 2 gives you records 11 to 20.

    Minimum value is 1, maximum value is 100. Default value is 10.

Responses

  • 200 application/json

    A successful paginated response containing fee charges

    Hide response attributes Show response attributes object
    • totalCount integer Required

      Total number of fee charges that match the filter criteria

    • page integer Required

      The current page number (starts at 1)

    • pageSize integer Required

      Number of items per page

    • totalPages integer Required

      Total number of pages available

    • hasNextPage boolean Required

      True if there are more pages of results available

    • hasPreviousPage boolean Required

      True if there are previous pages of results available

    • items array[object] Required

      Array of fee charges for the current page

      Hide items attributes Show items attributes object

      Any fee charged to the merchant. This is the single home for every fee: per-transaction settlement fees (TransactionFee), the credit-card daily discount fee (DailyDiscountFee), and standalone fees not tied to any settlement (monthly service, equipment, one-time setup, etc.).

      A settlement-derived fee references its origin via settlementId (the deposit it was assessed against).

      Per-transaction fees also carry a settledTransaction object mirroring the settled line it applies to (its gatewayTransactionId, matchStatus, and transactionId when matched).

      • id string Required

        The fee charge ID, prefixed with mfc_.

      • category string Required

        What kind of fee this is. An open set of strings, not a closed enum: a fee Fiska names is reported under its own name, a new name is added as providers start billing it and needs no API version change, and a fee nobody has named yet is reported as Other. Treat a value you do not recognise exactly as you treat Other: read description, which carries the wording the provider printed. Do not fail on an unknown value.

        Fees a daily settlement file reports (source is SettlementLinked):

        • DailyDiscountFee - the daily discount fee assessed against a card settlement.
        • DailyInterchangeFee - the daily interchange fee assessed against a card settlement.
        • TransactionFee - a per-transaction settlement fee, e.g. an ACH transaction's processing fee.
        • ReturnFee - charged when a payout could not be completed; for ACH, typically a closed or invalid bank account, so no money reached the merchant and this fee is the only thing the attempt produced. Its settled line has a transactionType of Return.
        • PerSettlementFee - a flat fee a merchant's pricing applies once to a settlement, independent of what settled in it. Assessed against the deposit rather than any one line, so it carries a settlementId and no settledTransaction.

        Fees billed on a monthly statement or invoice (source is StatementOnly), reported under the fee's own name:

        AccountOnFileFee, AccountUpdaterService, AddressVerification, AnnualFee, ApplicationFee, AuthorizationFee, BatchCloseFee, BinFee, BusinessCoachPlus, Chargeback, GatewayService, GatewaySetup, HandlingFee, MarketplaceBalanceTransfer, MarketplaceKyb, McRegistrationFee, MonthlyFees, MonthlyMinimum, MonthlySupportFee, NonComplianceAssessment, OverReturn15ThresholdPenalty, PciFee, PinBasedDebitNetworkFee, Retrieval, SaqScanIncomplete, SecurityComplianceFee, SetUp, StatementFee, UnreturnedEquipment, VisaRegistrationFee, VolumeAnalysisMonthlyMinimum, WebReportsAlerts, WirelessActivation, WirelessMonthlyFee

        Derived:

        • InterchangeAndPassthrough - interchange and the other costs a card statement passes through without naming them: what is left of the statement's total deducted once every named fee line is accounted for. Calculated rather than read off a fee line, so it appears only where source is StatementOnly.

        Unnamed:

        • Other - a fee Fiska has not named yet. description carries the provider's own wording for it, which is the only thing that explains the charge.
      • source string

        Where the fee reached the merchant from.

        SettlementLinked: applied against the transactions and settlements the daily files report, and charged as it occurs, so it has already been accounted for in a daily settlement report.

        StatementOnly: billed as a month-end lump on the merchant's monthly statement or invoice and reported nowhere else. Either it was read off that statement, or it was read off a daily settlement file for a merchant whose pricing bills monthly - in which case its chargeDate is the first of the month it is actually taken in rather than the day the file reported it. Filter on this value to list exactly the fees no daily settlement report ever showed.

        Values are SettlementLinked or StatementOnly.

      • status string

        Whether the entry was charged to the merchant. This endpoint returns nothing but Posted: an entry that moved money without charging for anything - a reserve-fund hold, or a charge a later entry backed out - is recorded but never listed, so a total taken over this list is what the merchant paid.

        Values are Posted, Held, or Reversed.

      • currency string Required

        Values are USD or CAD.

      • amount integer Required

        The fee amount, smallest denomination.

        Minimum value is 0.

      • chargeDate string(date) Required

        The date the fee was charged/assessed. For a settlement-derived fee, the settlement's deposit date.

      • periodStart string(date)

        Start of the period the fee covers, for recurring fees.

      • periodEnd string(date)

        End of the period the fee covers, for recurring fees.

      • description string

        Human-readable description of the fee.

      • settlementId string

        The settlement (deposit) this fee was assessed against, prefixed with stl_. Present for settlement-derived fees (per-transaction and daily discount); absent for standalone fees.

      • settledTransaction object

        The settled transaction a per-transaction fee applies to, mirroring that transaction's identity. Present only on per-transaction fees. Combine gatewayTransactionId with the fee's settlementId to locate the settled line via GET /settlements/{settlementId}.

        Hide settledTransaction attributes Show settledTransaction attributes object
        • transactionId string

          The Fiska transaction ID (trx_) of the settled transaction, when that line is matched to a Fiska transaction. Absent when matchStatus is Unmatched.

        • gatewayTransactionId string Required

          The gateway's own transaction ID of the settled transaction. Always present.

        • matchStatus string Required

          The match status of the settled transaction - the same matchStatus reported on that settled transaction.

          Unmatched: The settled transaction has no identified Fiska transaction; transactionId is absent.

          Matched: Automatically matched to a Fiska transaction.

          ManuallyMatched: Matched to a Fiska transaction by manual reconciliation.

          Values are Unmatched, Matched, or ManuallyMatched.

      • feeBreakdown object

        Optional breakdown of the components of a fee charge. Only the components that apply to a given fee are present.

        Hide feeBreakdown attributes Show feeBreakdown attributes object
        • discountFee integer

          Processing/discount fee component, smallest denomination.

          Minimum value is 0.

        • originationFee integer

          ACH origination fee, smallest denomination.

          Minimum value is 0.

        • returnFee integer

          ACH return fee - charged when a transaction is returned/reversed post-settlement. Smallest denomination.

          Minimum value is 0.

        • interchangeFee integer

          Card-network interchange fee, smallest denomination. Reserved for future use.

          Minimum value is 0.

        • otherFee integer

          Provider-specific catch-all for fee components not otherwise modeled.

          Minimum value is 0.

  • 400 application/json

    Bad request - no date parameters were provided.

    Hide response attributes Show response attributes object
    • code number

      Numeric error code. These are grouped into ranges for easier identification and troubleshooting.

      • 0 - Unknown
      • 1000 - AuthenticationGenericError
      • 1001 - MerchantNotAuthorizedForResource
      • 2000 - RequestValidationGenericError
      • 2010 - InvalidPaymentMethodType - The payment method type is not supported for this operation. This includes: ACH tokens cannot be used for auth, void, or subscription transactions.
      • 2011 - InvalidTransactionType
      • 2012 - InvalidAmount
      • 2013 - PaymentMethodUsageRestricted
      • 2020 - InvalidPaymentMethodOwner
      • 2021 - InvalidAccountHolderOwner
      • 2100 - InvalidAccountHolderInformation
      • 2101 - InvalidCountryCode
      • 2102 - InvalidZipCode
      • 2103 - MissingCountryCodeOrZipCode
      • 2105 - InvalidEmailAddress
      • 2201 - MissingUniqueToken
      • 2202 - TransactionDeclinedError
      • 2900 - RequestValidationUnsupportedPayload
      • 2901 - RequestValidationWebhookMissingTypeAndDmnType
      • 2902 - RequestValidationUnsupportedWebhookTokenization
      • 2903 - RequestValidationUnsupportedWebhookType
      • 3000 - UnknownServerGenericError
      • 3201 - InvalidOrExpiredSession
      • 3202 - FailedToCreateSessionInAdapter
      • 3203 - ErrorWhileTokenizingCard
      • 3204 - FailedToLoadThirdPartySdk
      • 3205 - SessionExpired
      • 3299 - JavaScriptError
      • 3400 - ResourceNotReadyError
      • 3401 - TransactionNotCompleteYet
      • 3501 - CouldNotCreateBillingSubscription
      • 3502 - CouldNotCancelBillingSubscription
      • 3503 - BillingSubscriptionInvalidStatus
      • 4000 - ResourceNotFound
      • 4001 - TokenizedCardNotFound
      • 4002 - PaymentMethodNotFound
      • 4003 - AccountHolderNotFound
      • 4004 - BillingSubscriptionNotFound
      • 6000 - SdkGenericError
      • 6001 - SdkJavaScriptError
      • 6100 - SdkSessionLoadFailed
      • 6101 - SdkSessionExpired
      • 6102 - SdkSessionNotInitialized
      • 6103 - SdkEnvironmentMismatch
      • 6200 - SdkCardFieldsInvalid
      • 6201 - SdkCardTokenizationFailed
      • 6202 - SdkCardInitFailed
      • 6203 - SdkCardProcessingFailed
      • 6300 - SdkAchFieldsInvalid
      • 6301 - SdkAchProcessingFailed
      • 6400 - SdkEftProcessingFailed
      • 6500 - SdkWalletError
      • 6501 - SdkWalletProcessingFailed
      • 6600 - SdkThirdPartySdkLoadFailed
      • 6700 - SdkFormValidationFailed
      • 6701 - SdkBillingValidationFailed
      • 6800 - Sdk3dsAuthenticationFailed — Issuer ACS rejected the 3DS authentication. Only emitted when formConfig.enable3DSecure: true.
      • 6801 - Sdk3dsAuthenticationUnavailable — 3DS authentication could not be completed due to an upstream technical issue.
      • 6802 - Sdk3dsNotEnrolled — The card is not enrolled in 3DS.
      • 9000 - UnhandledGenericError
      • 9999 - MaxErrorCode

      Values are 0, 1000, 1001, 2000, 2010, 2011, 2012, 2013, 2020, 2021, 2100, 2101, 2102, 2103, 2105, 2201, 2202, 2900, 2901, 2902, 2903, 3000, 3201, 3202, 3203, 3204, 3205, 3299, 3400, 3401, 3501, 3502, 3503, 4000, 4001, 4002, 4003, 4004, 6000, 6001, 6100, 6101, 6102, 6103, 6200, 6201, 6202, 6203, 6300, 6301, 6400, 6500, 6501, 6600, 6700, 6701, 6800, 6801, 6802, 9000, or 9999.

    • status string

      Execution status of the request sent to the payment gateway.

      • Completed - The request completed successfully.
      • Rejected - The request was rejected by the payment gateway. No action or side effects occurred. The transaction can safely be retried.
      • Interrupted - The request was interrupted, and the final status is unknown. Possible side effects may have occurred (e.g., a Sale (Token) that returns Interrupted might still charge the customer, even if an error is returned). Additional checks are required before retrying the transaction.
      • Unknown

      Values are Completed, Rejected, Interrupted, or Unknown.

    • message string

      Developer-facing error message.

    • traceId string

      Unique trace identifier for tracking and debugging this request.

    • timestamp string(date-time)

      The timestamp when the error occurred (UTC).

    • errorDetails array[object]

      Represents a validation error that occurred during the request.

      Hide errorDetails attributes Show errorDetails attributes object

      Represents a validation error that occurred during the request.

      • code number

        Error code

      • field string

        The field with the error

      • message string

        Error message

      • details string

        Additional details about the error

  • 401 application/json

    Unauthorized response due to an invalid or missing API key.

    Hide response attributes Show response attributes object
    • code number

      Numeric error code. These are grouped into ranges for easier identification and troubleshooting.

      • 0 - Unknown
      • 1000 - AuthenticationGenericError
      • 1001 - MerchantNotAuthorizedForResource
      • 2000 - RequestValidationGenericError
      • 2010 - InvalidPaymentMethodType - The payment method type is not supported for this operation. This includes: ACH tokens cannot be used for auth, void, or subscription transactions.
      • 2011 - InvalidTransactionType
      • 2012 - InvalidAmount
      • 2013 - PaymentMethodUsageRestricted
      • 2020 - InvalidPaymentMethodOwner
      • 2021 - InvalidAccountHolderOwner
      • 2100 - InvalidAccountHolderInformation
      • 2101 - InvalidCountryCode
      • 2102 - InvalidZipCode
      • 2103 - MissingCountryCodeOrZipCode
      • 2105 - InvalidEmailAddress
      • 2201 - MissingUniqueToken
      • 2202 - TransactionDeclinedError
      • 2900 - RequestValidationUnsupportedPayload
      • 2901 - RequestValidationWebhookMissingTypeAndDmnType
      • 2902 - RequestValidationUnsupportedWebhookTokenization
      • 2903 - RequestValidationUnsupportedWebhookType
      • 3000 - UnknownServerGenericError
      • 3201 - InvalidOrExpiredSession
      • 3202 - FailedToCreateSessionInAdapter
      • 3203 - ErrorWhileTokenizingCard
      • 3204 - FailedToLoadThirdPartySdk
      • 3205 - SessionExpired
      • 3299 - JavaScriptError
      • 3400 - ResourceNotReadyError
      • 3401 - TransactionNotCompleteYet
      • 3501 - CouldNotCreateBillingSubscription
      • 3502 - CouldNotCancelBillingSubscription
      • 3503 - BillingSubscriptionInvalidStatus
      • 4000 - ResourceNotFound
      • 4001 - TokenizedCardNotFound
      • 4002 - PaymentMethodNotFound
      • 4003 - AccountHolderNotFound
      • 4004 - BillingSubscriptionNotFound
      • 6000 - SdkGenericError
      • 6001 - SdkJavaScriptError
      • 6100 - SdkSessionLoadFailed
      • 6101 - SdkSessionExpired
      • 6102 - SdkSessionNotInitialized
      • 6103 - SdkEnvironmentMismatch
      • 6200 - SdkCardFieldsInvalid
      • 6201 - SdkCardTokenizationFailed
      • 6202 - SdkCardInitFailed
      • 6203 - SdkCardProcessingFailed
      • 6300 - SdkAchFieldsInvalid
      • 6301 - SdkAchProcessingFailed
      • 6400 - SdkEftProcessingFailed
      • 6500 - SdkWalletError
      • 6501 - SdkWalletProcessingFailed
      • 6600 - SdkThirdPartySdkLoadFailed
      • 6700 - SdkFormValidationFailed
      • 6701 - SdkBillingValidationFailed
      • 6800 - Sdk3dsAuthenticationFailed — Issuer ACS rejected the 3DS authentication. Only emitted when formConfig.enable3DSecure: true.
      • 6801 - Sdk3dsAuthenticationUnavailable — 3DS authentication could not be completed due to an upstream technical issue.
      • 6802 - Sdk3dsNotEnrolled — The card is not enrolled in 3DS.
      • 9000 - UnhandledGenericError
      • 9999 - MaxErrorCode

      Values are 0, 1000, 1001, 2000, 2010, 2011, 2012, 2013, 2020, 2021, 2100, 2101, 2102, 2103, 2105, 2201, 2202, 2900, 2901, 2902, 2903, 3000, 3201, 3202, 3203, 3204, 3205, 3299, 3400, 3401, 3501, 3502, 3503, 4000, 4001, 4002, 4003, 4004, 6000, 6001, 6100, 6101, 6102, 6103, 6200, 6201, 6202, 6203, 6300, 6301, 6400, 6500, 6501, 6600, 6700, 6701, 6800, 6801, 6802, 9000, or 9999.

    • status string

      Execution status of the request sent to the payment gateway.

      • Completed - The request completed successfully.
      • Rejected - The request was rejected by the payment gateway. No action or side effects occurred. The transaction can safely be retried.
      • Interrupted - The request was interrupted, and the final status is unknown. Possible side effects may have occurred (e.g., a Sale (Token) that returns Interrupted might still charge the customer, even if an error is returned). Additional checks are required before retrying the transaction.
      • Unknown

      Values are Completed, Rejected, Interrupted, or Unknown.

    • message string

      Developer-facing error message.

    • traceId string

      Unique trace identifier for tracking and debugging this request.

    • timestamp string(date-time)

      The timestamp when the error occurred (UTC).

    • errorDetails array[object]

      Represents a validation error that occurred during the request.

      Hide errorDetails attributes Show errorDetails attributes object

      Represents a validation error that occurred during the request.

      • code number

        Error code

      • field string

        The field with the error

      • message string

        Error message

      • details string

        Additional details about the error

GET /fee-charges
curl \
 --request GET 'https://api.omni.integratedcommerce.io/v1/fee-charges' \
 --header "x-api-key: $API_KEY"
Response examples (200)
{
  "totalCount": 3,
  "page": 1,
  "pageSize": 10,
  "totalPages": 1,
  "hasNextPage": false,
  "hasPreviousPage": false,
  "items": [
    {
      "id": "mfc_01JZ5G4K8WQT2XB7RD9NVMC3EH",
      "source": "StatementOnly",
      "category": "AuthorizationFee",
      "status": "Posted",
      "currency": "USD",
      "amount": 2995,
      "chargeDate": "2026-07-01",
      "periodStart": "2026-06-01",
      "periodEnd": "2026-06-30",
      "description": "AUTHORIZATION FEES"
    },
    {
      "id": "mfc_01JZ5G4K8WYN6PSA3KTE5D2QVX",
      "source": "StatementOnly",
      "category": "InterchangeAndPassthrough",
      "status": "Posted",
      "currency": "USD",
      "amount": 3299,
      "chargeDate": "2026-07-01",
      "periodStart": "2026-06-01",
      "periodEnd": "2026-06-30",
      "description": "Interchange and Passthrough fees"
    },
    {
      "id": "mfc_01JZ5G4K8XCD4RQY7LME2W9SVB",
      "source": "StatementOnly",
      "category": "Other",
      "status": "Posted",
      "currency": "USD",
      "amount": 400,
      "chargeDate": "2026-07-01",
      "periodStart": "2026-06-01",
      "periodEnd": "2026-06-30",
      "description": "NEW PROVIDER FEE WORDING"
    }
  ]
}
{
  "totalCount": 1,
  "page": 1,
  "pageSize": 10,
  "totalPages": 1,
  "hasNextPage": false,
  "hasPreviousPage": false,
  "items": [
    {
      "id": "mfc_01JZ5G4K8WZP7QDB4MTF6E3RWY",
      "source": "SettlementLinked",
      "category": "TransactionFee",
      "status": "Posted",
      "currency": "USD",
      "amount": 127,
      "chargeDate": "2026-07-01",
      "description": "Per-transaction settlement fee",
      "settlementId": "stl_01JZ5F1P7A2C9E4G6H8K0M2N4Q",
      "settledTransaction": {
        "transactionId": "trx_01JZ5EXH9GVK3M7T2QSBWD48RC",
        "gatewayTransactionId": "1620000000770632947",
        "matchStatus": "Matched"
      },
      "feeBreakdown": {
        "originationFee": 127
      }
    }
  ]
}
Response examples (400)
{
  "code": 2000,
  "status": "Rejected",
  "message": "Either 'date' or 'fromDate'/'toDate' must be provided",
  "traceId": "1-6838be96-74c62f8e2804352739e63476",
  "timestamp": "2026-07-01T20:07:50.4723483Z",
  "errorDetails": []
}
Response examples (401)
{
  "code": 1000,
  "status": "Rejected",
  "message": "API key cannot be empty",
  "traceId": "1-6838be96-74c62f8e2804352739e63476",
  "timestamp": "2025-05-29T20:07:50.4723483Z",
  "errorDetails": []
}