# Check posting and settlement Checks are classified as cash‑in instruments and follow a processing and settlement model that differs significantly from real‑time electronic payments. While checks are still commonly issued and accepted in many markets, their clearing relies on an external clearing house that intermediates communication between the receiving and issuing banks. Pismo platform’s check‑handling and settlement capabilities combine API‑driven operations with file‑based bulk processing to support flexible and scalable check management. Individual check actions, such as posting, releasing, or canceling, are performed through dedicated APIs, while bulk operations are handled through a bulk‑settlement API endpoint that generates structured output files, and tracked through lifecycle events from creation to completion or failure. The same bulk-settlement endpoint also resolves all pending check operations for a specified division and date, providing consistent batch settlement that aligns with event‑based processing, generated file outputs, and overall operational workflows. # Check posting You can submit check deposits using the [Create check posting](https://developers.pismo.io/pismo-docs/reference/corporate-post-v1-checks) endpoint and determine whether the funds are made available immediately or at a future date. This behavior is controlled by the `settlement_type` field that includes the following options. | Settlement type | Description | | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `BEGINNING` | This settlement type makes funds available immediately upon deposit. It also supports check posting to allow part or all of the deposited amount to be placed on hold. | | `END` | Deposits made under this type do not include any operational holds. The entire value remains uncleared until the assigned settlement date, the funds become available only after the check is released, which requires a client request. | ## Check settlement types You may also define whether the check amount is deposited in full or only partially, with any remaining value placed on hold until its corresponding settlement date. You can specify check settlement types using the `type` field of the `settlements` object. Refer to [Create check posting](https://developers.pismo.io/pismo-docs/reference/corporate-post-v1-checks) for details. | Check settlement type | Description | Applicable check settlement type | | --------------------- | ------------------------------------------------------------------------------------------------------------------- | :------------------------------- | | `DEPOSIT` | Specifies the amount to be deposited. This can be the full check value or a partial amount. | `BEGINNING` | | `PENDING` | Indicates the amount that is pending clearance and remains uncleared until its settlement date. | `END` | | `HOLD` | Represents the portion of the check amount placed on hold and kept unavailable until the scheduled settlement date. | `BEGINNING` | **About `settlements.type`** * Only **one** `PENDING` is allowed when the `settlements.type` is `END` * Up to **three** `HOLD` are allowed when the `settlements.type` is `BEGINNING` * Only **one** `DEPOSIT` is allowed when the `settlements.type` is `BEGINNING` ## Example 1: `BEGINNING` with check settlement type `DEPOSIT` In this example, the client selects `BEGINNING` as the settlement type, which makes the funds available immediately. The check settlement type `DEPOSIT` indicates that this is an upfront deposit, and the full amount of $2,000 becomes available right away. ```json { "check_id": "c462b2f3-55cc-42b4-ae9a-7614df3e8e72", "check_amount": { "value": 2000, "currency": "USD" }, "description": "Check posting", "settlement_type": "BEGINNING", "business_date": "2025-01-04", "settlements": [ { "type": "DEPOSIT", "tracking_id": "73cc7fa5-79f1-4b85-9e13-124cc58c651f", "settlement_date": "2025-01-04", "amount": 2000 } ] } ``` ## Example 2: `END` with check settlement type `PENDING` In this case, the client selects `END` as the settlement type, meaning the funds remain unavailable until the scheduled settlement date—in this case, `2025-01-05`. `business_date` indicates when the transaction is recorded in the account’s balance‑history timeline. Note that `business_date` is an optional field. If you do not specify a value, the Pismo platform defaults to `current_business_date`. ```json { "check_id": "c462b2f3-55cc-42b4-ae9a-7614df3e8e73", "check_amount": { "value": 2000, "currency": "USD" }, "description": "Check posting", "settlement_type": "END", "business_date": "2025-01-04", "settlements": [ { "type": "PENDING", "tracking_id": "73cc7fa5-79f1-4b85-9e13-124cc58c651f", "settlement_date": "2025-01-05", "amount": 2000 } ] } ``` ## Example 3: `BEGINNING` with a combination of `DEPOSIT` and `HOLD` In this scenario, the client posts the check using the `BEGINNING` settlement type and chooses to make part of the amount available immediately while placing the remainder on hold. In the example, a `DEPOSIT` of `100` becomes available on `2025‑01‑05`, and three separate `HOLD` operations release `800`, `900`, and `200` on `2025‑01‑10`, `2025‑01‑20`, and `2025‑01‑30`, respectively. ```json { "check_id": "c462b2f3-55cc-42b4-ae9a-7614df3e8e72", "check_amount": { "value": 2000, "currency": "USD" }, "description": "Check posting", "settlement_type": "BEGINNING", "business_date": "2025-01-04", "settlements": [ { "type": "DEPOSIT", "tracking_id": "73cc7fa5-79f1-4b85-9e13-124cc58c651f", "settlement_date": "2025-01-05", "amount": 100 }, { "type": "HOLD", "tracking_id": "9d7c898e-dd57-4ab4-bfe3-23a48d56851f", "settlement_date": "2025-01-10", "amount": 800 }, { "type": "HOLD", "tracking_id": "953109dc-e943-454a-95b6-4b15d2c5b31d", "settlement_date": "2025-01-20", "amount": 900 }, { "type": "HOLD", "tracking_id": "cd593acd-a056-42a1-aec8-3ae14d427a4d", "settlement_date": "2025-01-30", "amount": 200 }, ] } ``` # Check release The check release feature is designed to clear or release uncleared checks. It supports both full and partial releases. ## Validation rules Checks must meet the following rules to be successfully settled. Refer to [Release check](https://developers.pismo.io/pismo-docs/reference/post-corporate-v1-checks-release) for details. | Validation item | Rule | | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Check existence | The check must already exist for the specified `check_id`. | | Check status | The check status must be `UNSETTLED`, `UNCLEARED`, or `PARTIALLY_SETTLED`. | | Settlement status | The settlement status must be `UNSETTLED` or `RELEASE_FAILED`. | | Account reason and operation blocks | There are no account status blocks or reason blocks. Note that accounts must be free of account status restrictions and must not be associated with any operational block. | | Tracking ID requires date | When a `tracking_id` is passed, the request must also include a settlement date. | | No tracking ID on full release | Requests without a settlement date, which represent a full release, cannot include a `tracking_id`. If you do not provide a `track_id`, the Pismo platform generates one for you. | | Tracking ID uniqueness | Your `tracking_id` must be unique and cannot already be in use. | | Settlement date match | The `settlement_date` provided must match the settlement date of an existing settlement, and only the settlement associated with that exact date is released. | ## Check release examples ### Full check settlement You specify a `check_id` in the request without a `settlement_date`, the check is released and the fund is moved from `check_holds` to `available`. ```json { "check_id": "c462b2f3-55cc-42b4-ae9a-7614df3e8e72" } ``` ### Specific check settlement If you want to clear only one of the checks you previously submitted, include both `settlement_date` and `tracking_id` in your request so the transaction can be tracked. If you do not provide a `tracking_id`, the Pismo platform generates one automatically. ```json { "check_id": "c462b2f3-55cc-42b4-ae9a-7614df3e8e72", "tracking_id": "1624db2e-ee81-4294-bc5e-c753b2cc5eb9", "settlement_date": "2025-06-30" } ``` # Check cancellation To cancel checks, you pass a `check_id` in the [Cancel check](https://developers.pismo.io/pismo-docs/reference/post-corporate-v1-checks-checkid-cancel) request. **Notes** * You can only cancel unsettled or partially settled checks. * Checks that have been completely settled cannot be canceled. ### Checks canceled successfully This is a sample response payload indicating a successful check cancellation. Note that only `check_id` is returned. ```json { "check_id": "c462b2f3-55cc-42b4-ae9a-7614df3e8e72" } ``` # Bank statements balance impacts Three new balance types are introduced in relation to check posting. | Balance type | When it impacts the balance | Description | | :------------------------- | :-------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `held_funds` | When `settlement_type` is `BEGINNING`, and the `settlements.type` must be `HOLD`. | `held_funds` represents funds that are temporarily restricted due to regulatory or operational requirements. These funds are not available for transactions and reflect the total amount of balances that are earmarked or otherwise restricted. `held_funds` = `earmarked_balance` + `held_checks_balance` + `restricted_funds` | | `uncleared_checks_balance` | When `settlement_type` is `END` | The uncleared check amount remains pending until the specified `settlement_date` to clear. | | `held_checks_balance` | When `settlement_type` is `BEGINNING` | The held check amount increases immediately. If the check is flagged as `HOLD` in `settlements.type`, its amount is added to the `held_checks_balance`. | ## Examples ### Checks with `settlement_type` set to `END` When you deposit a check of $1000 and specify `settlement_type` to `END`, the following balance impacts occur. | Balance Type | Change | | -------------------------- | ------ | | `uncleared_checks_balance` | +$1000 | | `uncleared_funds` | +$1000 | | `ledger_balance` | +$1000 | This occurs because the uncleared amount updates both `uncleared_funds` and `ledger_balance`. The ledger balance reflects all funds, both cleared and uncleared. When the check is settled, the available, book, and value‑dated balances increase, while the uncleared funds and uncleared check balance decrease. ### Checks with `settlement_type` set to `BEGINNING` When you deposit a $1000 check with `settlement_type = BEGINNING` and one hold operation of $400 is applied, several balances update immediately. The held portion affects both ledger, held checks balance and held‑funds balances, while the deposit affects available and the total amount of the check impacts the book, value‑dated, and ledger balances. When the operation is later settled, the Pismo platform releases the held amount into the available balance and reverses the temporary hold entries, leaving other balances unchanged. **Before settlement (post checks with a partial hold)** | Balance type | Change | | --------------------- | ------ | | `available_balance` | +$600 | | `held_checks_balance` | +$400 | | `book_balance` | +$1000 | | `value_dated_balance` | +$1000 | | `ledger_balance` | +$1000 | | `held_funds` | +$400 | **After settlement** | Balance type | Change | | --------------------- | --------- | | `available_balance` | +$400 | | `held_checks_balance` | -$400 | | `book_balance` | no change | | `value_dated_balance` | no change | | `ledger_balance` | no change | | `held_funds` | -$400 | For more details, refer to [Account balance definitions for transaction banking](https://developers.pismo.io/pismo-docs/docs/account-balance-definitions-for-transaction-banking). # Events The following events are generated to indicate success/failure status of check settlements. For details, refer to the [check posting API](https://developers.pismo.io/pismo-docs/reference/corporate-post-v1-checks). * [Platform authorization created](https://developers.pismo.io/events/docs/platform-authorization-platform-authorization-1) * [Check posting status changed](https://developers.pismo.io/events/docs/cash-management-check-status-change-1) * [Check settlement status changed](https://developers.pismo.io/events/docs/cash-management-check-settlement-status-change-1)