---
title: Early funds withdrawal
slug: apis/accounts/time-deposit-apis/withdraw-funds-early-from-a-cd
description: Initiate early withdrawal from a CD via POST /core/v1/dda/accounts/{accountnumber}/time-deposit/early-withdraw, with optional penalty fee waiver.
icon: {"apiMethod":"POST"}
docTags: 
createdAt: 2025-05-07T05:52:38.523Z
---

## Relevant webhooks

For this endpoint be sure you have [registered](docId\:BN5XtgkJogBe-CtwomCbS) for this webhook:

- Core.TimeDeposit.Withdrawn

## API reference

Requests to withdraw the funds from a time deposit (CD) account before the account reaches maturity. Depending on the setting of the waivePenaltyFee attribute, the penalty fee is either waived or not. If the penalty fee for early withdrawal is waived, it is as if the account owner performs a partial withdrawal of funds.
Actual withdrawal of the funds requires a transaction call, which will in turn trigger the Core.TimeDeposit.Withdrawn webhook event.

:::ApiMethodV2
```json
{
  "name": "Endpoint: /core/v1/dda/accounts/{accountNumber}/time-deposit/early-withdraw",
  "method": "POST",
  "url": "https://sandbox.crbcos.com/core/v1/dda/accounts/{accountNumber}/time-deposit/early-withdraw",
  "description": "",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "q0_pOKrlLi1qibbxm5Etl",
        "language": "curl",
        "code": "curl --location 'https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer <token>' \\\n--data '{\n  \"waivePenaltyFee\": true\n}'",
        "customLabel": ""
      },
      {
        "id": "h0pYVjX9_p52iMxD9mZjF",
        "language": "nodejs",
        "code": "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n  'method': 'POST',\n  'hostname': 'sandbox.crbcos.com',\n  'path': '/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw',\n  'headers': {\n    'Content-Type': 'application/json',\n    'Authorization': 'Bearer <token>'\n  },\n  'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n  var chunks = [];\n\n  res.on(\"data\", function (chunk) {\n    chunks.push(chunk);\n  });\n\n  res.on(\"end\", function (chunk) {\n    var body = Buffer.concat(chunks);\n    console.log(body.toString());\n  });\n\n  res.on(\"error\", function (error) {\n    console.error(error);\n  });\n});\n\nvar postData = JSON.stringify({\n  \"waivePenaltyFee\": true\n});\n\nreq.write(postData);\n\nreq.end();",
        "customLabel": ""
      },
      {
        "id": "qtY5KXUCH4H3h6C4CJPBa",
        "language": "python",
        "code": "import http.client\nimport json\n\nconn = http.client.HTTPSConnection(\"sandbox.crbcos.com\")\npayload = json.dumps({\n  \"waivePenaltyFee\": True\n})\nheaders = {\n  'Content-Type': 'application/json',\n  'Authorization': 'Bearer <token>'\n}\nconn.request(\"POST\", \"/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))",
        "customLabel": ""
      },
      {
        "id": "-yoZGwvqQSUck390dHo5c",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = \"application/json\"\nrequest[\"Authorization\"] = \"Bearer <token>\"\nrequest.body = JSON.dump({\n  \"waivePenaltyFee\": true\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      },
      {
        "id": "rQE-n7mlzHZlCzlGtrQUe",
        "language": "go",
        "code": "package main\n\nimport (\n  \"fmt\"\n  \"strings\"\n  \"net/http\"\n  \"io\"\n)\n\nfunc main() {\n\n  url := \"https://sandbox.crbcos.com/core/v1/dda/accounts/190432130358/time-deposit/early-withdraw\"\n  method := \"POST\"\n\n  payload := strings.NewReader(`{`+\"\n\"+`\n  \"waivePenaltyFee\": true`+\"\n\"+`\n}`)\n\n  client := &http.Client {\n  }\n  req, err := http.NewRequest(method, url, payload)\n\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"Authorization\", \"Bearer <token>\")\n\n  res, err := client.Do(req)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  defer res.Body.Close()\n\n  body, err := io.ReadAll(res.Body)\n  if err != nil {\n    fmt.Println(err)\n    return\n  }\n  fmt.Println(string(body))\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "q0_pOKrlLi1qibbxm5Etl"
  },
  "results": {
    "languages": [
      {
        "id": "bFD_epqH3NkyFUMXyexqq",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"timeDeposit\": {\n        \"masterAccountNumber\": \"190432130358\",\n        \"status\": \"EarlyWithdrawal\",\n        \"minFundingAmount\": 50000,\n        \"maxFundingAmount\": 5000000,\n        \"autoClose\": false,\n        \"allowBumpUp\": false,\n        \"waivePenaltyFee\": true,\n        \"fundingDays\": 3,\n        \"gracePeriodDays\": 6,\n        \"currentRate\": 0.0,\n        \"maturityMonths\": 12,\n        \"rates\": [\n            {\n                \"months\": 3,\n                \"rate\": 4.00000\n            },\n            {\n                \"months\": 3,\n                \"rate\": 6.00000\n            },\n            {\n                \"months\": 3,\n                \"rate\": 8.00000\n            },\n            {\n                \"months\": 3,\n                \"rate\": 10.00000\n            }\n        ],\n        \"penalties\": [\n            {\n                \"months\": 6,\n                \"feeDays\": 3\n            },\n            {\n                \"months\": 6,\n                \"feeDays\": 3\n            }\n        ],\n        \"fundingExpDate\": \"2025-07-03T00:00:00-04:00\",\n        \"fundingDate\": \"2025-07-01T00:00:00-04:00\",\n        \"startDate\": \"2025-07-01T00:00:00-04:00\",\n        \"depositAmount\": 1000000,\n        \"depositCurrency\": \"usd\",\n        \"maturityDate\": \"2026-06-30T00:00:00-04:00\",\n        \"earlyWithdrawnAt\": \"2025-07-02T03:21:07.3293384-04:00\",\n        \"rolloverDate\": \"2026-07-03T00:00:00-04:00\",\n        \"createdAt\": \"2025-06-30T03:57:49.4-04:00\",\n        \"productId\": \"be8300b4-1206-4cf9-8800-b30100b7a867\",\n        \"partnerId\": \"cd9c12f4-7691-424a-b38b-af5b0134c611\",\n        \"lastModifiedAt\": \"2025-07-02T03:21:07.3293384-04:00\"\n    },\n    \"penaltyAccountNumber\": \"00000098764\",\n    \"penaltyFeeAmount\": 329\n}"
      }
    ],
    "selectedLanguageId": "bFD_epqH3NkyFUMXyexqq"
  },
  "request": {
    "pathParameters": [
      {
        "name": "accountNumber",
        "kind": "required",
        "type": "string",
        "description": "Account number of the time deposit account",
        "": "Account number of the time deposit account"
      }
    ],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "waivePenaltyFee",
        "kind": "required",
        "type": "Boolean",
        "description": "If true, a request for early withdrawal will be processed without a penalty fee. Otherwise, false.",
        "": "required"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Path Parameter",
    "value": "pathParameters"
  },
  "response": [
    {
      "name": "masterAccountNumber",
      "kind": "optional",
      "type": "string",
      "description": "The account number of the time deposit account"
    },
    {
      "name": "status",
      "kind": "optional",
      "type": "string",
      "description": "Status of the account:\n- Funding\n- Active\n- Matured\n- EarlyWithdrawal\n- Inactive",
      "children": []
    },
    {
      "name": "minFundingAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Minimum dollar amount allowed for the time deposit. If the deposit amount is less than this value the deposit will be rejected.",
      "children": []
    },
    {
      "name": "maxFundingAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Maximum dollar amount allowed for the time deposit. If the deposit amount is more than this value the deposit will be rejected.",
      "children": []
    },
    {
      "name": "autoClose",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the time deposit account automatically closes if not sufficiently funded by the funding expiration date. Otherwise, false.",
      "children": []
    },
    {
      "name": "allowBumpUp",
      "kind": "optional",
      "type": "Boolean",
      "description": "True if the Interest Rates Period tier(s) are enabled, where applicable. Otherwise, false.",
      "children": []
    },
    {
      "name": "waivePenaltyFee",
      "kind": "optional",
      "type": "Boolean",
      "description": "If true, a request for early withdrawal will be processed without a penalty fee. Otherwise, false.",
      "children": []
    },
    {
      "name": "fundingDays",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of days the time deposit will remain active once opened but not yet funded",
      "children": []
    },
    {
      "name": "gracePeriodDays",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of days the customer has to withdraw the time deposit once it reaches maturity. If no action is taken during this time then the time deposit will automatically renew for the same term at the rate currently being offered for the term.",
      "children": []
    },
    {
      "name": "currentRate",
      "kind": "optional",
      "type": "Number",
      "description": "The current rate of interest being earned by the account",
      "children": []
    },
    {
      "name": "maturityMonths",
      "kind": "optional",
      "type": "Integer",
      "description": "Number of months until the time deposit reaches maturity",
      "children": []
    },
    {
      "name": "rates",
      "kind": "optional",
      "type": "Object",
      "description": "Interest rate details",
      "children": [
        {
          "name": "months",
          "kind": "optional",
          "type": "Integer",
          "description": "Defines the number of months the given rate is valid"
        },
        {
          "name": "rate",
          "kind": "optional",
          "type": "number",
          "description": "Interest rate of the CD"
        }
      ]
    },
    {
      "name": "penalties",
      "kind": "optional",
      "type": "Object",
      "description": "Details of the penalty your customer pays for early withdrawal",
      "children": [
        {
          "name": "months",
          "kind": "optional",
          "type": "Integer",
          "description": "Early withdrawal within this number of months results in a penalty. Cross River works with you to configure this number for the CD product."
        },
        {
          "name": "feeDays",
          "kind": "optional",
          "type": "Integer",
          "description": "How many days of simple interest to assess"
        }
      ]
    },
    {
      "name": "fundingExpDate",
      "kind": "optional",
      "type": "string",
      "description": "Based on the product configuration, the date by which the account must be funded. if it isn't funded, it's deactivated. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "fundingDate",
      "kind": "optional",
      "type": "string",
      "description": "Date account is funded. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "startDate",
      "kind": "optional",
      "type": "string",
      "description": "Date the account starts accruing interest. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "depositAmount",
      "kind": "optional",
      "type": "Integer",
      "description": "Amount deposited to fund the account",
      "children": []
    },
    {
      "name": "depositCurrency",
      "kind": "optional",
      "type": "string",
      "description": "Currency used for the deposit",
      "children": []
    },
    {
      "name": "maturityDate",
      "kind": "optional",
      "type": "string",
      "description": "Calendar date when the account can be withdrawn. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "earlyWithdrawnAt",
      "kind": "optional",
      "type": "string",
      "description": "Date of early withdrawal. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "rolloverDate",
      "kind": "optional",
      "type": "string",
      "description": "Date the time deposit account rolls over (and withdrawal without penalty no longer possible). In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "createdAt",
      "kind": "optional",
      "type": "string",
      "description": "Account created. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    },
    {
      "name": "productId",
      "kind": "optional",
      "type": "string",
      "description": "ID in GUID format of your specific product type on which the account is based. Provided by Cross River.\n\nIn this case, your configured time deposit product.",
      "children": []
    },
    {
      "name": "partnerId",
      "kind": "optional",
      "type": "string",
      "description": "Your unique ID in the Cross River system. This ID is in GUID format.",
      "children": []
    },
    {
      "name": "lastModifiedAt",
      "kind": "optional",
      "type": "string",
      "description": "Internal Cross River value. Date and time the database entry was last modified. In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]",
      "children": []
    }
  ],
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "endpoint-corev1ddaaccountsaccountnumbertime-deposi",
  "legacyHash": "Mh5k4AKIQzo25ZxpkQJ_Q"
}
```
:::

