How to withdraw funds early from a time deposit account (CD)

In this tutorial, you'll learn how to

Request early withdrawal

Determine how much to withdraw from the account after the penalty fee is deducted

Note

If you are new to account management we recommend you read the account management overview before starting this tutorial

The tutorial assumes you have a knowledge of APIs and how they work. For more information on sending API calls, see the API overview page.

The tutorial uses these API endpoints

API

Description

POST /v1/dda/accounts/{accountNumber}/time-deposit/early-withdraw

This endpoint requests early withdrawal from a time deposit account

GET /core/v1/accounts/{accountNumber}

This endpoint queries a specific account for information about it

The tutorial uses these webhooks.

Webhook

Description

Core.TimeDeposit.Withdrawn

Shows information about the account the early withdrawal request was made to

Before you begin

Make sure you have:

  • API credentials

  • Account number

1. Register the relevant webhook events

To receive the webhook events for this tutorial both partner accounts need to register each specific webhook event type. Once you are registered, the event objects are sent to the registered URLs.

The event object contains a list of resource identifiers used to download details on each event.

2. Request early withdrawal of funds from a time deposit account

Before an account holder can actually withdraw funds from a time account that hasn't reached maturity, you have to make a request (for the account holder) to make that early withdrawal. In the request you also indicate if the withdrawal will trigger a penalty fee or not. CR charges a penalty fee for early withdrawal, although in some cases it can be waived. For example, Cross River time deposit accounts have no provisions for partial withdrawals. However, in certain circumstances, an account holder can be allowed to make an early withdrawal of the money in the account without penalty, which is similar to a partial withdrawal.

Note that a request for early withdrawal does not remove funds from the account. That is a separate call.

In this tutorial, you will request an early withdrawal with a penalty fee.

a. To request early withdrawal

  1. Call POST /v1/dda/accounts/{accountNumber}/time-deposit/early-withdraw. For this call, some/all attributes are required. A full list of attributes is found here.

    Set the waivePenaltyFee attribute to false

    Copy
    Requesting early withdrawal
    ): https://sandbox.crbcos.com/core/v1/dda/accounts/2434508988/time-deposit/early-withdraw
    {
      "waivePenaltyFee": false
    }

  2. A successful API call returns a JSON response with the details of account, including the total funds to be withdrawn and the amount of penalty fee charged. In our example, the total deposit amount is 1,000,000.00. The penalty fee amount is 4,109.59.

  3. Copy
    Sample early withdrawal response
    {
      "timeDeposit": {
        "masterAccountNumber": "2434508988",
        "status": "EarlyWithdrawal",
        "minFundingAmount": 50000000,
        "maxFundingAmount": 1000000000,
        "autoClose": true,
        "allowBumpUp": true,
        "waivePenaltyFee": false,
        "fundingDays": 2,
        "gracePeriodDays": 2,
        "currentRate": 0,
        "maturityMonths": 12,
        "rates": [
          {
            "months": 6,
            "rate": 5
          },
          {
            "months": 6,
            "rate": 2.5
          }
        ],
        "penalties": [
          {
            "months": 3,
            "feeDays": 30
          },
          {
            "months": 9,
            "feeDays": 90
          }
        ],
        "fundingExpDate": "2023-01-17T00:00:00-05:00",
        "fundingDate": "2023-01-12T00:00:00-05:00",
        "startDate": "2023-01-12T00:00:00-05:00",
        "depositAmount": 100000000,
        "depositCurrency": "usd",
        "maturityDate": "2024-01-11T00:00:00-05:00",
        "earlyWithdrawnAt": "2023-03-08T09:57:00.005123-05:00",
        "rolloverDate": "2024-01-16T00:00:00-05:00",
        "createdAt": "2023-01-12T16:45:45.96-05:00",
        "productId": "3c4e1c34-3544-4236-93a5-af110157167c",
        "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
        "lastModifiedAt": "2023-03-08T09:57:00.0208451-05:00"
      },
      "penaltyAccountNumber": "20020020028",
      "penaltyFeeAmount": 410959
    }

b. To see the amount available for withdrawal

  1. Call GET /core/v1/accounts/{accountNumber} to see the balance that remains in the account after deducting the penalty. This is the sum you will withdraw. You must transfer the entire amount. Transfer the funds as you would any money transfer.

  2. Withdrawal of the funds triggers the Core.TimeDeposit.Withdrawn webhook event.

    Copy

    Sample Core.TimeDeposit.Withdrawn event

    {
      "id": "90cef2a8-f3e1-41ff-9394-afbf00f8a406",
      "eventName": "Core.TimeDeposit.Withdrawn",
      "status": "Pending",
      "partnerId": "1e5d3f04-ae24-4af6-9e30-aecf012b99dd",
      "createdAt": "2023-03-08T10:05:16.423-05:00",
      "resources": [
        "core/v1/dda/accounts/2434508988/time-deposit"
      ],
      "details": [
        {
          "masterAccountNumber": "2434508988",
          "status": "EarlyWithdrawal",
          "depositAmount": "100023362",
          "maturityDate": "3/14/2023",
          "rolloverDate": "3/19/2023",
          "currentRate": "0.0"
        }
      ]
    }