Get Settlement

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 /settlements/{settlementId}

Returns the details of a single settlement (bank deposit), including its settled-transaction line items. A deposit can span several processor batches, so each line item carries its own batchId. For line items with a transactionId, look up the ID via GET /transactions (e.g. ?filters=id==trx_...) for full transaction detail.

Every line item the deposit contains is returned, including any that moved no money, so lineItems always matches the settlement's own transactionCount.

How far those lines reconcile to the deposit total depends on the settlement type:

  • Ach, fundingType Net: the deposit is built up from its lines, so sum of line amounts, less any deposit-level fees, equals the settlement's amount. Deposit-level fees are the ones GET /fee-charges returns for this settlementId with no settledTransaction - a PerSettlementFee is charged against the deposit as a whole and belongs to no line.
  • Ach, fundingType Gross: nothing is withheld, so sum of line amounts equals the settlement's amount exactly. The fees for the period are billed separately and appear as StatementOnly fee charges, dated to the month they are taken in rather than to this deposit.
  • Card: amount is the processor's own control total for the deposit, while the line items are matched best-effort from its transaction reporting, and card fees are assessed against the deposit rather than against any line. The two are not expected to agree exactly.

Path parameters

  • settlementId string Required

    The settlement ID, prefixed with stl_.

Query parameters

  • 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.

