---
updatedAt: 2026-04-20T19:56:08.000Z
agentTools:
  siteIndex: https://developers.pismo.io/llms.txt
  projectIndex: https://developers.pismo.io/pismo-docs/llms.txt
---

# Release restriction

Releases all or part of the funds from an existing restriction by restricted funds ID.

NOTE:
- This endpoint requires an account token - an access token encoded with an external account ID. Tokens can expire quickly, which can result in a `401 Unauthorized` message.
This endpoint generates the following events:
- [Platform authorization created](https://developers.pismo.io/events/docs/platform-authorization-platform-authorization-1)
- [Account balance changed](https://developers.pismo.io/events/docs/availables-change-available-1)
- [Restricted Funds created or released](https://developers.pismo.io/events/docs/corporate-restricted-funds-1)
- [Account balance changed](https://developers.pismo.io/events/docs/account-balances-balance-change-1)

See [Data and reporting](doc:data-reporting-overview) for more information on events and setting up event notifications.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Banking - Transaction banking",
    "version": "0.9.0",
    "description": "Transaction banking API",
    "contact": {
      "name": "API Support",
      "url": "https://developers.pismo.io/support/"
    },
    "license": {
      "name": "Copyright Pismo"
    }
  },
  "servers": [
    {
      "url": "https://sandbox.pismolabs.io",
      "description": "Sandbox API server for testing"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Restricted funds",
      "description": "Restricted funds endpoints"
    }
  ],
  "components": {
    "parameters": {
      "RestrictedFundsIDPath": {
        "name": "restrictedFundsId",
        "in": "path",
        "description": "Restricted funds ID",
        "schema": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._-]+$",
          "maxLength": 60
        },
        "example": "e4adf199-c925-4d11-b002-c5bfd5679030",
        "required": true
      }
    },
    "schemas": {
      "ErrorCode": {
        "description": "Error code\n`minLength: 1`\n`maxLength: 12`\n",
        "type": "string",
        "minLength": 1,
        "maxLength": 12,
        "example": "WPMT0017"
      },
      "ErrorMessage": {
        "description": "Error message\n`minLength: 1`\n`maxLength: 1000`\n",
        "type": "string",
        "minLength": 1,
        "maxLength": 1000,
        "example": "Invalid JSON payload received: Error unmarshalling request"
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ErrorCode"
          },
          "message": {
            "$ref": "#/components/schemas/ErrorMessage"
          }
        }
      },
      "Metadata": {
        "type": "object",
        "description": "Key-value pairs that contain data intended for storage on the Pismo platform.<br>\n\n**Note**: The `metadata` field includes a `corporate_metadata` object with the following attributes:\n\n  * `credit_external_account_id`: present when supplied in the credit leg.\n\n  * `debit_external_account_id`: present when supplied in the debit leg.\n\n  * `earmark_id`: present when supplied in the debit leg.\n\n  The `corporate_metadata` attribute must be an object. A type mismatch results in an error as described in the responses section.<br>\n\n**Note**: This field must not be used to send Personally Identifiable Information (PII), Payment Card Industry (PCI) data, or any sensitive/regulated information. Metadata fields are intended for operational, non-sensitive data only. For sensitive data, use the specific parameters designed for that purpose. For more information, refer to [Get started with Pismo APIs](https://developers.pismo.io/pismo-docs/reference/get-started-with-pismo-apis#metadata).\n",
        "example": {
          "my-id": 2932
        }
      },
      "RestrictedFundsAppliedAmount": {
        "type": "number",
        "format": "float",
        "description": "Amount actually executed by the operation at the time it was applied\n\nDepending on the `hold_method`, this value might be different from `requested_amount`.\n\nHold method:\n  * `STRICT` holds require the full requested amount. If that amount cannot be held, the operation fails.\n  * `FLEXIBLE` might apply only the available portion\n\nType:\n  - For `RESTRICT_FUNDS`, it is the portion of the requested amount that was successfully held.\n  - For `RELEASE_FUNDS`, it is the portion that was actually released back to the available balance.\n  - For `EXECUTE_FUNDS`, it is the portion of the held funds that was actually debited from the restricted amount.\n",
        "minimum": 0,
        "multipleOf": 0.0001,
        "maximum": 100000000000000000,
        "example": 800.22
      },
      "RestrictedFundsAmount": {
        "type": "number",
        "format": "float",
        "description": "Amount requested by the operation\n\nThe final applied amount might vary (refer to `applied_amount`) based on execution rules and the available balance at the time of execution.<br>\n\n**Note**:\n  * For `RESTRICT_FUNDS`, this is the amount to be held.\n  * For `RELEASE_FUNDS`, this is the amount to be released.\n  * For `EXECUTE_FUNDS`, this is the amount to be debited from the held funds.\n  * Precision follows the currency's minor units. For example:\n    * Two decimals (USD, EUR): values use increments of 0.01\n    * Three decimals (BHD, JOD, KWD, OMR, TND): values use increments of 0.001\n    * Four‑decimal (CLF): values use increments of 0.0001\n",
        "minimum": 0.0001,
        "maximum": 100000000000000000
      },
      "RestrictedFundsRequestedAmount": {
        "type": "number",
        "format": "float",
        "description": "Amount originally requested at the time the restriction was created; remains unchanged after the initial request.",
        "minimum": 0.0001,
        "maximum": 100000000000000000
      },
      "RestrictedFundsHoldMethod": {
        "type": "string",
        "description": "Determines how the Pismo platform processes the restriction request in relation to the available balance at the time of execution.\n\nNotes:\n  - `STRICT` applies the full requested amount or fails (no partial holds).\n  - `FLEXIBLE` can apply only the available portion, resulting in a partial hold.\n  - `RECURRENT` behaves like `FLEXIBLE` at creation time. After creation, the restriction automatically applies to each incoming credit, re-restricting funds whenever a credit is posted, until the restriction reaches its target amount or `increase_datetime_limit` is reached.",
        "enum": [
          "STRICT",
          "FLEXIBLE",
          "RECURRENT"
        ],
        "default": "STRICT",
        "example": "STRICT"
      },
      "RestrictedFundsHeldAmount": {
        "description": "Amount held by restriction",
        "type": "number",
        "format": "float",
        "minimum": 0,
        "maximum": 100000000000000000
      },
      "RestrictedFundsID": {
        "type": "string",
        "description": "Restricted funds ID. Only accepts letters, digits, periods, underscores and hyphens.\n`maxLength: 60`",
        "pattern": "^[A-Za-z0-9._-]+$",
        "maxLength": 60,
        "example": "e4adf199-c925-4d11-b002-c5bfd5679030"
      },
      "RestrictedFundsMainMetadata": {
        "type": "object",
        "description": "Key-value pairs containing data intended for storage in the Pismo system.<br>\n\nThis metadata applies when you don't send metadata for the restricted‑funds operation. It covers cases such as automatic recurrent operations or held‑funds expiration.\n\n**Note**: This field must not be used to send Personally Identifiable Information (PII), Payment Card Industry (PCI) data, or any sensitive/regulated information. Metadata fields are intended for operational, non-sensitive data only. For sensitive data, use the specific parameters designed for that purpose. For more information, refer to [Get started with Pismo APIs](https://developers.pismo.io/pismo-docs/reference/get-started-with-pismo-apis#metadata).\n"
      },
      "RestrictedFundsType": {
        "type": "string",
        "description": "The type/nature of the restriction.\n\nNotes:\n  - `REGULATORY`: Restriction created for regulatory or operational reasons\n  - `JUDICIAL`: Restriction created to comply with a judicial order",
        "enum": [
          "REGULATORY",
          "JUDICIAL"
        ],
        "default": "REGULATORY",
        "example": "REGULATORY"
      },
      "RestrictedFundsIncreaseDatetimeLimit": {
        "type": "string",
        "format": "date-time",
        "description": "The date and time limit, in RFC 3339 format, up to which a `RECURRENT` restriction continues applying to incoming credits on the account.\n\nNotes:\n  - Only accepted on creation when `hold_method` is `RECURRENT`\n  - Must not be in the past",
        "example": "2026-12-31T23:59:59Z"
      },
      "RestrictedFundsReleaseRequest": {
        "description": "Create funds restriction request body",
        "type": "object",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/RestrictedFundsAmount"
          },
          "operation": {
            "$ref": "#/components/schemas/RestrictedFundsRequestOperation"
          },
          "soft_descriptor": {
            "$ref": "#/components/schemas/RestrictedFundsSoftDescriptor"
          }
        },
        "required": [
          "amount",
          "operation"
        ]
      },
      "RestrictedFunds": {
        "type": "object",
        "properties": {
          "restricted_funds_id": {
            "$ref": "#/components/schemas/RestrictedFundsID"
          },
          "hold_method": {
            "$ref": "#/components/schemas/RestrictedFundsHoldMethod"
          },
          "requested_amount": {
            "$ref": "#/components/schemas/RestrictedFundsRequestedAmount"
          },
          "held_amount": {
            "$ref": "#/components/schemas/RestrictedFundsHeldAmount"
          },
          "created_at": {
            "$ref": "#/components/schemas/RestrictedFundsCreatedAt"
          },
          "soft_descriptor": {
            "$ref": "#/components/schemas/RestrictedFundsSoftDescriptor"
          },
          "operations": {
            "$ref": "#/components/schemas/RestrictedFundsOperations"
          },
          "type": {
            "$ref": "#/components/schemas/RestrictedFundsType"
          },
          "metadata": {
            "$ref": "#/components/schemas/RestrictedFundsMainMetadata"
          },
          "increase_datetime_limit": {
            "$ref": "#/components/schemas/RestrictedFundsIncreaseDatetimeLimit"
          }
        },
        "required": [
          "restricted_funds_id",
          "hold_method",
          "requested_amount",
          "held_amount",
          "created_at"
        ]
      },
      "RestrictedFundsCreatedAt": {
        "type": "string",
        "format": "date-time",
        "minLength": 1,
        "maxLength": 30,
        "description": "Date and time when the restriction was created, displayed in ISO 8601 format.<br>\n`minLength: 1`\n`maxLength: 30`\n",
        "example": "2023-04-27T12:01:24Z"
      },
      "RestrictedFundsAppliedAt": {
        "type": "string",
        "format": "date-time",
        "minLength": 1,
        "maxLength": 30,
        "description": "Date and time when the financial operation was actually executed, displayed in ISO 8601 format.<br>\n`minLength: 1`\n`maxLength: 30`\n",
        "example": "2023-04-27T12:01:24Z"
      },
      "RestrictedFundsOperationType": {
        "type": "string",
        "description": "Represents the kind of financial operation being performed.\nIndicates whether the operation increased a funds restriction, released funds, or executed (debited) held funds.\n",
        "enum": [
          "RESTRICT_FUNDS",
          "RELEASE_FUNDS",
          "EXECUTE_FUNDS"
        ],
        "example": "RELEASE_FUNDS"
      },
      "RestrictedFundsOperation": {
        "type": "object",
        "properties": {
          "tracking_id": {
            "$ref": "#/components/schemas/TrackingID"
          },
          "type": {
            "$ref": "#/components/schemas/RestrictedFundsOperationType"
          },
          "status": {
            "$ref": "#/components/schemas/RestrictedFundsOperationStatus"
          },
          "processing_code": {
            "$ref": "#/components/schemas/RestrictedFundsProcessingCode"
          },
          "requested_amount": {
            "$ref": "#/components/schemas/RestrictedFundsAmount"
          },
          "applied_amount": {
            "$ref": "#/components/schemas/RestrictedFundsAppliedAmount"
          },
          "created_at": {
            "$ref": "#/components/schemas/RestrictedFundsCreatedAt"
          },
          "soft_descriptor": {
            "$ref": "#/components/schemas/RestrictedFundsSoftDescriptor"
          },
          "applied_at": {
            "$ref": "#/components/schemas/RestrictedFundsAppliedAt"
          },
          "metadata": {
            "$ref": "#/components/schemas/Metadata"
          }
        },
        "required": [
          "tracking_id",
          "type",
          "status",
          "processing_code",
          "requested_amount",
          "applied_amount",
          "created_at"
        ]
      },
      "RestrictedFundsOperations": {
        "type": "array",
        "description": "List of operations performed to restrict or release funds",
        "items": {
          "$ref": "#/components/schemas/RestrictedFundsOperation"
        }
      },
      "RestrictedFundsProcessingCode": {
        "type": "string",
        "description": "Processing code used to create the underlying transaction. Each operation type uses a default processing code.<br>\n`minLength: 1`\n`maxLength: 6`\n",
        "minLength": 1,
        "maxLength": 6,
        "example": "PSM045"
      },
      "RestrictedFundsRequestOperation": {
        "description": "Represents the data of the hold or release transaction.",
        "type": "object",
        "properties": {
          "tracking_id": {
            "$ref": "#/components/schemas/TrackingID"
          },
          "soft_descriptor": {
            "$ref": "#/components/schemas/RestrictedFundsSoftDescriptor"
          },
          "metadata": {
            "$ref": "#/components/schemas/Metadata"
          }
        },
        "required": [
          "tracking_id"
        ]
      },
      "RestrictedFundsSoftDescriptor": {
        "type": "string",
        "description": "Brief description that helps identify a restriction",
        "example": "FDIC 12 C.F.R. § 360.9",
        "maxLength": 100,
        "minLength": 0
      },
      "RestrictedFundsOperationStatus": {
        "type": "string",
        "description": "Indicates the operation’s current execution state\n",
        "enum": [
          "PROCESSING",
          "SUCCEEDED",
          "FAILED",
          "TIMED_OUT"
        ],
        "example": "SUCCEEDED"
      },
      "TrackingID": {
        "type": "string",
        "description": "A unique payment tracking number provided by the client. If an existing `tracking_id` is found on the Pismo platform, the API returns a `409` error.\n\nThis field is:\n  * Unique within the organization\n  * Immutable: It can't be updated\n  * Not recyclable: You can't reuse a `tracking_id`\n",
        "minLength": 1,
        "maxLength": 43,
        "example": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244"
      }
    },
    "responses": {
      "500InternalServer": {
        "description": "Internal Server Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "examples": {
              "Generic internal error": {
                "value": {
                  "code": "ECMN9999",
                  "message": "Internal error"
                }
              }
            }
          }
        }
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "paths": {
    "/corporate/v1/restricted-funds/{restrictedFundsId}": {
      "patch": {
        "summary": "Release restriction",
        "description": "Releases all or part of the funds from an existing restriction by restricted funds ID.\n\nNOTE:\n- This endpoint requires an account token - an access token encoded with an external account ID. Tokens can expire quickly, which can result in a `401 Unauthorized` message.\nThis endpoint generates the following events:\n- [Platform authorization created](https://developers.pismo.io/events/docs/platform-authorization-platform-authorization-1)\n- [Account balance changed](https://developers.pismo.io/events/docs/availables-change-available-1)\n- [Restricted Funds created or released](https://developers.pismo.io/events/docs/corporate-restricted-funds-1)\n- [Account balance changed](https://developers.pismo.io/events/docs/account-balances-balance-change-1)\n\nSee [Data and reporting](https://developers.pismo.io/pismo-docs/docs/data-reporting-overview) for more information on events and setting up event notifications.",
        "operationId": "patch-corporate-v1-restricted-funds",
        "tags": [
          "Restricted funds"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/RestrictedFundsIDPath"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RestrictedFundsReleaseRequest"
              },
              "example": {
                "amount": 100.21,
                "operation": {
                  "tracking_id": "9d15bfd1-5db9-4e96-b846-8d8707454430",
                  "soft_descriptor": "Funds restriction requested by FDIC 12 C.F.R. 360.9",
                  "metadata": {
                    "key": "value"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestrictedFunds"
                },
                "example": {
                  "restricted_funds_id": "4a4060d5-3649-46e8-8d64-93949b212918",
                  "hold_method": "FLEXIBLE",
                  "requested_amount": 100.21,
                  "held_amount": 99.9,
                  "created_at": "2025-05-29T11:33:22Z",
                  "operations": [
                    {
                      "tracking_id": "9d15bfd1-5db9-4e96-b846-8d8707454430",
                      "type": "RESTRICT_FUNDS",
                      "status": "SUCCEEDED",
                      "processing_code": "PSM045",
                      "soft_descriptor": "Funds restriction requested by FDIC 12 C.F.R. 360.9",
                      "requested_amount": 100.21,
                      "applied_amount": 99.9,
                      "created_at": "2025-05-29T11:33:22Z",
                      "applied_at": "2025-05-29T11:33:52Z",
                      "metadata": {
                        "key": "value"
                      }
                    },
                    {
                      "tracking_id": "4c9b7b9f-7959-40dc-9cf4-0019c1f12c7f",
                      "type": "RELEASE_FUNDS",
                      "status": "SUCCEEDED",
                      "processing_code": "PSM047",
                      "requested_amount": 99.9,
                      "applied_amount": 99.9,
                      "created_at": "2025-05-29T12:14:12Z",
                      "applied_at": "2025-05-29T12:14:22Z",
                      "metadata": {
                        "key": "value"
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Invalid JSON": {
                    "value": {
                      "code": "WRFO0001",
                      "message": "Invalid JSON payload received: Error unmarshalling request"
                    }
                  },
                  "Amount exceeds the held amount": {
                    "value": {
                      "code": "WRFO0008",
                      "message": "Release amount exceeds the currently held amount"
                    }
                  },
                  "Invalid decimal places": {
                    "value": {
                      "code": "WRFO0009",
                      "message": "The number of decimal places is not compatible with the specified currency"
                    }
                  },
                  "Operation Blocked": {
                    "value": {
                      "code": "WOBK0007",
                      "message": "Operations blocked for account"
                    }
                  },
                  "Invalid account status": {
                    "value": {
                      "code": "WRFO0011",
                      "message": "Invalid account status"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Tracking ID already exist": {
                    "value": {
                      "code": "WRFO0005",
                      "message": "tracking_id is already in use"
                    }
                  },
                  "Version conflict": {
                    "value": {
                      "code": "WRFO0019",
                      "message": "Restricted funds was concurrently modified"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Account locked": {
                    "value": {
                      "code": "WRFO0003",
                      "message": "Account is locked"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/500InternalServer"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    }
  }
}
```