# Accept COD and manual bank transfer

> Let customers pay cash on delivery or transfer to your bank account, then approve each order in BCL once the money is in.
>
> Source: https://docs.bcl.my/cod-manual-transfer/

With the **COD & Manual Transfer** add-on, your payment forms can offer **Cash on Delivery (COD)** and **Manual Bank Transfer** next to online payments. These orders stay pending until you confirm that the money arrived.

## Before you start

Subscribe to the **COD & Manual Transfer** add-on from **Add-ons** → **Available Add-ons**. The **Package Niaga** and **Package Niaga Pro** bundles include it too. Without the add-on, the bank account fields are locked and the two payment methods do not appear in your forms.

## Add your bank accounts

Manual transfer needs at least one bank account for customers to pay into. COD does not. To add a bank account:

1. Go to **Platform Setup** → **Payment** and open the **Bank Accounts** tab.

   *(Screenshot: The Payment Settings page with the Bank Accounts tab highlighted)*

2. Click **Add Bank Account** and choose the **Bank**. Then fill in **Account Number** and **Account Name**. You can add up to 3 accounts.

   *(Screenshot: A new bank account with the Bank, Account Number and Account Name fields highlighted)*

3. Click **Save Bank Accounts**.

## Turn it on in your form

Each form chooses its own payment methods:

1. Go to **Payments** → **Forms** and click **Edit** on your form. Then open the **Payment Details** tab.
2. In **Payment Option**, add **Cash on Delivery (COD)**, **Manual Bank Transfer** or both.

   *(Screenshot: The Payment Option field with FPX and Cash on Delivery (COD) selected)*

3. Click **Update Form**.

Customers who choose manual transfer must choose the bank account they paid into. They must also upload their receipt before they can submit. If you have not added a bank account, they see **Bank Transfer Not Available** instead.

## Add a COD charge (optional)

To charge extra only on COD orders, use a shipping option:

1. Go to **Platform Setup** → **Shipping & Rates** and click **Add Shipping Option**.
2. Fill in a **Shipping Name**, such as COD, and a **Fixed Charge (RM)**. Then click **Save Shipping Configuration**. The **Free**, **Tiers** and **Rules** buttons work only after you save the option.

   *(Screenshot: A COD shipping option with a fixed charge of RM 10 and the Save Shipping Configuration button highlighted)*

3. Click **Rules** on that row and choose **Cash on Delivery (COD)** in **Payment Channels**. Then click **Save Restrictions**.

   *(Screenshot: The Shipping Restrictions panel with Cash on Delivery (COD) chosen in Payment Channels)*

4. In your form, open the **Form Configuration** tab. Under **Shipping & Delivery**, turn on **Enable Shipping Rate**. Leave **Available Shipping Methods** empty to offer every active option, or choose the COD option. Click **Update Form**.

   *(Screenshot: The Shipping & Delivery section of a form with Enable Shipping Rate highlighted)*

The option then appears under **Shipping Area** on your form only when the customer chooses **Cash on Delivery (COD)**. BCL then adds the charge of the option to the total.

## Approve a paid order

Once you receive the cash or see the transfer in your bank:

1. Go to **Transactions** and find the order. It shows **Pending Payment**.
2. Click the ⋮ menu on its row, then **Update Status**.

   *(Screenshot: The ⋮ menu of a COD order with Update Status highlighted)*

3. Check the payment details and delivery address. For manual transfers, you can view the customer's receipt here.
4. Under **Mark as Successful**, click **Approve**, then **OK** to confirm. BCL emails the customer a success notice.

   *(Screenshot: The Update Transaction Status panel with the Approve button highlighted)*

To approve many orders at once, tick them and click **Bulk actions**. Choose **Mark As Successful** and click **Confirm**. Only COD and manual transfer orders change.

## COD orders in your dashboard and ad tracking

A COD order is placed today but paid only when the parcel reaches the customer. BCL keeps the payment status and your ad tracking apart. So you can wait for delivery before you approve the order.

These are the statuses a COD or manual transfer order goes through:

| Status | When to use it | On the dashboard |
| --- | --- | --- |
| **Pending Payment** | The order is placed, but you have not confirmed the payment yet. | Not counted. Find it in **Transactions** under the **Pending** tab. |
| **Successful** | You received the cash or the transfer. Approve the order then. For COD, this is usually after the parcel is delivered. | Counted in the sales totals and chart, on the day the order was placed. |
| **Completed** | An optional final step for an order that you finished. Click **Complete** under **Mark as Completed** in **Update Status**, or use **Mark As Completed** in **Bulk actions**. BCL sends no email. | Counted, the same as Successful. |
| **Cancelled** | The customer refused the parcel or never paid. | Shown under **Cancelled**, not in sales. |

BCL tells your ad platforms about a COD order at a different time from the dashboard. BCL sends one Purchase per order to each platform. So when you approve the order later, the platform never counts it twice:

| Platform | When BCL sends the purchase for a COD order |
| --- | --- |
| **Meta (Facebook)** and **TikTok** | With **Trigger Purchase Event on Pending** on (the form's **Facebook Pixel** or **TikTok Pixel** tab), when the order is placed. With the switch off, when you approve the order. This works only if you added the Conversions API (Meta) or Events API (TikTok) token. The pixel on the receipt page cannot fire after the customer left. |
| **Google Ads** | When the order is placed, always. There is no switch. |
| **Google Analytics** | When you approve the order. |

To turn the switch on for Meta, see [Add a Meta (Facebook) pixel to a form](/facebook-pixel/). For TikTok, see [Count COD and bank transfer orders](/tiktok-pixel/#count-cod-and-bank-transfer-orders).

To check what BCL sent, go to **Tools** → **Marketing Logs**. A row for the order means BCL sent the purchase to that platform. See [Check purchases sent to your pixels](/marketing-pixel-logs/).

> **Tip**
> **Check Marketing Logs before Meta Events Manager.** Meta shows events later, not in real time. So a purchase can be in BCL's log for a while before it appears in Events Manager.

## Common issues

### Can I charge a fixed RM10 only for COD orders?

Yes. In Platform Setup → Shipping & Rates, add a shipping option named COD with a Fixed Charge (RM) of 10 and save it. Then click Rules on that row, choose Cash on Delivery (COD) in Payment Channels and click Save Restrictions. Do not use the additional fee. It is a percentage and applies to every payment method.

### Can I hide COD for customers in Sabah and Sarawak?

Yes. On Shipping & Rates, open the Channel Restrictions tab and click Add Channel Restriction. Choose Cash on Delivery (COD) in Payment Channel and set Mode to Hide In. Choose Sabah and Sarawak in States (Malaysia) and click Save Channel Restrictions.

### Why is a COD order still pending after the customer paid?

BCL cannot see cash or bank transfers. Find the order in Transactions and open the ⋮ menu on its row. Click Update Status, then click Approve under Mark as Successful.

### Why is my COD order not on the dashboard?

The dashboard counts only successful and completed payments. A COD order stays Pending Payment until you approve it. So it is in Transactions under the Pending tab but not in the dashboard totals. After you approve the order, the dashboard counts it on the day the order was placed.

### My COD order did not show as a Purchase in Meta. Why?

First go to Tools → Marketing Logs and look for the order on the Facebook tab. A row there means BCL sent the Purchase. Meta Events Manager often shows it later, not in real time. No row means BCL did not send anything yet. To send the Purchase when the order is placed, turn on Trigger Purchase Event on Pending on the form's Facebook Pixel tab.