Responses

  • 200 application/json

    The settlement details

    Hide response attributes Show response attributes object
    • id string Required

      The settlement ID, prefixed with stl_.

    • type string Required

      The kind of settlement, derived from the settlement provider.

      Card: A card settlement, deposited from the card processor.

      Ach: An ACH settlement, deposited from the ACH processor.

      Values are Card or Ach.

    • settlementDate string(date) Required

      The date the settlement was deposited to the merchant's bank account.

    • currency string Required

      Values are USD or CAD.

    • amount integer Required

      The deposit as it landed in the merchant's bank account, smallest denomination. Signed - normally positive, but may be negative when returns/adjustments in the deposit exceed sales.

      fundingType states which reading it is: net of the fees the provider withheld from it, or the gross deposit whose fees are billed separately.

    • fundingType string Required

      Whether the rail this deposit came in on withholds the fees it bills from its deposits or bills them apart from them. An amount is never returned without a fundingType in scope, so nothing has to be looked up in the merchant's configuration to know what an amount this API returned is.

      Net: the fees were withheld, so amount is the deposit after them. They are itemized by GET /fee-charges against this deposit's settlementId.

      Gross: nothing was withheld - amount is the gross deposit - and the fees for it are billed separately, arriving as StatementOnly fee charges on the monthly statement.

      Values are Net or Gross.

    • netAmount integer Required Deprecated

      Deprecated - read amount instead. This member mirrors amount exactly and cannot hold a different figure. fundingType on this payload states whether that figure is the gross deposit or one already net of withheld fees, and is the only authoritative reading of it. Deprecated on 2026-08-21 and removed one month later in its own release, at which point netAmount also stops being accepted as a filter or sort field.

      Its value changed when amount was introduced: for a gross-funded merchant it now reports the gross deposit - the figure that actually reached the bank - so despite its name it is not necessarily a net figure.

    • transactionCount integer Required

      Number of settled-transaction line items in the settlement. Always equal to the length of the lineItems array returned by GET /settlements/{settlementId}, which withholds no line.

    • status string Required

      Status of the settlement.

      Settled: The settlement has been deposited to the merchant's bank account.

      Adjusted: Reserved for a future reconciliation follow-up (e.g. a late return posted against an already-settled deposit). Not produced yet.

      Values are Settled or Adjusted.

    • merchantId string Required

      The ID of the merchant the settlement was deposited to, prefixed with mer_.

    • lineItems array[object] Required

      A single settled transaction within a settlement.

      Hide lineItems attributes Show lineItems attributes object

      A single settled transaction within a settlement.

      • transactionId string

        The transaction ID, prefixed with trx_. Absent when matchStatus is Unmatched - look it up via GET /transactions (e.g. ?filters=id==trx_...) for full transaction detail.

      • transactionType string Required

        The kind of settled transaction.

        Sale: A sale that deposited funds to the merchant.

        Refund: A refund/credit returned to the cardholder or payer (reduces the net deposit).

        Capture: The capture/settlement of a previously authorized transaction.

        Return: A payout the provider tried to make and could not - for ACH, typically a closed or invalid bank account - so no money reached the merchant. The line exists because the attempt still cost a fee: nothing was disbursed, so for a net-funded rail amount is that fee as a negative, and for a gross-funded one it is zero and the fee is billed separately. Unlike a Refund, no money moved in the first place, so nothing is deducted from the deposit beyond that fee.

        Values are Sale, Refund, Capture, or Return.

      • gatewayTransactionId string Required

        The gateway's own transaction ID.

      • batchId string

        The processor's own batch number this transaction was settled in (informational). Present for card settlements; absent for providers with no native batch concept (e.g. ACH).

      • matchStatus string Required

        Whether the settled transaction has been matched to a Fiska transaction.

        Unmatched: No Fiska transaction has been identified for this settled line; 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.

      • invoiceNumber string

        Populated from the matched Fiska transaction, when one exists.

      • paymentType string

        Populated from the matched Fiska transaction's card type, when one exists.

      • transactionDate string(date-time)

        The date the underlying transaction was processed, when reported.

      • amount integer Required

        The amount deposited for this transaction as it landed - what the merchant sees hit their bank account. Smallest denomination. Signed: negative for a refund, and for a line whose own withheld fees exceeded what it disbursed (a Return disburses nothing, so a net-funded line's amount is the fee alone, as a negative).

        Any fee withheld here is also itemized by GET /fee-charges - this field is the money that moved, those records show what was taken out of it. Fees are withheld per line only where the provider assesses them that way (e.g. an ACH transaction fee) and only where the rail is net funded; card fees are assessed against the deposit as a whole and reference no line, so a card line's amount is its full settled amount.

      • netAmount integer Required Deprecated

        Deprecated - read amount instead. This member mirrors amount exactly and cannot hold a different figure. fundingType on the enclosing settlement states whether that figure is the gross deposit or one already net of withheld fees, and is the only authoritative reading of it. Deprecated on 2026-08-21 and removed one month later in its own release, at which point netAmount also stops being accepted as a filter or sort field.

        Its value changed when amount was introduced: for a gross-funded merchant it now reports the gross deposit - the figure that actually reached the bank - so despite its name it is not necessarily a net figure.

      • currency string Required

        Values are USD or CAD.

  • 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

  • 404 application/json

    The settlement does not exist or does not belong to the merchant.

    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 /settlements/{settlementId}
curl \
 --request GET 'https://api.omni.integratedcommerce.io/v1/settlements/stl_01JZ5F0M3SXA6PDH8YT2M4QWCN' \
 --header "x-api-key: $API_KEY"
Response examples (200)
{
  "id": "stl_01JZ5F0M3SXA6PDH8YT2M4QWCN",
  "type": "Card",
  "merchantId": "mer_01JQZC2Y6W3F8XKT5H9DPNBMVR",
  "settlementDate": "2026-07-01",
  "currency": "USD",
  "amount": 7500,
  "fundingType": "Net",
  "netAmount": 7500,
  "transactionCount": 2,
  "status": "Settled",
  "lineItems": [
    {
      "transactionId": "trx_01JZ5EXH9GVK3M7T2QSBWD48RC",
      "transactionType": "Sale",
      "gatewayTransactionId": "1120000006864180230",
      "batchId": "2616201",
      "matchStatus": "Matched",
      "invoiceNumber": "INV-10432",
      "paymentType": "Visa",
      "transactionDate": "2026-06-30T18:22:41Z",
      "amount": 5000,
      "netAmount": 5000,
      "currency": "USD"
    },
    {
      "transactionId": "trx_01JZ5EXH9GVK3M7T2QSBWD48RD",
      "transactionType": "Sale",
      "gatewayTransactionId": "1120000006864180987",
      "batchId": "2616301",
      "matchStatus": "Matched",
      "invoiceNumber": "INV-10433",
      "paymentType": "Mastercard",
      "transactionDate": "2026-06-30T19:05:12Z",
      "amount": 2500,
      "netAmount": 2500,
      "currency": "USD"
    }
  ]
}
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": []
}
Response examples (404)
{
  "code": 4000,
  "status": "Rejected",
  "message": "Settlement stl_01JZ5F0M3SXA6PDH8YT2M4QWCN not found",
  "traceId": "1-6838be96-74c62f8e2804352739e63476",
  "timestamp": "2026-07-01T20:07:50.4723483Z",
  "errorDetails": []
}