> For the complete documentation index, see [llms.txt](https://docs.omni.integratedcommerce.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.omni.integratedcommerce.io/api-reference/settlement-reporting/settlements.md).

# Settlements

**Beta.** Settlement reporting is in beta and is not yet available to every merchant. See [Settlement reporting](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/reporting) to ask for access.

Settlement and settled-transaction reporting - what a payment processor has settled/deposited to the merchant's bank account. A settlement is one bank deposit, which may span several processor batches.

## List Settlements

> Returns a paginated list of settlements (bank deposits) for a given date or date range, based on the settlement (deposit) date. Each settlement summarizes one deposit to the merchant's bank account; retrieve its settled-transaction line items with \[\`GET /settlements/{settlementId}\`]\(<https://fiska.gitbook.io/omni-payment-api/settlement-reporting/settlements).\\>
> \
> Either \`date\` or \`fromDate\`/\`toDate\` must be provided.\
> \
> The endpoint supports filtering and sorting via the \`filters\` and \`sorts\` parameters (see \[List Transactions]\(<https://fiska.gitbook.io/omni-payment-api/payments/transaction-retrieval>) for the filter operator table).\
> \
> \#### Examples:\
> \- Single day: \`?date=2026-07-01\`\
> \- Date range, ACH only: \`?fromDate=2026-07-01\&toDate=2026-07-07\&filters=type==Ach\`\
> \- Largest first: \`?date=2026-07-01\&sorts=-amount\`\
> \
> Read \`type\` and \`fundingType\` together: Card Net and Card Gross are both \`type: Card\`, with \`fundingType: Net\` or \`Gross\`. The \`amount\` is the deposited total in either case. See \[Settlements]\(<https://fiska.gitbook.io/omni-payment-api/settlement-reporting/settlements>) for how fees and reserves affect each model.<br>

````json
{"openapi":"3.1.0","info":{"title":"Integrated Commerce Omni-Channel Payment API","version":"2026.08.03"},"tags":[{"name":"Settlements","description":"**Beta.** Settlement reporting is in beta and is not yet available to every merchant. See [Settlement reporting](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/reporting) to ask for access.\n\nSettlement and settled-transaction reporting - what a payment processor has settled/deposited to the merchant's bank account. A settlement is one bank deposit, which may span several processor batches.\n"}],"servers":[{"url":"https://api.omni.integratedcommerce.io/v1"}],"security":[{"ApiKeyHeader":[]}],"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"All API requests must be authenticated using an API key. The API key should be included in the `x-api-key` header of each request.\n\n### API Key Format\n\n```\nx-api-key: <api-key>\n```\n\n### Resource Scope\n\nAn API key grants access only to the resources owned by its merchant. Every resource identifier you supply - transaction IDs, account holder IDs, payment method tokens, subscription IDs, settlement IDs - is resolved within the scope of the merchant that owns the API key.\n\nSupplying an identifier that belongs to a different merchant produces the same not-found response as an identifier that does not exist at all. Responses do not distinguish between the two cases, so a resource ID cannot be used to determine whether it exists under another merchant.\n\n### Environment-Specific Keys\n\nSeparate API keys identify the sandbox and production environments. The base URL for both environments is the same (`https://api.omni.integratedcommerce.io/v1`), but the keys are different.\n\n#### Sandbox Environment\n- Format: `key_test_<ULID>.<secret>`\n- Use this key for development and testing\n\n#### Production Environment\n- Format: `key_live_<ULID>.<secret>`\n- Use this key for live production traffic\n\nSend the complete key, including the secret after the dot. Legacy keys without a dot remain supported until revoked.\n\n### Error Responses\n\nIf authentication fails because of an invalid or missing API key, you will receive a `401 Unauthorized` response. Check the response message for more details.\n\n## Rate Limiting\n\nIf you receive `429 Too Many Requests`, pause before retrying. Honor `Retry-After` when supplied; otherwise use exponential backoff. The API does not guarantee `X-RateLimit-*` headers.\n"}},"parameters":{"ReportDate":{"name":"date","in":"query","required":false,"description":"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. Send a date in YYYY-MM-DD format.\n","schema":{"type":"string","format":"date"}},"ReportFromDate":{"name":"fromDate","in":"query","required":false,"description":"Inclusive start of the date range. If omitted while `toDate` is given, the range is the single day `toDate`. Send a date in YYYY-MM-DD format.\n","schema":{"type":"string","format":"date"}},"ReportToDate":{"name":"toDate","in":"query","required":false,"description":"Inclusive end of the date range. If omitted while `fromDate` is given, the range is the single day `fromDate`. Send a date in YYYY-MM-DD format.\n","schema":{"type":"string","format":"date"}},"ReportMerchantIds":{"name":"merchantIds","in":"query","required":false,"description":"Comma-separated list of merchant IDs to report on. Currently, every ID must match the merchant that owns your API key; any other ID is rejected with `401`. Omit it to report on that merchant.\n","schema":{"type":"string"}}},"schemas":{"SettlementsListResponse":{"type":"object","description":"Paginated response containing settlements","properties":{"totalCount":{"type":"integer","description":"Total number of settlements that match the filter criteria"},"page":{"type":"integer","description":"The current page number (starts at 1)"},"pageSize":{"type":"integer","description":"Number of items per page"},"totalPages":{"type":"integer","description":"Total number of pages available"},"hasNextPage":{"type":"boolean","description":"True if there are more pages of results available"},"hasPreviousPage":{"type":"boolean","description":"True if there are previous pages of results available"},"items":{"type":"array","description":"Array of settlements for the current page","items":{"$ref":"#/components/schemas/SettlementSummary"}}},"required":["totalCount","page","pageSize","totalPages","hasNextPage","hasPreviousPage","items"]},"SettlementSummary":{"type":"object","description":"A summary of a processor-reported transfer of payment proceeds to the merchant's bank account. It identifies the activity grouped into one deposit and reports its date, currency, total amount, rail, and funding type. See [Settlement](https://fiska.gitbook.io/omni-payment-api/glossary/settlement-and-fees#settlement) in the glossary.","properties":{"id":{"type":"string","description":"The settlement ID, prefixed with `stl_`."},"type":{"type":"string","enum":["Card","Ach"],"description":"The kind of settlement: `Card` for card payments or `Ach` for ACH bank transfers.\n\nRead this field together with `fundingType`. Card Net is `type: Card` with `fundingType: Net`; Card Gross is `type: Card` with `fundingType: Gross`. These are combinations of existing fields, not additional `type` values. ACH also supports both funding types.\n"},"settlementDate":{"type":"string","format":"date","description":"The date the settlement was deposited to the merchant's bank account."},"currency":{"type":"string","enum":["USD","CAD"]},"amount":{"type":"integer","description":"The processor-reported deposit total in minor units. Signed: refunds, fees, and adjustments can produce a negative deposit.\n\nFor Card Net, the deposit includes deductions for withheld interchange and discount fees. For Card Gross, those fees are billed separately. Reserve holds and transfers can change the deposited amount in either card funding model. Card transaction lines retain their full settled amounts before these deposit-level deductions.\n\nFor ACH, `fundingType` states whether fees are withheld from the deposit or billed separately.\n"},"fundingType":{"type":"string","enum":["Net","Gross"],"description":"Whether the payment provider withholds its fees from deposits or bills them separately. Read together with `type`; card and ACH funding terms can differ for the same merchant.\n\n**Net**: the deposit is after withheld fees. For Card Net, interchange and discount fees apply at the deposit level; the individual card lines remain before those deductions.\n\n**Gross**: fees are billed separately and do not reduce this deposit. For Card Gross, reserve holds and transfers can still change `amount`, so it need not equal the sum of card transaction amounts.\n\nFunding type does not determine the fee billing schedule. Use each [fee charge](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/fee-charges)'s `source` and `chargeDate`; monthly billing produces `StatementOnly` charges. An `amount` is always returned with a `fundingType` in scope.\n"},"netAmount":{"type":"integer","deprecated":true,"description":"**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.\n\nIts 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.\n"},"transactionCount":{"type":"integer","description":"Number of settled-transaction line items in the settlement. Always equal to the length of the `lineItems` array returned by [`GET /settlements/{settlementId}`](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/settlements), which withholds no line.\n"},"status":{"type":"string","enum":["Settled","Adjusted"],"description":"Status of the settlement.\n\n**Settled**: The settlement has been deposited to the merchant's bank account.\n\n**Adjusted**: Reserved value; not currently returned.\n"}},"required":["id","type","settlementDate","currency","amount","fundingType","netAmount","transactionCount","status"]},"Error":{"type":"object","description":"Represents an error that occurred during the request.","properties":{"code":{"type":"integer","enum":[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,6900,6901,6902,9000,9999],"description":"Numeric error code. These are grouped into ranges for easier identification and troubleshooting.\n\n * `0` - Unknown\n * `1000` - AuthenticationGenericError\n * `1001` - MerchantNotAuthorizedForResource\n * `2000` - RequestValidationGenericError\n * `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.\n * `2011` - InvalidTransactionType\n * `2012` - InvalidAmount\n * `2013` - PaymentMethodUsageRestricted\n * `2020` - InvalidPaymentMethodOwner\n * `2021` - InvalidAccountHolderOwner\n * `2100` - InvalidAccountHolderInformation\n * `2101` - InvalidCountryCode\n * `2102` - InvalidZipCode\n * `2103` - MissingCountryCodeOrZipCode\n * `2105` - InvalidEmailAddress\n * `2201` - MissingUniqueToken\n * `2202` - TransactionDeclinedError\n * `2900` - RequestValidationUnsupportedPayload\n * `2901` - RequestValidationWebhookMissingTypeAndDmnType\n * `2902` - RequestValidationUnsupportedWebhookTokenization\n * `2903` - RequestValidationUnsupportedWebhookType\n * `3000` - UnknownServerGenericError\n * `3201` - InvalidOrExpiredSession\n * `3202` - FailedToCreateSessionInAdapter\n * `3203` - ErrorWhileTokenizingCard\n * `3204` - FailedToLoadThirdPartySdk\n * `3205` - SessionExpired\n * `3299` - JavaScriptError\n * `3400` - ResourceNotReadyError\n * `3401` - TransactionNotCompleteYet\n * `3501` - CouldNotCreateBillingSubscription\n * `3502` - CouldNotCancelBillingSubscription\n * `3503` - BillingSubscriptionInvalidStatus\n * `4000` - ResourceNotFound\n * `4001` - TokenizedCardNotFound\n * `4002` - PaymentMethodNotFound\n * `4003` - AccountHolderNotFound\n * `4004` - BillingSubscriptionNotFound\n * `6000` - SdkGenericError\n * `6001` - SdkJavaScriptError\n * `6100` - SdkSessionLoadFailed\n * `6101` - SdkSessionExpired\n * `6102` - SdkSessionNotInitialized\n * `6103` - SdkEnvironmentMismatch\n * `6200` - SdkCardFieldsInvalid\n * `6201` - SdkCardTokenizationFailed\n * `6202` - SdkCardInitFailed\n * `6203` - SdkCardProcessingFailed\n * `6300` - SdkAchFieldsInvalid\n * `6301` - SdkAchProcessingFailed\n * `6400` - SdkEftProcessingFailed\n * `6500` - SdkWalletError\n * `6501` - SdkWalletProcessingFailed\n * `6600` - SdkThirdPartySdkLoadFailed\n * `6700` - SdkFormValidationFailed\n * `6701` - SdkBillingValidationFailed\n * `6800` - Sdk3dsAuthenticationFailed - Issuer ACS rejected the 3DS authentication. Only emitted when `formConfig.enable3DSecure: true`.\n * `6801` - Sdk3dsAuthenticationUnavailable - 3DS authentication could not be completed due to an upstream technical issue.\n * `6802` - Sdk3dsNotEnrolled - The card is not enrolled in 3DS.\n * `6900` - SdkCardDeclined - The issuer declined the card on the hosted payment form or Payment SDK path. The specific reason is on `transactionResponses[0].responseCode` (10-18) and in `resultText`.\n * `6901` - SdkCardGatewayError - The gateway rejected or failed the hosted payment form payment because of validation or a gateway failure rather than an issuer decision.\n * `6902` - SdkCardTokenMissing - The gateway reported no failure but returned no payment token.\n * `9000` - UnhandledGenericError\n * `9999` - MaxErrorCode\n"},"status":{"type":"string","enum":["Completed","Rejected","Interrupted","Unknown"],"description":"Execution status of the request sent to the payment gateway.\n\n * Completed - The request completed successfully.\n * Rejected - The request was rejected by the payment gateway. No action or side effects occurred. The transaction can safely be retried.\n * 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.\n * Unknown\n"},"message":{"type":"string","description":"Developer-facing error message."},"traceId":{"type":"string","description":"Unique trace identifier for tracking and debugging this request."},"timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred (UTC)."},"errorDetails":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}}}},"ErrorDetail":{"type":"object","description":"Represents a validation error that occurred during the request.","properties":{"code":{"type":"integer","description":"Error code"},"field":{"type":"string","description":"The field with the error"},"message":{"type":"string","description":"Error message"},"details":{"type":"string","description":"Additional details about the error"}}}},"responses":{"MissingDateRangeError":{"description":"Bad request - no date parameters were provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"UnauthorizedError":{"description":"Unauthorized response due to an invalid or missing API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/settlements":{"get":{"operationId":"getSettlements","summary":"List Settlements","description":"Returns a paginated list of settlements (bank deposits) for a given date or date range, based on the settlement (deposit) date. Each settlement summarizes one deposit to the merchant's bank account; retrieve its settled-transaction line items with [`GET /settlements/{settlementId}`](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/settlements).\n\nEither `date` or `fromDate`/`toDate` must be provided.\n\nThe endpoint supports filtering and sorting via the `filters` and `sorts` parameters (see [List Transactions](https://fiska.gitbook.io/omni-payment-api/payments/transaction-retrieval) for the filter operator table).\n\n#### Examples:\n- Single day: `?date=2026-07-01`\n- Date range, ACH only: `?fromDate=2026-07-01&toDate=2026-07-07&filters=type==Ach`\n- Largest first: `?date=2026-07-01&sorts=-amount`\n\nRead `type` and `fundingType` together: Card Net and Card Gross are both `type: Card`, with `fundingType: Net` or `Gross`. The `amount` is the deposited total in either case. See [Settlements](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/settlements) for how fees and reserves affect each model.\n","tags":["Settlements"],"parameters":[{"$ref":"#/components/parameters/ReportDate"},{"$ref":"#/components/parameters/ReportFromDate"},{"$ref":"#/components/parameters/ReportToDate"},{"$ref":"#/components/parameters/ReportMerchantIds"},{"name":"filters","in":"query","required":false,"description":"Filter criteria in the format: field==value,field!=value\nMultiple filters can be separated by commas.\nAvailable fields: settlementDate, type, amount, status. netAmount is accepted as a deprecated alias of amount until it is removed.\n","schema":{"type":"string"}},{"name":"sorts","in":"query","required":false,"description":"Sort criteria as comma-separated field names. Prefix a field with `-` for descending order.\nAvailable fields: settlementDate, amount, status. netAmount is accepted as a deprecated alias of amount until it is removed.\n","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number to retrieve (starts at 1).\nFor example, if you have 100 records with 10 per page, page 2 gives you records 11 to 20.\n","schema":{"type":"integer","minimum":1,"default":1}},{"name":"pageSize","in":"query","required":false,"description":"Number of records per page.\nFor example, if you have 100 records with 10 per page, page 2 gives you records 11 to 20.\n","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}}],"responses":{"200":{"description":"A successful paginated response containing settlements","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettlementsListResponse"}}}},"400":{"$ref":"#/components/responses/MissingDateRangeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
````

## List Settled Transactions

> Returns a paginated list of settled transactions for a given date or date range, based on the settlement date. Each item is enriched with the summary of the settlement it belongs to.\
> \
> Either \`date\` or \`fromDate\`/\`toDate\` must be provided.\
> \
> The endpoint supports filtering and sorting via the \`filters\` and \`sorts\` parameters (see \[List Transactions]\(<https://fiska.gitbook.io/omni-payment-api/payments/transaction-retrieval>) for the filter operator table).\
> \
> \#### Examples:\
> \- Single day: \`?date=2026-07-01\`\
> \- Date range, only unmatched lines: \`?fromDate=2026-07-01\&toDate=2026-07-07\&filters=matchStatus==Unmatched\`\
> \- Largest first: \`?date=2026-07-01\&sorts=-amount\`\
> \
> For Card Net and Card Gross, each line reports its full settled amount before deposit-level fees and reserves. Read \`settlement.type\` and \`fundingType\` together; \`fundingType: Net\` does not mean card fees have been deducted from each line.<br>

````json
{"openapi":"3.1.0","info":{"title":"Integrated Commerce Omni-Channel Payment API","version":"2026.08.03"},"tags":[{"name":"Settlements","description":"**Beta.** Settlement reporting is in beta and is not yet available to every merchant. See [Settlement reporting](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/reporting) to ask for access.\n\nSettlement and settled-transaction reporting - what a payment processor has settled/deposited to the merchant's bank account. A settlement is one bank deposit, which may span several processor batches.\n"}],"servers":[{"url":"https://api.omni.integratedcommerce.io/v1"}],"security":[{"ApiKeyHeader":[]}],"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"All API requests must be authenticated using an API key. The API key should be included in the `x-api-key` header of each request.\n\n### API Key Format\n\n```\nx-api-key: <api-key>\n```\n\n### Resource Scope\n\nAn API key grants access only to the resources owned by its merchant. Every resource identifier you supply - transaction IDs, account holder IDs, payment method tokens, subscription IDs, settlement IDs - is resolved within the scope of the merchant that owns the API key.\n\nSupplying an identifier that belongs to a different merchant produces the same not-found response as an identifier that does not exist at all. Responses do not distinguish between the two cases, so a resource ID cannot be used to determine whether it exists under another merchant.\n\n### Environment-Specific Keys\n\nSeparate API keys identify the sandbox and production environments. The base URL for both environments is the same (`https://api.omni.integratedcommerce.io/v1`), but the keys are different.\n\n#### Sandbox Environment\n- Format: `key_test_<ULID>.<secret>`\n- Use this key for development and testing\n\n#### Production Environment\n- Format: `key_live_<ULID>.<secret>`\n- Use this key for live production traffic\n\nSend the complete key, including the secret after the dot. Legacy keys without a dot remain supported until revoked.\n\n### Error Responses\n\nIf authentication fails because of an invalid or missing API key, you will receive a `401 Unauthorized` response. Check the response message for more details.\n\n## Rate Limiting\n\nIf you receive `429 Too Many Requests`, pause before retrying. Honor `Retry-After` when supplied; otherwise use exponential backoff. The API does not guarantee `X-RateLimit-*` headers.\n"}},"parameters":{"ReportDate":{"name":"date","in":"query","required":false,"description":"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. Send a date in YYYY-MM-DD format.\n","schema":{"type":"string","format":"date"}},"ReportFromDate":{"name":"fromDate","in":"query","required":false,"description":"Inclusive start of the date range. If omitted while `toDate` is given, the range is the single day `toDate`. Send a date in YYYY-MM-DD format.\n","schema":{"type":"string","format":"date"}},"ReportToDate":{"name":"toDate","in":"query","required":false,"description":"Inclusive end of the date range. If omitted while `fromDate` is given, the range is the single day `fromDate`. Send a date in YYYY-MM-DD format.\n","schema":{"type":"string","format":"date"}},"ReportMerchantIds":{"name":"merchantIds","in":"query","required":false,"description":"Comma-separated list of merchant IDs to report on. Currently, every ID must match the merchant that owns your API key; any other ID is rejected with `401`. Omit it to report on that merchant.\n","schema":{"type":"string"}}},"schemas":{"SettledTransactionsListResponse":{"type":"object","description":"Paginated response containing settled transactions","properties":{"totalCount":{"type":"integer","description":"Total number of settled transactions that match the filter criteria"},"page":{"type":"integer","description":"The current page number (starts at 1)"},"pageSize":{"type":"integer","description":"Number of items per page"},"totalPages":{"type":"integer","description":"Total number of pages available"},"hasNextPage":{"type":"boolean","description":"True if there are more pages of results available"},"hasPreviousPage":{"type":"boolean","description":"True if there are previous pages of results available"},"items":{"type":"array","description":"Array of settled transactions for the current page","items":{"$ref":"#/components/schemas/SettlementTransaction"}}},"required":["totalCount","page","pageSize","totalPages","hasNextPage","hasPreviousPage","items"]},"SettlementTransaction":{"type":"object","description":"A processor-reported line showing how one sale, capture, refund, or failed payout contributes to a merchant deposit. This list representation includes the parent settlement's summary so the line can be interpreted with its deposit, rail, and funding type. See [Settled transaction](https://fiska.gitbook.io/omni-payment-api/glossary/settlement-and-fees#settled-transaction) in the glossary.\n","properties":{"settlement":{"$ref":"#/components/schemas/SettlementSummary"},"transactionId":{"type":"string","description":"The Fiska transaction ID, prefixed with `trx_`. Absent when `matchStatus` is `Unmatched` - look it up via [`GET /transactions`](https://fiska.gitbook.io/omni-payment-api/payments/transaction-retrieval) (e.g. `?filters=id==trx_...`) for full transaction detail.\n"},"transactionType":{"type":"string","enum":["Sale","Refund","Capture","Return"],"description":"The kind of settled transaction.\n\n**Sale**: A sale that deposited funds to the merchant.\n\n**Refund**: A refund/credit returned to the cardholder or payer (reduces the net deposit).\n\n**Capture**: The capture/settlement of a previously authorized transaction.\n\n**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.\n"},"gatewayTransactionId":{"type":"string","description":"The gateway's own transaction ID."},"batchId":{"type":"string","description":"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":{"type":"string","enum":["Unmatched","Matched","ManuallyMatched"],"description":"Whether the settled transaction has been matched to a Fiska transaction.\n\n**Unmatched**: No Fiska transaction has been identified for this settled line; `transactionId` is absent.\n\n**Matched**: Automatically matched to a Fiska transaction.\n\n**ManuallyMatched**: Matched to a Fiska transaction by manual reconciliation.\n"},"invoiceNumber":{"type":"string","description":"Populated from the matched Fiska transaction, when one exists."},"paymentType":{"type":"string","description":"Populated from the matched Fiska transaction's card type, when one exists."},"settlementDate":{"type":"string","format":"date","description":"The date the transaction was settled - the parent settlement's deposit date."},"transactionDate":{"type":"string","format":"date-time","description":"The date the underlying transaction was processed, when reported."},"amount":{"type":"integer","description":"The settled line amount in minor units. Signed: refunds are negative.\n\n**Card Net and Card Gross**: the full settled transaction amount before deposit-level fees and reserve adjustments. Card fees are not allocated to individual transaction lines, so `fundingType: Net` does not make a card line's amount net of those fees.\n\n**ACH Net**: the disbursed amount less any fees withheld from this line. A zero-disbursement `Return` can therefore have a negative amount equal to its fee. **ACH Gross**: the disbursed amount without subtracting separately billed fees; a zero-disbursement line remains zero.\n\nWithheld fees are also itemized by [GET /fee-charges](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/fee-charges). Do not subtract them again from amounts that already include the deduction.\n"},"fundingType":{"type":"string","enum":["Net","Gross"],"description":"The parent settlement's funding type, repeated on this line. Read with `settlement.type`.\n\nFor Card Net and Card Gross, this field describes deposit-level fee withholding; the line's `amount` remains the full settled transaction amount. For ACH Net, line-level fees are withheld where applicable; for ACH Gross, they are billed separately. Funding type alone does not determine fee billing dates.\n"},"netAmount":{"type":"integer","deprecated":true,"description":"**Deprecated - read `amount` instead.** This member mirrors `amount` exactly. The enclosing settlement's `type` and `fundingType` explain the line amount: card lines retain their full settled amounts under both Card Net and Card Gross; ACH Net lines reflect any fees withheld from that line.\n\nDeprecated 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. Despite its name, it does not necessarily represent an amount after fees.\n"},"currency":{"type":"string","enum":["USD","CAD"]}},"required":["settlement","transactionType","gatewayTransactionId","matchStatus","settlementDate","amount","fundingType","netAmount","currency"]},"SettlementSummary":{"type":"object","description":"A summary of a processor-reported transfer of payment proceeds to the merchant's bank account. It identifies the activity grouped into one deposit and reports its date, currency, total amount, rail, and funding type. See [Settlement](https://fiska.gitbook.io/omni-payment-api/glossary/settlement-and-fees#settlement) in the glossary.","properties":{"id":{"type":"string","description":"The settlement ID, prefixed with `stl_`."},"type":{"type":"string","enum":["Card","Ach"],"description":"The kind of settlement: `Card` for card payments or `Ach` for ACH bank transfers.\n\nRead this field together with `fundingType`. Card Net is `type: Card` with `fundingType: Net`; Card Gross is `type: Card` with `fundingType: Gross`. These are combinations of existing fields, not additional `type` values. ACH also supports both funding types.\n"},"settlementDate":{"type":"string","format":"date","description":"The date the settlement was deposited to the merchant's bank account."},"currency":{"type":"string","enum":["USD","CAD"]},"amount":{"type":"integer","description":"The processor-reported deposit total in minor units. Signed: refunds, fees, and adjustments can produce a negative deposit.\n\nFor Card Net, the deposit includes deductions for withheld interchange and discount fees. For Card Gross, those fees are billed separately. Reserve holds and transfers can change the deposited amount in either card funding model. Card transaction lines retain their full settled amounts before these deposit-level deductions.\n\nFor ACH, `fundingType` states whether fees are withheld from the deposit or billed separately.\n"},"fundingType":{"type":"string","enum":["Net","Gross"],"description":"Whether the payment provider withholds its fees from deposits or bills them separately. Read together with `type`; card and ACH funding terms can differ for the same merchant.\n\n**Net**: the deposit is after withheld fees. For Card Net, interchange and discount fees apply at the deposit level; the individual card lines remain before those deductions.\n\n**Gross**: fees are billed separately and do not reduce this deposit. For Card Gross, reserve holds and transfers can still change `amount`, so it need not equal the sum of card transaction amounts.\n\nFunding type does not determine the fee billing schedule. Use each [fee charge](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/fee-charges)'s `source` and `chargeDate`; monthly billing produces `StatementOnly` charges. An `amount` is always returned with a `fundingType` in scope.\n"},"netAmount":{"type":"integer","deprecated":true,"description":"**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.\n\nIts 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.\n"},"transactionCount":{"type":"integer","description":"Number of settled-transaction line items in the settlement. Always equal to the length of the `lineItems` array returned by [`GET /settlements/{settlementId}`](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/settlements), which withholds no line.\n"},"status":{"type":"string","enum":["Settled","Adjusted"],"description":"Status of the settlement.\n\n**Settled**: The settlement has been deposited to the merchant's bank account.\n\n**Adjusted**: Reserved value; not currently returned.\n"}},"required":["id","type","settlementDate","currency","amount","fundingType","netAmount","transactionCount","status"]},"Error":{"type":"object","description":"Represents an error that occurred during the request.","properties":{"code":{"type":"integer","enum":[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,6900,6901,6902,9000,9999],"description":"Numeric error code. These are grouped into ranges for easier identification and troubleshooting.\n\n * `0` - Unknown\n * `1000` - AuthenticationGenericError\n * `1001` - MerchantNotAuthorizedForResource\n * `2000` - RequestValidationGenericError\n * `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.\n * `2011` - InvalidTransactionType\n * `2012` - InvalidAmount\n * `2013` - PaymentMethodUsageRestricted\n * `2020` - InvalidPaymentMethodOwner\n * `2021` - InvalidAccountHolderOwner\n * `2100` - InvalidAccountHolderInformation\n * `2101` - InvalidCountryCode\n * `2102` - InvalidZipCode\n * `2103` - MissingCountryCodeOrZipCode\n * `2105` - InvalidEmailAddress\n * `2201` - MissingUniqueToken\n * `2202` - TransactionDeclinedError\n * `2900` - RequestValidationUnsupportedPayload\n * `2901` - RequestValidationWebhookMissingTypeAndDmnType\n * `2902` - RequestValidationUnsupportedWebhookTokenization\n * `2903` - RequestValidationUnsupportedWebhookType\n * `3000` - UnknownServerGenericError\n * `3201` - InvalidOrExpiredSession\n * `3202` - FailedToCreateSessionInAdapter\n * `3203` - ErrorWhileTokenizingCard\n * `3204` - FailedToLoadThirdPartySdk\n * `3205` - SessionExpired\n * `3299` - JavaScriptError\n * `3400` - ResourceNotReadyError\n * `3401` - TransactionNotCompleteYet\n * `3501` - CouldNotCreateBillingSubscription\n * `3502` - CouldNotCancelBillingSubscription\n * `3503` - BillingSubscriptionInvalidStatus\n * `4000` - ResourceNotFound\n * `4001` - TokenizedCardNotFound\n * `4002` - PaymentMethodNotFound\n * `4003` - AccountHolderNotFound\n * `4004` - BillingSubscriptionNotFound\n * `6000` - SdkGenericError\n * `6001` - SdkJavaScriptError\n * `6100` - SdkSessionLoadFailed\n * `6101` - SdkSessionExpired\n * `6102` - SdkSessionNotInitialized\n * `6103` - SdkEnvironmentMismatch\n * `6200` - SdkCardFieldsInvalid\n * `6201` - SdkCardTokenizationFailed\n * `6202` - SdkCardInitFailed\n * `6203` - SdkCardProcessingFailed\n * `6300` - SdkAchFieldsInvalid\n * `6301` - SdkAchProcessingFailed\n * `6400` - SdkEftProcessingFailed\n * `6500` - SdkWalletError\n * `6501` - SdkWalletProcessingFailed\n * `6600` - SdkThirdPartySdkLoadFailed\n * `6700` - SdkFormValidationFailed\n * `6701` - SdkBillingValidationFailed\n * `6800` - Sdk3dsAuthenticationFailed - Issuer ACS rejected the 3DS authentication. Only emitted when `formConfig.enable3DSecure: true`.\n * `6801` - Sdk3dsAuthenticationUnavailable - 3DS authentication could not be completed due to an upstream technical issue.\n * `6802` - Sdk3dsNotEnrolled - The card is not enrolled in 3DS.\n * `6900` - SdkCardDeclined - The issuer declined the card on the hosted payment form or Payment SDK path. The specific reason is on `transactionResponses[0].responseCode` (10-18) and in `resultText`.\n * `6901` - SdkCardGatewayError - The gateway rejected or failed the hosted payment form payment because of validation or a gateway failure rather than an issuer decision.\n * `6902` - SdkCardTokenMissing - The gateway reported no failure but returned no payment token.\n * `9000` - UnhandledGenericError\n * `9999` - MaxErrorCode\n"},"status":{"type":"string","enum":["Completed","Rejected","Interrupted","Unknown"],"description":"Execution status of the request sent to the payment gateway.\n\n * Completed - The request completed successfully.\n * Rejected - The request was rejected by the payment gateway. No action or side effects occurred. The transaction can safely be retried.\n * 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.\n * Unknown\n"},"message":{"type":"string","description":"Developer-facing error message."},"traceId":{"type":"string","description":"Unique trace identifier for tracking and debugging this request."},"timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred (UTC)."},"errorDetails":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}}}},"ErrorDetail":{"type":"object","description":"Represents a validation error that occurred during the request.","properties":{"code":{"type":"integer","description":"Error code"},"field":{"type":"string","description":"The field with the error"},"message":{"type":"string","description":"Error message"},"details":{"type":"string","description":"Additional details about the error"}}}},"responses":{"MissingDateRangeError":{"description":"Bad request - no date parameters were provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"UnauthorizedError":{"description":"Unauthorized response due to an invalid or missing API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/settlements/transactions":{"get":{"operationId":"getSettledTransactions","summary":"List Settled Transactions","description":"Returns a paginated list of settled transactions for a given date or date range, based on the settlement date. Each item is enriched with the summary of the settlement it belongs to.\n\nEither `date` or `fromDate`/`toDate` must be provided.\n\nThe endpoint supports filtering and sorting via the `filters` and `sorts` parameters (see [List Transactions](https://fiska.gitbook.io/omni-payment-api/payments/transaction-retrieval) for the filter operator table).\n\n#### Examples:\n- Single day: `?date=2026-07-01`\n- Date range, only unmatched lines: `?fromDate=2026-07-01&toDate=2026-07-07&filters=matchStatus==Unmatched`\n- Largest first: `?date=2026-07-01&sorts=-amount`\n\nFor Card Net and Card Gross, each line reports its full settled amount before deposit-level fees and reserves. Read `settlement.type` and `fundingType` together; `fundingType: Net` does not mean card fees have been deducted from each line.\n","tags":["Settlements"],"parameters":[{"$ref":"#/components/parameters/ReportDate"},{"$ref":"#/components/parameters/ReportFromDate"},{"$ref":"#/components/parameters/ReportToDate"},{"$ref":"#/components/parameters/ReportMerchantIds"},{"name":"filters","in":"query","required":false,"description":"Filter criteria in the format: field==value,field!=value\nMultiple filters can be separated by commas.\nAvailable fields: settlementDate, matchStatus, amount. netAmount is accepted as a deprecated alias of amount until it is removed.\n","schema":{"type":"string"}},{"name":"sorts","in":"query","required":false,"description":"Sort criteria as comma-separated field names. Prefix a field with `-` for descending order.\nAvailable fields: settlementDate, matchStatus, amount. netAmount is accepted as a deprecated alias of amount until it is removed.\n","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number to retrieve (starts at 1).\nFor example, if you have 100 records with 10 per page, page 2 gives you records 11 to 20.\n","schema":{"type":"integer","minimum":1,"default":1}},{"name":"pageSize","in":"query","required":false,"description":"Number of records per page.\nFor example, if you have 100 records with 10 per page, page 2 gives you records 11 to 20.\n","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}}],"responses":{"200":{"description":"A successful paginated response containing settled transactions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettledTransactionsListResponse"}}}},"400":{"$ref":"#/components/responses/MissingDateRangeError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
````

## Get Settlement

> 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\`]\(<https://fiska.gitbook.io/omni-payment-api/payments/transaction-retrieval>) (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\`.\
> \
> Reconciliation depends on both \`type\` and \`fundingType\`:\
> \
> \- \*\*Card Net\*\* (\`type: Card\`, \`fundingType: Net\`): sum of full card line amounts, less withheld interchange and discount fees, plus signed reserve holds and transfers.\
> \- \*\*Card Gross\*\* (\`type: Card\`, \`fundingType: Gross\`): sum of full card line amounts, plus signed reserve holds and transfers. Fees are billed separately and do not reduce the deposit.\
> \- \*\*Ach Net\*\* (\`type: Ach\`, \`fundingType: Net\`): sum of line amounts, less any withheld deposit-level fees. The line amounts already reflect fees withheld from individual transactions.\
> \- \*\*Ach Gross\*\* (\`type: Ach\`, \`fundingType: Gross\`): sum of line amounts, with fees billed separately. Monthly billing produces \`StatementOnly\` fee charges dated to the billing month.\
> \
> The card formulas assume all transaction lines are available. The deposit amount is the processor-reported total; card lines can become available later than that total. Reserve movements are not exposed as transaction lines or posted fee charges, so the line items and fees may not be sufficient to reconstruct the deposit exactly. See the \[Card Net and Card Gross examples]\(<https://fiska.gitbook.io/omni-payment-api/settlement-reporting/settlements#card-net-and-card-gross-example>).<br>

````json
{"openapi":"3.1.0","info":{"title":"Integrated Commerce Omni-Channel Payment API","version":"2026.08.03"},"tags":[{"name":"Settlements","description":"**Beta.** Settlement reporting is in beta and is not yet available to every merchant. See [Settlement reporting](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/reporting) to ask for access.\n\nSettlement and settled-transaction reporting - what a payment processor has settled/deposited to the merchant's bank account. A settlement is one bank deposit, which may span several processor batches.\n"}],"servers":[{"url":"https://api.omni.integratedcommerce.io/v1"}],"security":[{"ApiKeyHeader":[]}],"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"All API requests must be authenticated using an API key. The API key should be included in the `x-api-key` header of each request.\n\n### API Key Format\n\n```\nx-api-key: <api-key>\n```\n\n### Resource Scope\n\nAn API key grants access only to the resources owned by its merchant. Every resource identifier you supply - transaction IDs, account holder IDs, payment method tokens, subscription IDs, settlement IDs - is resolved within the scope of the merchant that owns the API key.\n\nSupplying an identifier that belongs to a different merchant produces the same not-found response as an identifier that does not exist at all. Responses do not distinguish between the two cases, so a resource ID cannot be used to determine whether it exists under another merchant.\n\n### Environment-Specific Keys\n\nSeparate API keys identify the sandbox and production environments. The base URL for both environments is the same (`https://api.omni.integratedcommerce.io/v1`), but the keys are different.\n\n#### Sandbox Environment\n- Format: `key_test_<ULID>.<secret>`\n- Use this key for development and testing\n\n#### Production Environment\n- Format: `key_live_<ULID>.<secret>`\n- Use this key for live production traffic\n\nSend the complete key, including the secret after the dot. Legacy keys without a dot remain supported until revoked.\n\n### Error Responses\n\nIf authentication fails because of an invalid or missing API key, you will receive a `401 Unauthorized` response. Check the response message for more details.\n\n## Rate Limiting\n\nIf you receive `429 Too Many Requests`, pause before retrying. Honor `Retry-After` when supplied; otherwise use exponential backoff. The API does not guarantee `X-RateLimit-*` headers.\n"}},"parameters":{"ReportMerchantIds":{"name":"merchantIds","in":"query","required":false,"description":"Comma-separated list of merchant IDs to report on. Currently, every ID must match the merchant that owns your API key; any other ID is rejected with `401`. Omit it to report on that merchant.\n","schema":{"type":"string"}}},"schemas":{"SettlementDetailResponse":{"allOf":[{"$ref":"#/components/schemas/SettlementSummary"},{"type":"object","description":"Full detail of a single settlement, including its settled-transaction line items.","properties":{"merchantId":{"type":"string","description":"The ID of the merchant the settlement was deposited to, prefixed with `mer_`."},"lineItems":{"type":"array","items":{"$ref":"#/components/schemas/SettlementLineItem"}}},"required":["merchantId","lineItems"]}]},"SettlementSummary":{"type":"object","description":"A summary of a processor-reported transfer of payment proceeds to the merchant's bank account. It identifies the activity grouped into one deposit and reports its date, currency, total amount, rail, and funding type. See [Settlement](https://fiska.gitbook.io/omni-payment-api/glossary/settlement-and-fees#settlement) in the glossary.","properties":{"id":{"type":"string","description":"The settlement ID, prefixed with `stl_`."},"type":{"type":"string","enum":["Card","Ach"],"description":"The kind of settlement: `Card` for card payments or `Ach` for ACH bank transfers.\n\nRead this field together with `fundingType`. Card Net is `type: Card` with `fundingType: Net`; Card Gross is `type: Card` with `fundingType: Gross`. These are combinations of existing fields, not additional `type` values. ACH also supports both funding types.\n"},"settlementDate":{"type":"string","format":"date","description":"The date the settlement was deposited to the merchant's bank account."},"currency":{"type":"string","enum":["USD","CAD"]},"amount":{"type":"integer","description":"The processor-reported deposit total in minor units. Signed: refunds, fees, and adjustments can produce a negative deposit.\n\nFor Card Net, the deposit includes deductions for withheld interchange and discount fees. For Card Gross, those fees are billed separately. Reserve holds and transfers can change the deposited amount in either card funding model. Card transaction lines retain their full settled amounts before these deposit-level deductions.\n\nFor ACH, `fundingType` states whether fees are withheld from the deposit or billed separately.\n"},"fundingType":{"type":"string","enum":["Net","Gross"],"description":"Whether the payment provider withholds its fees from deposits or bills them separately. Read together with `type`; card and ACH funding terms can differ for the same merchant.\n\n**Net**: the deposit is after withheld fees. For Card Net, interchange and discount fees apply at the deposit level; the individual card lines remain before those deductions.\n\n**Gross**: fees are billed separately and do not reduce this deposit. For Card Gross, reserve holds and transfers can still change `amount`, so it need not equal the sum of card transaction amounts.\n\nFunding type does not determine the fee billing schedule. Use each [fee charge](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/fee-charges)'s `source` and `chargeDate`; monthly billing produces `StatementOnly` charges. An `amount` is always returned with a `fundingType` in scope.\n"},"netAmount":{"type":"integer","deprecated":true,"description":"**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.\n\nIts 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.\n"},"transactionCount":{"type":"integer","description":"Number of settled-transaction line items in the settlement. Always equal to the length of the `lineItems` array returned by [`GET /settlements/{settlementId}`](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/settlements), which withholds no line.\n"},"status":{"type":"string","enum":["Settled","Adjusted"],"description":"Status of the settlement.\n\n**Settled**: The settlement has been deposited to the merchant's bank account.\n\n**Adjusted**: Reserved value; not currently returned.\n"}},"required":["id","type","settlementDate","currency","amount","fundingType","netAmount","transactionCount","status"]},"SettlementLineItem":{"type":"object","description":"A processor-reported line showing how one sale, capture, refund, or failed payout contributes to a merchant deposit. It records the activity's amount and processor identifiers, plus the Fiska transaction ID when matched. See [Settled transaction](https://fiska.gitbook.io/omni-payment-api/glossary/settlement-and-fees#settled-transaction) in the glossary.","properties":{"transactionId":{"type":"string","description":"The transaction ID, prefixed with `trx_`. Absent when `matchStatus` is `Unmatched` - look it up via [`GET /transactions`](https://fiska.gitbook.io/omni-payment-api/payments/transaction-retrieval) (e.g. `?filters=id==trx_...`) for full transaction detail.\n"},"transactionType":{"type":"string","enum":["Sale","Refund","Capture","Return"],"description":"The kind of settled transaction.\n\n**Sale**: A sale that deposited funds to the merchant.\n\n**Refund**: A refund/credit returned to the cardholder or payer (reduces the net deposit).\n\n**Capture**: The capture/settlement of a previously authorized transaction.\n\n**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.\n"},"gatewayTransactionId":{"type":"string","description":"The gateway's own transaction ID."},"batchId":{"type":"string","description":"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":{"type":"string","enum":["Unmatched","Matched","ManuallyMatched"],"description":"Whether the settled transaction has been matched to a Fiska transaction.\n\n**Unmatched**: No Fiska transaction has been identified for this settled line; `transactionId` is absent.\n\n**Matched**: Automatically matched to a Fiska transaction.\n\n**ManuallyMatched**: Matched to a Fiska transaction by manual reconciliation.\n"},"invoiceNumber":{"type":"string","description":"Populated from the matched Fiska transaction, when one exists."},"paymentType":{"type":"string","description":"Populated from the matched Fiska transaction's card type, when one exists."},"transactionDate":{"type":"string","format":"date-time","description":"The date the underlying transaction was processed, when reported."},"amount":{"type":"integer","description":"The settled line amount in minor units. Signed: refunds are negative.\n\n**Card Net and Card Gross**: the full settled transaction amount before deposit-level fees and reserve adjustments. Card fees are not allocated to individual transaction lines, so `fundingType: Net` does not make a card line's amount net of those fees.\n\n**ACH Net**: the disbursed amount less any fees withheld from this line. A zero-disbursement `Return` can therefore have a negative amount equal to its fee. **ACH Gross**: the disbursed amount without subtracting separately billed fees; a zero-disbursement line remains zero.\n\nWithheld fees are also itemized by [GET /fee-charges](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/fee-charges). Do not subtract them again from amounts that already include the deduction.\n"},"netAmount":{"type":"integer","deprecated":true,"description":"**Deprecated - read `amount` instead.** This member mirrors `amount` exactly. The enclosing settlement's `type` and `fundingType` explain the line amount: card lines retain their full settled amounts under both Card Net and Card Gross; ACH Net lines reflect any fees withheld from that line.\n\nDeprecated 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. Despite its name, it does not necessarily represent an amount after fees.\n"},"currency":{"type":"string","enum":["USD","CAD"]}},"required":["transactionType","gatewayTransactionId","matchStatus","amount","netAmount","currency"]},"Error":{"type":"object","description":"Represents an error that occurred during the request.","properties":{"code":{"type":"integer","enum":[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,6900,6901,6902,9000,9999],"description":"Numeric error code. These are grouped into ranges for easier identification and troubleshooting.\n\n * `0` - Unknown\n * `1000` - AuthenticationGenericError\n * `1001` - MerchantNotAuthorizedForResource\n * `2000` - RequestValidationGenericError\n * `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.\n * `2011` - InvalidTransactionType\n * `2012` - InvalidAmount\n * `2013` - PaymentMethodUsageRestricted\n * `2020` - InvalidPaymentMethodOwner\n * `2021` - InvalidAccountHolderOwner\n * `2100` - InvalidAccountHolderInformation\n * `2101` - InvalidCountryCode\n * `2102` - InvalidZipCode\n * `2103` - MissingCountryCodeOrZipCode\n * `2105` - InvalidEmailAddress\n * `2201` - MissingUniqueToken\n * `2202` - TransactionDeclinedError\n * `2900` - RequestValidationUnsupportedPayload\n * `2901` - RequestValidationWebhookMissingTypeAndDmnType\n * `2902` - RequestValidationUnsupportedWebhookTokenization\n * `2903` - RequestValidationUnsupportedWebhookType\n * `3000` - UnknownServerGenericError\n * `3201` - InvalidOrExpiredSession\n * `3202` - FailedToCreateSessionInAdapter\n * `3203` - ErrorWhileTokenizingCard\n * `3204` - FailedToLoadThirdPartySdk\n * `3205` - SessionExpired\n * `3299` - JavaScriptError\n * `3400` - ResourceNotReadyError\n * `3401` - TransactionNotCompleteYet\n * `3501` - CouldNotCreateBillingSubscription\n * `3502` - CouldNotCancelBillingSubscription\n * `3503` - BillingSubscriptionInvalidStatus\n * `4000` - ResourceNotFound\n * `4001` - TokenizedCardNotFound\n * `4002` - PaymentMethodNotFound\n * `4003` - AccountHolderNotFound\n * `4004` - BillingSubscriptionNotFound\n * `6000` - SdkGenericError\n * `6001` - SdkJavaScriptError\n * `6100` - SdkSessionLoadFailed\n * `6101` - SdkSessionExpired\n * `6102` - SdkSessionNotInitialized\n * `6103` - SdkEnvironmentMismatch\n * `6200` - SdkCardFieldsInvalid\n * `6201` - SdkCardTokenizationFailed\n * `6202` - SdkCardInitFailed\n * `6203` - SdkCardProcessingFailed\n * `6300` - SdkAchFieldsInvalid\n * `6301` - SdkAchProcessingFailed\n * `6400` - SdkEftProcessingFailed\n * `6500` - SdkWalletError\n * `6501` - SdkWalletProcessingFailed\n * `6600` - SdkThirdPartySdkLoadFailed\n * `6700` - SdkFormValidationFailed\n * `6701` - SdkBillingValidationFailed\n * `6800` - Sdk3dsAuthenticationFailed - Issuer ACS rejected the 3DS authentication. Only emitted when `formConfig.enable3DSecure: true`.\n * `6801` - Sdk3dsAuthenticationUnavailable - 3DS authentication could not be completed due to an upstream technical issue.\n * `6802` - Sdk3dsNotEnrolled - The card is not enrolled in 3DS.\n * `6900` - SdkCardDeclined - The issuer declined the card on the hosted payment form or Payment SDK path. The specific reason is on `transactionResponses[0].responseCode` (10-18) and in `resultText`.\n * `6901` - SdkCardGatewayError - The gateway rejected or failed the hosted payment form payment because of validation or a gateway failure rather than an issuer decision.\n * `6902` - SdkCardTokenMissing - The gateway reported no failure but returned no payment token.\n * `9000` - UnhandledGenericError\n * `9999` - MaxErrorCode\n"},"status":{"type":"string","enum":["Completed","Rejected","Interrupted","Unknown"],"description":"Execution status of the request sent to the payment gateway.\n\n * Completed - The request completed successfully.\n * Rejected - The request was rejected by the payment gateway. No action or side effects occurred. The transaction can safely be retried.\n * 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.\n * Unknown\n"},"message":{"type":"string","description":"Developer-facing error message."},"traceId":{"type":"string","description":"Unique trace identifier for tracking and debugging this request."},"timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred (UTC)."},"errorDetails":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}}}},"ErrorDetail":{"type":"object","description":"Represents a validation error that occurred during the request.","properties":{"code":{"type":"integer","description":"Error code"},"field":{"type":"string","description":"The field with the error"},"message":{"type":"string","description":"Error message"},"details":{"type":"string","description":"Additional details about the error"}}}},"responses":{"UnauthorizedError":{"description":"Unauthorized response due to an invalid or missing API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"SettlementNotFoundError":{"description":"The settlement does not exist or does not belong to the merchant.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/settlements/{settlementId}":{"get":{"operationId":"getSettlement","summary":"Get Settlement","description":"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`](https://fiska.gitbook.io/omni-payment-api/payments/transaction-retrieval) (e.g. `?filters=id==trx_...`) for full transaction detail.\n\nEvery line item the deposit contains is returned, including any that moved no money, so `lineItems` always matches the settlement's own `transactionCount`.\n\nReconciliation depends on both `type` and `fundingType`:\n\n- **Card Net** (`type: Card`, `fundingType: Net`): sum of full card line amounts, less withheld interchange and discount fees, plus signed reserve holds and transfers.\n- **Card Gross** (`type: Card`, `fundingType: Gross`): sum of full card line amounts, plus signed reserve holds and transfers. Fees are billed separately and do not reduce the deposit.\n- **Ach Net** (`type: Ach`, `fundingType: Net`): sum of line amounts, less any withheld deposit-level fees. The line amounts already reflect fees withheld from individual transactions.\n- **Ach Gross** (`type: Ach`, `fundingType: Gross`): sum of line amounts, with fees billed separately. Monthly billing produces `StatementOnly` fee charges dated to the billing month.\n\nThe card formulas assume all transaction lines are available. The deposit amount is the processor-reported total; card lines can become available later than that total. Reserve movements are not exposed as transaction lines or posted fee charges, so the line items and fees may not be sufficient to reconstruct the deposit exactly. See the [Card Net and Card Gross examples](https://fiska.gitbook.io/omni-payment-api/settlement-reporting/settlements#card-net-and-card-gross-example).\n","tags":["Settlements"],"parameters":[{"name":"settlementId","in":"path","required":true,"description":"The settlement ID, prefixed with `stl_`.","schema":{"type":"string"}},{"$ref":"#/components/parameters/ReportMerchantIds"}],"responses":{"200":{"description":"The settlement details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettlementDetailResponse"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/SettlementNotFoundError"}}}}}}
````
