> For the complete documentation index, see [llms.txt](https://docs.doku.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.doku.com/subscription-and-billing/flexibill/account-billing/manage-recurring.md).

# Manage Recurring

{% hint style="info" %}
This page covers the **Account Billing** dashboard — available under **FlexiBill → Account Billing** in the DOKU Dashboard. These features apply to the **DOKU Hosted Scheduler** model only.
{% endhint %}

The Account Billing dashboard is the operational hub for managing all registered recurring bills and viewing the registration log. It consists of two tabs: **Manage Recurring** for active bill management and **Register Report** for the registration history.

Navigate to: **DOKU Dashboard → FlexiBill → Account Billing**

***

## Manage Recurring

The Manage Recurring tab displays all recurring bills registered under the merchant account. Each record represents one billing configuration registered for a customer — created when the customer completed their First Payment and card tokenization via the DOKU Hosted Scheduler flow.

<figure><img src="/files/U3vSqbXUOAxEuNWrL6aN" alt=""><figcaption></figcaption></figure>

### Data Model

A single customer can have **multiple Billing Numbers**. Each Billing Number is an independent bill with its own amount, schedule configuration, and payment source. Customer-level actions affect the customer and all their bills simultaneously; bill-level actions affect only that one specific bill.

```
Customer (Arief — arief@email.com)
├── Bill SUB26000063 → Card ****9195 → IDR 3,330 — Active
├── Bill SUB26000064 → Card ****4805 → IDR 5,000 — Active
└── Bill SUB26000065 → Card ****9195 → IDR 8,750 — Inactive
```

The customer panel on the right side of each card reflects this:

<table><thead><tr><th width="219.1796875">Field</th><th>Description</th></tr></thead><tbody><tr><td><strong>Total Bill</strong></td><td>Total number of Billing Numbers registered under this customer</td></tr><tr><td><strong>Total Source of Funds</strong></td><td>Total number of distinct payment methods (tokens) registered across all this customer's bills</td></tr></tbody></table>

***

### Search and Filter

<table><thead><tr><th width="172.984375">Control</th><th>Description</th></tr></thead><tbody><tr><td><strong>Search by</strong></td><td>Select the search field type from the dropdown — default is Billing Number</td></tr><tr><td><strong>Search input</strong></td><td>Enter the search value and click <strong>Search</strong></td></tr><tr><td><strong>Select bill status</strong></td><td>Filter the list by billing status — Active or Inactive</td></tr><tr><td><strong>Filter</strong></td><td>Apply additional filters to narrow the result set</td></tr><tr><td><strong>Reset All</strong></td><td>Clear all active filters and return to the full list</td></tr></tbody></table>

Active filter tags are shown below the search bar as removable chips. The result count is displayed below the filter row.

***

#### Record Card

Each billing record is displayed as a card containing:

<table><thead><tr><th width="182.40234375">Element</th><th>Description</th></tr></thead><tbody><tr><td><strong>Billing Number</strong></td><td>Unique identifier for this bill — e.g., <code>SUB26000063</code></td></tr><tr><td><strong>Status badge</strong></td><td>Current billing status: <strong>Active</strong> (green) or <strong>Inactive</strong> (orange)</td></tr><tr><td><strong>Date range</strong></td><td>Billing schedule period — start date until end date</td></tr><tr><td><strong>Description</strong></td><td>Service or product name associated with this bill</td></tr><tr><td><strong>Amount</strong></td><td>Billing amount per cycle</td></tr><tr><td><strong>Masked card number</strong></td><td>The payment method registered for this bill — e.g., <code>548117******9195</code></td></tr><tr><td><strong>Customer panel</strong></td><td>Customer name, email, Total Bill count, Total Source of Funds count</td></tr></tbody></table>

***

### Billing Status

<table><thead><tr><th width="125.59765625">Status</th><th>Description</th></tr></thead><tbody><tr><td><strong>Active</strong></td><td>The bill is active — charges will be executed on the configured schedule</td></tr><tr><td><strong>Inactive</strong></td><td>The bill or customer has been inactivated — no charges will be executed</td></tr></tbody></table>

***

### Actions

A single record card has three action surfaces, each operating at a different scope. Understanding the scope before taking action is important — customer-level actions affect all bills, not just the one displayed.

**Actions Scope Overview**

<table><thead><tr><th width="141.375">Action</th><th width="123.30859375">Surface</th><th width="170.61328125">Scope</th><th>Effect</th></tr></thead><tbody><tr><td>Update Profile</td><td>Customer ⋮</td><td>Customer</td><td>Updates customer identity data across all bills</td></tr><tr><td>Inactivate Customer</td><td>Customer ⋮</td><td>Customer — all bills</td><td><strong>Blocks</strong> all bills and all manual actions including Confirm Payment</td></tr><tr><td>Delete Customer</td><td>Customer ⋮</td><td>Customer — all bills</td><td>Permanently removes customer and all their bills</td></tr><tr><td>Inactivate / Activate Bill</td><td>Bill ⋮</td><td>This bill only</td><td>Pauses or resumes this bill only — other bills unaffected</td></tr><tr><td>Edit Execute Schedule</td><td>Bill ⋮</td><td>This bill only</td><td>Updates schedule from next cycle</td></tr><tr><td>Delete Bill</td><td>Bill ⋮</td><td>This bill only</td><td>Permanently removes this bill only</td></tr><tr><td>Update Source of Fund</td><td>Card ⋮</td><td>This bill only</td><td>Generates checkout link for customer to register new card</td></tr><tr><td>Confirm Payment</td><td>Button</td><td>This bill — current cycle</td><td>Triggers immediate manual charge execution</td></tr></tbody></table>

{% hint style="warning" %}
**Inactivate Customer** blocks all bills and all actions for that customer — including Confirm Payment. Use this only when you want to halt all activity for a customer entirely. To pause a single product or billing line, use **Inactivate Bill** from the bill ⋮ instead.
{% endhint %}

***

**👤 Customer Actions (⋮ above customer profile)**

The three-dot menu on the **right side of the card above the customer profile panel** manages the customer as a whole:

<table><thead><tr><th width="202.72265625">Action</th><th>Description</th></tr></thead><tbody><tr><td><strong>Update Profile</strong></td><td>Opens a form to update the customer's identity data: <strong>Name</strong>, <strong>Email</strong>, <strong>Phone Number</strong>. Changes apply across all bills registered under this customer</td></tr><tr><td><strong>Inactivate Customer</strong></td><td>Blocks the customer — all bills under this customer stop executing and all manual actions including Confirm Payment are blocked. The customer can be reactivated to resume normal operation</td></tr><tr><td><strong>Delete Customer</strong></td><td>Permanently removes the customer record and all their associated bills. This action cannot be undone</td></tr></tbody></table>

{% hint style="warning" %}
**Deleting a customer is permanent** — the customer profile, all their Billing Numbers, and all associated tokens are removed. If billing needs to resume for this customer in the future, a full re-registration via a new First Payment is required for each bill.
{% endhint %}

***

**💰 Bill Configuration Actions (⋮ next to billing amount)**

The three-dot menu **next to the billing amount** manages the configuration of this specific bill. Each option opens its own dedicated form:

<table><thead><tr><th width="208.9921875">Action</th><th width="213.52734375">Form Fields</th><th>Description</th></tr></thead><tbody><tr><td><strong>Inactivate / Activate</strong></td><td>—</td><td>Toggles this bill between Active and Inactive. Only this bill is affected — the customer's other bills continue as configured</td></tr><tr><td><strong>Edit Execute Schedule</strong></td><td>Execute Type, Execute Date, Execute Month</td><td>Updates the billing schedule. Takes effect from the <strong>next billing cycle</strong></td></tr><tr><td><strong>Delete Bill</strong></td><td>—</td><td>Permanently removes this specific bill. The customer record and their other bills are not affected</td></tr></tbody></table>

{% hint style="info" %}
Changes to billing amount and execute schedule take effect from the **next billing cycle**. The current cycle's charge — if already executed or in progress — is not affected.
{% endhint %}

***

**🔗 Payment Source Actions (⋮ next to masked card number)**

When the card itself is the problem, Change Card generates a secure, DOKU-hosted checkout link for that one bill. You never see or handle the customer's new card details — they click through and enter them directly on DOKU's page, and the new card is tokenized and takes over automatically from that point forward.

| Change Card / Update Source of Fund | Lets a customer self-register a new card for one bill via a secure hosted link — no raw card data ever touches your systems. | A customer's card expired; you send the link over WhatsApp, they update it in under a minute, and next month's charge goes through normally. |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |

The three-dot menu **next to the masked card number** manages the payment method linked to this specific bill:

**Update Source of Fund** generates a secure DOKU-hosted checkout link for the customer to register a new card. The merchant does not handle any card data — the customer completes the re-registration themselves through the checkout page.

{% stepper %}
{% step %}

#### Click **⋮** next to the masked card number and select **Update Source of Fund**

This starts the payment source update flow for the selected bill.
{% endstep %}

{% step %}

#### Confirm to generate a checkout link

The system generates a checkout link.

<figure><img src="/files/edZQyAsoIxRGdcm6SSmd" alt=""><figcaption></figcaption></figure>

{% endstep %}

{% step %}

#### Choose the delivery method

<table><thead><tr><th width="155.21875">Delivery Option</th><th>How It Works</th></tr></thead><tbody><tr><td><strong>Send to email</strong></td><td>DOKU automatically sends the checkout link to the customer's registered email address</td></tr><tr><td><strong>Copy link</strong></td><td>The link is copied to clipboard — merchant delivers it manually via any channel (WhatsApp, SMS, in-app message, etc.)</td></tr></tbody></table>
{% endstep %}

{% step %}

#### Customer opens the link and enters new card details

The customer clicks the link, lands on the DOKU-hosted checkout page, and enters new card details.
{% endstep %}

{% step %}

#### The new card is tokenized and linked to the bill

The new card is tokenized and automatically linked to this bill — all future charges use the new payment method.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
If the customer did not receive the link or the link has expired, repeat the Update Source of Fund action to generate a new checkout link.
{% endhint %}

***

**✅ Confirm Payment**

The **Confirm Payment** button triggers an **immediate manual charge execution** for the current billing cycle — it forces DOKU to attempt the charge against the registered token right now, outside the configured schedule.

**When to use Confirm Payment:**

| Scenario                                                                                              | Action                                                                             |
| ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| Scheduled charge failed (e.g., insufficient funds) and the customer has since topped up their account | Click Confirm Payment to retry immediately without waiting for the next retry date |
| Merchant wants to execute a charge on demand outside the configured billing schedule                  | Click Confirm Payment to trigger an immediate charge attempt                       |

{% hint style="warning" %}
**Confirm Payment is blocked when the customer is in Inactive/blocked state.** You must reactivate the customer first using **Inactivate / Activate** from the customer ⋮ before Confirm Payment becomes available.
{% endhint %}

***

### FAQ — Manage Recurring

<details>

<summary>Can one customer have multiple Billing Numbers?</summary>

Yes. A single customer can have multiple independent Billing Numbers — each representing a separate billing line with its own amount, schedule, and payment source. For example, a gym customer might have one bill for their monthly membership and another for a personal training add-on. The customer panel shows **Total Bill** to reflect how many Billing Numbers are registered under that customer.

</details>

<details>

<summary>What is the difference between Inactivate Customer and Inactivate Bill?</summary>

**Inactivate Customer** operates at the customer level — it blocks all bills under this customer simultaneously and prevents all actions including Confirm Payment. Use this only when you want to halt everything for a customer entirely.

**Inactivate Bill** operates at the bill level — it pauses only that specific bill. The customer's other bills continue executing normally, and Confirm Payment remains available on other bills.

If you want to temporarily pause a single product for a customer, use **Inactivate Bill**. If you want to block all activity for the customer, use **Inactivate Customer**.

</details>

<details>

<summary>What is the difference between Delete Customer and Delete Bill?</summary>

**Delete Customer** permanently removes the customer record and all their associated Billing Numbers and tokens. All billing activity stops completely with no recovery path.

**Delete Bill** permanently removes only that specific bill. The customer profile and all other bills registered under them remain intact and continue executing normally.

</details>

<details>

<summary>Can I reactivate a customer after inactivating them?</summary>

Yes. Select **Inactivate / Activate** from the customer ⋮ to reactivate a blocked customer. Once reactivated, all their Active bills resume executing on their configured schedules and Confirm Payment becomes available again.

</details>

<details>

<summary>What is Confirm Payment and when should I use it?</summary>

Confirm Payment is a manual retry trigger — it forces an immediate charge execution for the current billing cycle outside the configured schedule. Use it when a scheduled charge has failed and the customer has resolved the issue (e.g., topped up their account) and you want to retry immediately without waiting for the next retry date. Confirm Payment is blocked when the customer is in Inactive/blocked state.

</details>

<details>

<summary>How does the customer register a new card via Update Source of Fund?</summary>

After you initiate Update Source of Fund and complete the confirmation step, DOKU generates a checkout link. You deliver this to the customer either via their registered email (automatic) or by copying the link manually. The customer clicks the link, enters their new card details on the DOKU-hosted checkout page, and the new card is tokenized and automatically linked to the bill. No card data passes through your system.

</details>

<details>

<summary>What if the customer didn't receive the Update Source of Fund link?</summary>

Repeat the Update Source of Fund action on the same bill to generate a new checkout link. Deliver it via the copy link option if the email delivery did not reach the customer — paste it into WhatsApp, SMS, or any other channel.

</details>

***

## Register Report

The Register Report tab is a **registration log** — it records every bill that was registered for the first time under this merchant account, along with the registration date, schedule configuration, and current status.

{% hint style="info" %}
**Register Report is not a transaction report.** It shows when bills were *registered*, not the history of charges executed against them. For full transaction history and payment records, refer to the centralized **Reports** module in the DOKU Dashboard.
{% endhint %}

Navigate to: **DOKU Dashboard → FlexiBill → Account Billing → Register Report**

***

### Summary Bar

The top of the Register Report page displays three key figures:

<table><thead><tr><th width="169.03515625">Metric</th><th>Description</th></tr></thead><tbody><tr><td><strong>Total Registration</strong></td><td>Total number of bills ever registered under this merchant account</td></tr><tr><td><strong>Active</strong></td><td>Number of currently active registered bills</td></tr><tr><td><strong>Inactive</strong></td><td>Number of currently inactive registered bills</td></tr></tbody></table>

***

### Search and Filter

<table><thead><tr><th width="218.0625">Control</th><th>Description</th></tr></thead><tbody><tr><td><strong>Search by Customer ID</strong></td><td>Enter a Customer ID to filter records for a specific customer</td></tr><tr><td><strong>Search by card name</strong></td><td>Enter the cardholder name to filter by payment method owner</td></tr><tr><td><strong>Select customer status</strong></td><td>Filter by registration status — Active or Inactive</td></tr><tr><td><strong>Filter</strong></td><td>Apply additional filters</td></tr><tr><td><strong>Export</strong></td><td>Download the current filtered view as a file for offline reconciliation</td></tr><tr><td><strong>⚙ (settings icon)</strong></td><td>Configure which columns are visible in the table</td></tr></tbody></table>

***

### Column Definitions

<table><thead><tr><th width="160.63671875">Column</th><th>Description</th></tr></thead><tbody><tr><td><strong>Customer ID</strong></td><td>Unique customer identifier — matches the <code>customer_id</code> used during registration</td></tr><tr><td><strong>Billing Number</strong></td><td>Unique bill identifier — e.g., <code>SUB26000032</code></td></tr><tr><td><strong>Card Number</strong></td><td>Masked payment method — e.g., <code>548117******9195</code></td></tr><tr><td><strong>Card Name</strong></td><td>Cardholder name as registered</td></tr><tr><td><strong>Register Date</strong></td><td>The date the bill was first registered</td></tr><tr><td><strong>Start Date</strong></td><td>The billing schedule start date configured at registration</td></tr><tr><td><strong>End Date</strong></td><td>The billing schedule end date — <code>31/12/2999</code> indicates no end date (unlimited)</td></tr><tr><td><strong>Execute Type</strong></td><td>The billing execution type: <code>DAY</code>, <code>DATE</code>, or <code>FULLDATE</code> → <a href="/pages/7972fd90f56f70f7a17fcd67af7121672548c606#execute-type">Execute Type</a></td></tr><tr><td><strong>Execute Date</strong></td><td>The specific execution date(s) or day(s) configured — e.g., <code>20260508</code> for FULLDATE, or <code>5;6;7</code> for DATE</td></tr><tr><td><strong>Execute Month</strong></td><td>The months in which charges execute — e.g., <code>JAN,FEB,MAR,...,DEC</code>. Empty for FULLDATE type</td></tr><tr><td><strong>Amount</strong></td><td>The registered billing amount per cycle</td></tr><tr><td><strong>Status</strong></td><td>Current registration status: <strong>Active</strong> (green) or <strong>Inactive</strong> (orange)</td></tr></tbody></table>

***

#### Pagination

Use the **items per page** selector in the bottom left to control how many records are displayed per page (default: 10). Navigate between pages using the pagination controls in the bottom right — e.g., `Showing 1 - 8 from 8 entries`.

***

### FAQ — Register Report

<details>

<summary>What is the difference between Register Report and the transaction report in the Reports module?</summary>

Register Report is a registration log — it shows when each bill was registered and its schedule configuration. It does not show individual charge attempts, payment outcomes, or amounts collected per cycle. For full transaction history including payment success and failure per cycle, use the centralized **Reports** module in the DOKU Dashboard.

</details>

<details>

<summary>Why does End Date show 31/12/2999 for some records?</summary>

`31/12/2999` is the system's representation of an **unlimited end date** — the bill has no configured expiry and will continue until manually inactivated or deleted. This corresponds to `end_date.type: NEVER` in the Register Bill API.

</details>

<details>

<summary>Can I update a bill's configuration directly from Register Report?</summary>

No. Register Report is read-only — it is a historical log for reference and reconciliation. To update a bill's amount, schedule, customer profile, or payment source, use the **Manage Recurring** tab.

</details>

<details>

<summary>What does the Export button download?</summary>

Export downloads the current filtered view of the Register Report as a file. Apply any search filters before exporting if you want a specific subset of records — for example, all Active registrations for a specific Customer ID.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.doku.com/subscription-and-billing/flexibill/account-billing/manage-recurring.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
