Guides
Debit orders & reconciliation
Overview of Netcash debit orders and statement reconciliation in the CentraPoint dashboard, and what is available via the API.
On this page
Overview#
CentraPoint collects recurring bank debit orders in South Africa through Netcash, and reconciles money received against transactions by importing statements.
Requirements#
- A plan that includes Debit orders and/or Reconciliation (Business and higher by default).
- A Netcash account with the debit order and account services, configured as a Netcash Debit Orders provider under Settings → Payment providers (debit order service key and account service key).
Mandates#
A mandate is a customer's authority to debit their bank account. In the dashboard under Debit orders you can:
- create a mandate with the account holder, bank, branch code, account number and type, amount, frequency (monthly, quarterly, bi-annually, annually), debit day and start/end dates;
- send the customer a Netcash e-mandate to sign;
- pause, resume or cancel mandates.
Each mandate gets an account reference of the form DO followed by 10 upper-case hex characters, e.g. DO7F3A1C9B2E. Bank account numbers are stored encrypted and only the last 4 digits are displayed.
| Status | Meaning |
|---|---|
pending | Created, awaiting signature. |
active | Will be included in batches when due. |
paused | Skipped. Set manually, or automatically after 3 consecutive unpaids. |
cancelled | Stopped permanently (or its end date has passed). |
Batches and collection#
Due mandates are grouped into a Netcash batch for an action date, using the Two-day or Same-day instruction configured on the provider, and uploaded to Netcash. Depending on your Netcash profile, batches are authorised automatically or by you in the Netcash portal. CentraPoint then reads Netcash's load report to see which lines were accepted or rejected.
| Status | Meaning |
|---|---|
uploaded | Sent to Netcash, waiting for the load report. |
accepted / partially_accepted | All / some lines were accepted by Netcash. |
rejected | No lines were accepted. |
settled | Accepted lines were marked collected after the settlement period. |
failed | The upload failed. |
Debit order transactions#
Every line in a batch creates a transaction with type: "debit_order", currency ZAR, and a reference made of the mandate's account reference and the action date:
DO7F3A1C9B2E-20261001
The transaction starts pending, becomes failed if Netcash rejects the line, and becomes complete a configurable number of days after the action date ("Mark collected after", default 3) unless an unpaid arrives first.
Unpaids#
When a debit is returned unpaid (found through reconciliation or marked manually in the dashboard), its transaction becomes failed and the mandate's failure count increases. After 3 consecutive unpaids the mandate is paused.
Reconciliation#
Under Reconciliation in the dashboard, CentraPoint imports statement lines and matches them to transactions:
- Netcash merchant statements are fetched automatically using the account service key.
- CSV statements from other gateways or your bank can be imported manually.
- Lines are categorised as collections, unpaids, fees, payouts, refunds or other. Collections confirm the matching transaction; unpaids mark debit orders unpaid; fees and payouts are recorded for reporting.
- Matching uses CentraPoint references found in the statement (
CP-…payment references, legacyGSS-…references andDO…debit order references). Lines that cannot be matched go to a Needs attention queue. - Re-importing the same statement does not create duplicate lines.
- Results are available through the Reconciliation results API and the
reconciliation.completedwebhook.
What you can do via the API#
| Task | API |
|---|---|
| Check the outcome of a debit order collection | GET /api/v1/transactions/{reference} with the DO…-YYYYMMDD reference |
| Create, change or cancel mandates | Dashboard only |
| Run batches, mark unpaids | Dashboard only |
| Read reconciliation results (totals, matches, exceptions) | GET /api/v1/reconciliation/runs |
| Import statements, resolve reconciliation exceptions | Dashboard only |