General

Mandates

 

Create and manage mandates for collections including DebiCheck and Registered Mandates. Handle mandate creation, authentication, status updates, and cancellation with full SARB compliance.

Used to create EFT DO / (DebiCheck / Registered Mandate: authenticate), edit EFT DO / (DebiCheck / Registered Mandate: Update, Reauthorise or Cancel) and archive mandates.

When creating collections you can either submit a record with the customer, bank accounts and mandate details or create a mandate here and then assign a customer_id, bank_account_id and mandate_id to a collection record.

WARNING

Customers that are specified as companies (or have company business accounts) can only be assigned with Registered Mandate (RM) payment methods where the provider bank is ABSA or EFT DO payment methods. Company business bank accounts can not be processed via DebiCheck payment methods. Nedbank provided RM payment methods do not support company business accounts yet.

DebiCheck customers have to approve the mandates themselves whereas Registered Mandates only need to be approved by the bank.

Create

API call to create (DebiCheck / Registered Mandate: authenticate) new mandates(s) as single or batch records.

DebiCheck customers will have to approve the mandate from their phone. Registered Mandates customers will be authenticated with the bank and do not need any approval, likewise EFT customers do not need any approval either.

Path

POST /mandates/create

Request Body

{
  "records": [{
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_9b_DTCrtPblUgNHodKAxB",
    "mandate_status": "ACTIVE", // Not applicable to DebiCheck / Registered Mandates
    "reference": "ABC123",
    "contract_reference": "CTC24091900001",
    "payment_industry": "ACCOUNT_REPAYMENT",
    "amount": "45.00",
    // required for recurring collections
    "recurring": {
      "process_day": 1,
      "collection_interval": "MONTHLY",
      "date_release": "2026-05-12"
    },
    // used with one-time collections
    "one_time": {
      "process_date": "2024-10-25"
    },
    // required if Payment Method is DebiCheck
    "debicheck": {
      "first_collection_amount": "50.45",
      "first_collection_date": "2024-10-16",
      "maximum_collection_amount": "60.00",
      "allow_date_adjustment": true,
      "allow_variable_amount": true,
      "allow_payment_tracking": true,
      "payment_tracking_max_days": 4,
      "adjustment_category": "ANNUALLY", // only allowed when 'allow variable amount' is set to true
      "adjustment_type": "RATE",
      "adjustment_rate": "5.12345",
      "adjustment_amount": "0.00",
      "approval_window": "BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2",
      "mandate_authentication_code": "12345678" // only used with DebiCheck TT3 approval windows
    },
    // required if Payment Method is Registered mandates
    "registered_mandate": {
      "first_collection_amount": "50.45",
      "first_collection_date": "2024-10-16",
      "maximum_collection_amount": "60.00",
      "allow_date_adjustment": true,
      "allow_variable_amount": true,
      "allow_payment_tracking": true,
      "payment_tracking_max_days": 4
    }
  }]
}

Examples

One-time EFT Debit Order

{
  "records": [{
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_9b_DTCrtPblUgNHodKAxB",
    "mandate_status": "ACTIVE",
    "contract_reference": "CTC24091900002",
    "payment_industry": "ACCOUNT_REPAYMENT",
    "amount": "45.00",
    "one_time": {
      "process_date": "2025-06-25"
    }
  }]
}

Recurring EFT Debit Order

{
  "records": [{
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_9b_DTCrtPblUgNHodKAxB",
    "mandate_status": "ACTIVE",
    "contract_reference": "CTC24091900002",
    "payment_industry": "ACCOUNT_REPAYMENT",
    "amount": "45.00",
    "recurring": {
      "process_day": 1,
      "collection_interval": "MONTHLY",
      "date_release": "2026-05-12"
    }
  }]
}

One-time DebiCheck

{
  "records": [{
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_5mX1n4WUS86B6iJ9aVK1w",
    "contract_reference": "CTC24091900002",
    "payment_industry": "ACCOUNT_REPAYMENT",
    "amount": "45.00",
    "one_time": {
      "process_date": "2025-06-25"
    },
    "debicheck": {
      "maximum_collection_amount": "60.00",
      "allow_payment_tracking": true,
      "payment_tracking_max_days": 4,
      "approval_window": "BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2"
    }
  }]
}

Recurring DebiCheck

{
  "records": [{
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_5mX1n4WUS86B6iJ9aVK1w",
    "contract_reference": "CTC24091900002",
    "payment_industry": "ACCOUNT_REPAYMENT",
    "amount": "45.00",
    "recurring": {
      "process_day": 1,
      "collection_interval": "MONTHLY",
      "date_release": "2026-05-12"
    },
    "debicheck": {
      "first_collection_amount": "50.45",
      "first_collection_date": "2025-05-01",
      "maximum_collection_amount": "60.00",
      "allow_date_adjustment": true,
      "allow_variable_amount": true,
      "allow_payment_tracking": true,
      "payment_tracking_max_days": 4,
      "adjustment_category": "ANNUALLY",
      "adjustment_type": "RATE",
      "adjustment_rate": "5.12345",
      "adjustment_amount": "0.00",
      "approval_window": "BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2"
    }
  }]
}

Recurring DebiCheck TT3

{
  "records": [{
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_5mX1n4WUS86B6iJ9aVK1w",
    "contract_reference": "CTC24091900002",
    "payment_industry": "ACCOUNT_REPAYMENT",
    "amount": "45.00",
    "recurring": {
      "process_day": 1,
      "collection_interval": "MONTHLY",
      "date_release": "2026-05-12"
    },
    "debicheck": {
      "first_collection_amount": "50.45",
      "first_collection_date": "2025-05-01",
      "maximum_collection_amount": "60.00",
      "allow_date_adjustment": true,
      "allow_variable_amount": true,
      "allow_payment_tracking": true,
      "payment_tracking_max_days": 4,
      "adjustment_category": "ANNUALLY",
      "adjustment_type": "RATE",
      "adjustment_rate": "5.12345",
      "adjustment_amount": "0.00",
      "approval_window": "MAC_TT3_MESSAGE_AUTHENTICATION_CODE_CARD_AND_PIN",
      "mandate_authentication_code": "12345678"
    }
  }]
}

One-time Registered Mandate

{
  "records": [{
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_ak7lHmJ0a2fuD1q4M6b0q",
    "contract_reference": "CTC24091900002",
    "payment_industry": "ACCOUNT_REPAYMENT",
    "amount": "45.00",
    "one_time": {
      "process_date": "2025-06-25"
    },
    "registered_mandate": {
      "maximum_collection_amount": "60.00",
      "allow_payment_tracking": true,
      "payment_tracking_max_days": 4
    }
  }]
}

Recurring Registered Mandate

{
  "records": [{
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_ak7lHmJ0a2fuD1q4M6b0q",
    "contract_reference": "CTC24091900002",
    "payment_industry": "ACCOUNT_REPAYMENT",
    "amount": "45.00",
    "recurring": {
      "process_day": 1,
      "collection_interval": "MONTHLY",
      "date_release": "2026-05-12"
    },
    "registered_mandate": {
      "first_collection_amount": "50.45",
      "first_collection_date": "2025-05-01",
      "maximum_collection_amount": "60.00",
      "allow_date_adjustment": true,
      "allow_variable_amount": true,
      "allow_payment_tracking": true,
      "payment_tracking_max_days": 4
    }
  }]
}

Request Parameters

Field
RequiredType
Description
Example
customer_idYString(32)Customer IDcus_q0lJckGcUQptaXODDb7sG
bank_account_idYString(32)Bank Account IDban_xrf4nxBPH5bwjXIrl6Le5
payment_methods_idYString(32)Payment Method IDpam_ak7lHmJ0a2fuD1q4M6b0q
mandate_statusn/aENUM(ACTIVE,ARCHIVED,CANCELLATION_PENDING,CANCELLATION_REJECTED,CANCELLATION_SUCCESSFUL,DISABLED,GENERATED,NO_REPLY,PENDING,REJECTED,SUSPENDED)ACTIVE
referenceNString(256)Optional custom reference numberABC123
contract_referenceCString(14)Uniquely identifies the mandate with the bank and will show on bank statements.CTC24091900001
payment_industryNENUMUsed by both EFT debit orders and DebiCheck. (ACCOUNT_REPAYMENT,BOND_REPAYMENT,CHARITABLE_OR_RELIGIOUS_CONTRIBUTIONS,H_P__REPAYMENT,INSURANCE_PREMIUM,LOAN_REPAYMENT_OTHER_THAN_MORTGAGE,MEDICAL_AID_FUND_CONTRIBUTION,PENSION_FUND_CONTRIBUTION,RENT_PROPERTY,RENTALLEASE_OTHER_THAN_PROPERTY,SERVICE_CHARGE_MAINTENANCE,SERVICE_CHARGE_VARIABLE_AMOUNTS,UNIT_TRUST_PURCHASE).ACCOUNT_REPAYMENT
amountYDecimalThe amount to be collected on the billing day in Rands45.00
recurring.process_dayYIntegerCalendar day on which the collection is to be made. If you choose 31st and the month only has 30 days the collection will be made on the 30th.1
recurring.collection_intervalNENUMHow often this collection should be run. (MONTHLY,YEARLY).MONTHLY
recurring.date_releaseNDate(YYYY-MM-DD)When this mandate is to release or complete2026-05-01
one_time.process_dateNDate(YYYY-MM-DD)Date upon which transaction will be processed once2024-09-30
debicheck.first_collection_amountNDecimalAmount to be collected on the first collection date. Make sure to have a running collection connected to the mandate to receive this first collection amount.50.45
debicheck.first_collection_dateCDate(YYYY-MM-DD)When the first collection amount is to be collected. If this date is the same as the collection starting date then 2 collections will be attempted on the same day. This first collection date is independent from the recurring collection start date.2024-03-01
debicheck.maximum_collection_amountYDecimalThis is the maximum collection amount allowed for the mandate. This maximum amount may not be more than 1.5 times the instalment amount e.g. if your instalment amount is R 10.00 then your maximum collection amount may not be more than R15.00. Used with re-presented (arrears) collections.60.00
debicheck.allow_date_adjustmentNBooleanUsed by DebiCheck to indicate that collections may be made on billing days other than the day specified on the mandate.true
debicheck.allow_variable_amountNBooleanUsed by DebiCheck to indicate that the amount collected on the billing day may be changed. Must be true when using adjustment category amount/rates.false
debicheck.allow_payment_trackingNBooleanUsed by DebiCheck to allow automated resubmission of failed collections. The collection will be resubmitted up to a maximum amount of days, or until the collection succeeds whichever comes first. Warning: the resubmitted collection becomes disputable.true
debicheck.payment_tracking_max_daysNInteger1 to 10 Days. Maximum amount of days failed collections are to be resubmitted (when in tracking), after the billing day.4
debicheck.adjustment_categoryNENUMUsed by DebiCheck to increase the DebiCheck mandate amount per specified interval e.g. increase collection amount by R 10.00 every year. (ANNUALLY,BIANNUALLY,NEVER,QUARTERLY). See increase API. Not applicable to RM, for RM create a new mandate and disable the previous mandate manually.ANNUALLY
debicheck.adjustment_typeNENUMAmount or rate as a percentage. (AMOUNT,RATE)RATE
debicheck.adjustment_rateNDecimalDetermines the percentage to increase the DebiCheck amount per adjustment category interval e.g 5.12345% per interval5.12345
debicheck.adjustment_amountNDecimalDetermines the amount to increase the DebiCheck amount per adjustment category interval. Either adjustment rate OR adjustment amount must be used when an adjustment category is specified and both may not be specified at the same time0.00
debicheck.approval_windowNENUMDetermines how long the user has to approve the DebiCheck mandate. Does NOT apply to Registered Mandates. (BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2,DELAYED_REAL_TIME_TT1_APPROVE_BY_20H00_ON_THE_SAME_DAY,MAC_TT3_MESSAGE_AUTHENTICATION_CODE_CARD_AND_PIN,REAL_TIME_TT1_APPROVE_WITHIN_120_SECONDS_CELLPHONE_MUST_MATCH_BANK,REAL_TIME_TT1_APPROVE_WITHIN_120_SECONDS_SENT_TO_BANK_CELLPHONE).BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2
debicheck.mandate_authentication_codeC - Required with TT3String(8)Mandate authentication code used with TT3 solutions (Card and PIN).12345678
registered_mandate.first_collection_amountNDecimalAmount to be collected on the first collection date. Make sure to have a running collection connected to the mandate to receive this first collection amount.50.45
registered_mandate.first_collection_dateCDate(YYYY-MM-DD)When the first collection amount is to be collected. If this date is the same as the collection starting date then 2 collections will be attempted on the same day. This first collection date is independent from the recurring collection start date.2024-03-01
registered_mandate.maximum_collection_amountYDecimalThis is the maximum collection amount allowed for the mandate. This maximum amount may not be more than 1.5 times the instalment amount e.g. if your instalment amount is R 10.00 then your maximum collection amount may not be more than R15.00. Used with re-presented (arrears) collections.60.00
registered_mandate.allow_date_adjustmentNBooleanUsed by RM to indicate that collections may be made on billing days other than the day specified on the mandate.true
registered_mandate.allow_variable_amountNBooleanUsed by RM to indicate that the amount collected on the billing day may be changed. Must be true when using adjustment category amount/rates.false
registered_mandate.allow_payment_trackingNBooleanUsed by RM to allow automated resubmission of failed collections. The collection will be resubmitted up to a maximum amount of days, or until the collection succeeds whichever comes first. Warning: the resubmitted collection becomes disputable.true
registered_mandate.payment_tracking_max_daysNInteger1 to 10 Days. Maximum amount of days failed collections are to be resubmitted (when in tracking), after the billing day.4

Response Body

The response follows the same format as the list response

{
  "status": true,
  "results": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt",
    ...
    "contract_reference": "CTC24091900001",
    ...
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_ak7lHmJ0a2fuD1q4M6b0q",
    "mandate_status": "ACTIVE",
    ...
    "amount": "45.00",
    "recurring": {...},
    "one_time": {...},
    ...
    "debicheck": {...},
    "registered_mandate": {...},
    "debit_order": {...}
  }, ...]
}

Update EFT Debit Order

API call to update existing mandate(s) as single or batch records. Records can not be deleted, only archived.

Path

POST /mandates/eft/update

WARNING

An EFT debit order mandate can not be archived/disabled if it has running collections, you need to pause the connected collections first.

Only provide the fields you wish to change in the body.

One-time mandates can not be converted to recurring mandates and vice versa. Collection interval of recurring mandates can not be changed after creation.

Request Body

{
  "records": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt",
    "amount": "45.00",
    "reference": "ABC123",
    // for recurring mandates
    "recurring": {
      "process_day": 1,
      "date_release": "2026-05-12"
    },
    // or for one-time mandates
    "one_time": {
      "process_date": "2024-10-25"
    },
    "payment_industry": "ACCOUNT_REPAYMENT",
    "mandate_status": "ACTIVE"
  }]
}

Request Parameters

Field
RequiredType
Description
Example
idYString(32)Record id to updateman_LfUp0ZILHxWRdzZV9ksPt
amountNDecimalThe amount to be collected on the billing day45.00
referenceNString(256)Optional custom reference numberABC123
recurring.process_dayNIntegerCalendar day on which the collection is to be made. If you choose 31st and the month only has 30 days the collection will be made on the 30th.1
recurring.date_releaseNWhen this mandate is to release or complete2026-05-01
one_time.process_dateNDate(YYYY-MM-DD)Date upon which transaction will be processed once2024-09-30
payment_industryNENUMUsed by both EFT debit orders and DebiCheck / RM. (ACCOUNT_REPAYMENT,BOND_REPAYMENT,CHARITABLE_OR_RELIGIOUS_CONTRIBUTIONS,H_P__REPAYMENT,INSURANCE_PREMIUM,LOAN_REPAYMENT_OTHER_THAN_MORTGAGE,MEDICAL_AID_FUND_CONTRIBUTION,PENSION_FUND_CONTRIBUTION,RENT_PROPERTY,RENTALLEASE_OTHER_THAN_PROPERTY,SERVICE_CHARGE_MAINTENANCE,SERVICE_CHARGE_VARIABLE_AMOUNTS,UNIT_TRUST_PURCHASE).ACCOUNT_REPAYMENT
debit_order.mandate_statusNENUMOnly allowed to be changed for EFT debit orders. (ACTIVE,ARCHIVED,CANCELLATION_PENDING,CANCELLATION_REJECTED,CANCELLATION_SUCCESSFUL,DISABLED,GENERATED,NO_REPLY,PENDING,REJECTED,SUSPENDED).ACTIVE

Response Body

The response follows the same format as the list response

{
  "status": true,
  "results": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt",
    ...
    "contract_reference": "CTC24091900001",
    ...
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_ak7lHmJ0a2fuD1q4M6b0q",
    "mandate_status": "ACTIVE",
    ...
    "amount": "45.00",
    "recurring": {...},
    "one_time": {...},
    ...
    "debicheck": {...},
    "registered_mandate": {...},
    "debit_order": {...}
  }, ...]
}

Update DebiCheck / Registered Mandates

API call to update existing mandate(s) as single or batch records. Records can not be deleted, only archived.

Archive

Set the mandate status to 'archived'. Archiving is not a DebiCheck / RM feature, it is a Kwik only status available for convenience.

DebiCheck Path

POST /mandates/debicheck/update/archive

Registered Mandate Path

POST /mandates/rm/update/archive

Request Body

{
  "records": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt"
  }]
}

Activate

Activate the DebiCheck/ RM mandate after being archived. This will ultimately restore the mandate status the current status the bank reflects.

DebiCheck Path

POST /mandates/debicheck/update/activate

Registered Mandate Path

POST /mandates/rm/update/activate

Request Body

{
  "records": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt"
  }]
}

Cancel

Cancel/stop the DebiCheck mandate / Registered Mandate.

DebiCheck Path

POST /mandates/debicheck/update/cancel

Registered Mandate Path

POST /mandates/rm/update/cancel

WARNING

The cancel reason will show immediately on the record but the status will not be updated until a response is received from the bank.

Request Body

{
  "records": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt",
    "cancel_reason": "CONTRACT_EXPIRED"
  }]
}

Request Parameters

Field
RequiredType
Description
Example
idYString(32)Mandate record id to updateman_LfUp0ZILHxWRdzZV9ksPt
cancel_reasonYENUM(CANCELLATION_OR_AMENDMENT_REQUESTED_BY_THE_CREDITOR,CONTRACT_EXPIRED,MANDATE_CANCELLATION_DUE_TO_FRAUD,MANDATE_CANCELLED_DUE_TO_EARLY_SETTLEMENT)CONTRACT_EXPIRED

Re-submit (DebiCheck ABSA)

WARNING

TT1 (approval_window) DebiCheck mandates only.

Only applicable to DebiCheck mandates created by a payment method with the provider bank set to ABSA. Resubmit the created mandate that has returned the 'no reply' status within the last 5 calendar days. You are limited to 4 re-submissions after that you have to create a new mandate.

DebiCheck Path

POST /mandates/debicheck/update/resubmit

Request Body

{
  "records": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt"
  }]
}

Increase (DebiCheck)

Used for annual, bi-annual or quarterly DebiCheck mandate increases. Only applicable when the mandate specifies an adjustment category with an adjustment amount or rate. Client will receive a notification on their phone indicating the increase.

DebiCheck Path

POST /mandates/debicheck/update/increase

Registered Mandate Path

Registered Mandate (RM) increases are not supported. Disable the old mandate and create a new one manually.

WARNING

Only applicable to DebiCheck mandates that are active with a valid adjustment rate or amount specified.

Increases should be done after the last collection for the interval (annually, bi-annually or quarterly) has completed e.g. an annual increase for a mandate that started on the 1st January 2025 can be done on the 2nd December 2025 if the collection for the 1st December has been completed.

Mandate amount changes will only reflect after being approved by the bank, whereas the collection update change will reflect immediately.

Request Body

{
  "records": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt",
    "amount": "45.00",
    "update_recurring_collection": true
  }]
}

Request Parameters

Field
RequiredType
Description
Example
idYString(32)Mandate record id to updateman_LfUp0ZILHxWRdzZV9ksPt
amountYDecimalThe new amount to be collected on the billing day. Must match the adjustment category rules e.g. you can not increase the mandate amount by R 10.00 if your adjustment amount is R 1.00 for example. Same applies to adjustment rates.45.00
update_recurring_collectionYBooleantrue - Set the amount of any connected collection to the increase amount specified. false - Only update the amount on the mandate and leave connected collection amounts as is.true

Update (Recurring DebiCheck)

Only a select number of fields may be updated for DebiCheck (or Registered Mandates), this is according to the bank rules. For example you can not change the bank branch code assigned to a mandate.

DebiCheck Path

POST /mandates/debicheck/update/request

Registered Mandate Path

Registered Mandate (RM) updates are not supported.

WARNING

One-time DebiCheck mandates / Registered Mandates can not be changed and you will have to cancel the mandate and create a new mandate if you wish to change it.

The collection interval of recurring (monthly, yearly) mandates can not be changed after creation so make sure it is correct on creation.

Make sure to update your connected collections accordingly AFTER the DebiCheck mandate amendment has been approved. In most cases it is best to pause the old collection and create a new collection.

Avoid changing mandates when a collection is pending at the bank for deduction otherwise you could violate the mandate rules and result in the collection being rejected on the day of collection.

When updating DebiCheck mandates depending on the fields that you want to update you either perform an update or a re-auth. An update will send the customer a notification whereas a re-auth has to be approved by the customer before the new changes can come into effect. The 'action' column below to indicate an update or re-auth is only a guideline based on ABSA TT2 DebiCheck provided mandates. The requirements of update / re-auth differs between DebiCheck mandates provided by ABSA and those provided by Nedbank and there is also a difference between the requirements for a TT1 and a TT2 mandate; therefore only provide the fields you wish to change.

Request Body

{
  "records": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt",
    "reference": "ABC123",
    
    // Required when action is UPDATE
    "update_reason": "REQUESTED_BY_CUSTOMER",

    // pull in the latest customer name, id, contact number & email
    "update_customer": true,
    // pull in the latest bank account number and type 
    // NOTE: bank branch is not allowed to change
    "update_bank_account": true,
    // This is the re-authentication instrument used,
    // must be TT2 if original submission was TT2.
    "approval_window": "BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2",
    // Used with DebiCheck TT3
    "mandate_authentication_code": "12345678",
    "amount": "45.00",
    "recurring": {
      "process_day": 1,
      "date_release": "2026-05-12"
    },
    "payment_industry": "ACCOUNT_REPAYMENT",
    "allow_date_adjustment": true,
    "allow_payment_tracking": true,
    "payment_tracking_max_days": 4,
    "first_collection_amount": "50.45",
    "first_collection_date": "2024-10-16",
    "maximum_collection_amount": "60.00",
    "adjustment_category": "ANNUALLY",
    "adjustment_type": "RATE",
    "adjustment_rate": "5.12345",
    "adjustment_amount": "0.00"
  }]
}

Request Parameters

Field
RequiredDebiCheck ActionType
Description
Example
idYn/aString(32)Mandate record id to updateman_LfUp0ZILHxWRdzZV9ksPt
referenceNString(256)Optional custom reference numberABC123
update_reasonYn/aENUM(CANCELLATION_OR_AMENDMENT_REQUESTED_BY_INITIATING_PARTY,REQUESTED_BY_CUSTOMER)REQUESTED_BY_CUSTOMER
update_customerNupdateBooleanUpdates the DebiCheck details with the currently linked customer name, surname, ID number, contact number and email detailstrue
update_bank_accountNre-authBooleanUpdates the DebiCheck details with the currently linked bank account number and bank account type. The bank branch can not be changed, mandates can not be moved between banks.true
approval_windowYn/aENUMIf mandate init was TT1 then the amend window must also be TT1 (same applies for TT2 and TT3). Determines how long the user has to approve the DebiCheck mandate update. Only used if a field is contained that requires re-auth. Does NOT apply to Registered Mandates. (BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2,DELAYED_REAL_TIME_TT1_APPROVE_BY_20H00_ON_THE_SAME_DAY,MAC_TT3_MESSAGE_AUTHENTICATION_CODE_CARD_AND_PIN,REAL_TIME_TT1_APPROVE_WITHIN_120_SECONDS_CELLPHONE_MUST_MATCH_BANK,REAL_TIME_TT1_APPROVE_WITHIN_120_SECONDS_SENT_TO_BANK_CELLPHONE).BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2
mandate_authentication_codeC - Required with TT3n/aString(8)Mandate authentication code used with TT3 solutions (Card and PIN).12345678
amountNre-authDecimalThe amount to be collected on the billing day45.00
recurring.process_dayNre-authIntegerCalendar day on which the collection is to be made. If you choose 31st and the month only has 30 days the collection will be made on the 30th.1
recurring.date_releaseNupdateWhen this mandate is to release or complete2026-05-01
payment_industryNupdateENUMUsed by both EFT debit orders and DebiCheck. (ACCOUNT_REPAYMENT,BOND_REPAYMENT,CHARITABLE_OR_RELIGIOUS_CONTRIBUTIONS,H_P__REPAYMENT,INSURANCE_PREMIUM,LOAN_REPAYMENT_OTHER_THAN_MORTGAGE,MEDICAL_AID_FUND_CONTRIBUTION,PENSION_FUND_CONTRIBUTION,RENT_PROPERTY,RENTALLEASE_OTHER_THAN_PROPERTY,SERVICE_CHARGE_MAINTENANCE,SERVICE_CHARGE_VARIABLE_AMOUNTS,UNIT_TRUST_PURCHASE).ACCOUNT_REPAYMENT
allow_date_adjustmentNupdateBooleanUsed by DebiCheck to indicate that collections may be made on billing days other than the day specified on the mandate.true
allow_payment_trackingNupdateBooleanUsed by DebiCheck to allow automated resubmission of failed collections. The collection will be resubmitted up to a maximum amount of days, or until the collection succeeds whichever comes first. Warning: the resubmitted collection becomes disputable.true
payment_tracking_max_daysNupdateInteger1 to 10 Days. Maximum amount of days failed collections are to be resubmitted (when in tracking), after the billing day.4
first_collection_amountNupdateDecimalAmount to be collected on the first collection date. Make sure to have a running collection connected to the mandate to receive this first collection amount.50.45
first_collection_dateNre-authDate(YYYY-MM-DD)When the first collection amount is to be collected. If this date is the same as the collection starting date then 2 collections will be attempted on the same day. This first collection date is independent from the recurring collection start date.2024-03-01
maximum_collection_amountNre-authDecimalRequired by DebiCheck. This is the maximum collection amount allowed for the mandate. This maximum amount may not be more than 1.5 times the instalment amount e.g. if your instalment amount is R 10.00 then your maximum collection amount may not be more than R15.00. Used with re-presented (arrears) collections.60.00
adjustment_categoryNupdateENUMUsed by DebiCheck to increase the DebiCheck mandate amount per specified interval e.g. increase collection amount by R 10.00 every year. (ANNUALLY,BIANNUALLY,NEVER,QUARTERLY). See increase API.ANNUALLY
adjustment_typeNupdateENUMAmount or rate as a percentage. (AMOUNT,RATE)RATE
adjustment_rateNre-authDecimalDetermines the percentage to increase the DebiCheck amount per adjustment category interval e.g 5.12345% per interval5.12345
adjustment_amountNre-authDecimalDetermines the amount to increase the DebiCheck amount per adjustment category interval. Either adjustment rate OR adjustment amount must be used when an adjustment category is specified and both may not be specified at the same time0.00

Response Body

The response follows the same format as the list response

{
  "status": true,
  "results": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt",
    ...
    "contract_reference": "CTC24091900001",
    ...
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_ak7lHmJ0a2fuD1q4M6b0q",
    "mandate_status": "ACTIVE",
    ...
    "amount": "45.00",
    "recurring": {...},
    "one_time": {...},
    ...
    "debicheck": {...},
    "registered_mandate": {...},
    "debit_order": {...}
  }, ...]
}

List

List mandates loaded on the platform.

Path

GET /mandates/list?{params}

Query Parameters

Field
Type
RequiredDescription
Example
mandate_statusENUMNFilter for a specific mandate status. (ACTIVE,ARCHIVED,CANCELLATION_PENDING,CANCELLATION_REJECTED,CANCELLATION_SUCCESSFUL,DISABLED,GENERATED,NO_REPLY,PENDING,REJECTED,SUSPENDED).ACTIVE
approval_windowENUMNFilter for a specific approval window. Lookups type must be 'approval_window'. Does NOT apply to Registered Mandates. (BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2,DELAYED_REAL_TIME_TT1_APPROVE_BY_20H00_ON_THE_SAME_DAY,MAC_TT3_MESSAGE_AUTHENTICATION_CODE_CARD_AND_PIN,REAL_TIME_TT1_APPROVE_WITHIN_120_SECONDS_CELLPHONE_MUST_MATCH_BANK,REAL_TIME_TT1_APPROVE_WITHIN_120_SECONDS_SENT_TO_BANK_CELLPHONE).BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2
customer_idString(32)NFilter for a specific customer id.cus_q0lJckGcUQptaXODDb7sG
mandate_idString(32)NFilter for a specific mandate id.man_LfUp0ZILHxWRdzZV9ksPt
bank_account_idString(32)NFilter for a specific bank account id.ban_xrf4nxBPH5bwjXIrl6Le5
payment_methods_idString(32)NFilter for a specific payment method id.pam_ak7lHmJ0a2fuD1q4M6b0q
date_startDate(YYYY-MM-DD)NFilter for records that have a created date after this date specified.2024-09-13
date_endDate(YYYY-MM-DD)NFilter for records that have an created date before this specified date2025-04-24
updated_date_startDate(YYYY-MM-DD)NFilter for records that have been updated after this specified date.2024-09-13
updated_date_endDate(YYYY-MM-DD)NFilter for records that have been updated before this specified date.2025-04-24

Response Body

{
  "status": true,
  "results": [{
    "id": "man_LfUp0ZILHxWRdzZV9ksPt",
    "reference": "ABC123",
    "contract_reference": "CTC24091900001",
    "updated_at": null,
    "created_at": "2024-02-27 09:11:23",
    "customer_id": "cus_q0lJckGcUQptaXODDb7sG",
    "bank_account_id": "ban_xrf4nxBPH5bwjXIrl6Le5",
    "payment_methods_id": "pam_ak7lHmJ0a2fuD1q4M6b0q",
    "mandate_status": "ACTIVE",
    "message": "",
    "bank_request_status": "UPDATE_PENDING",
    "cancel_reason": "CONTRACT_EXPIRED",
    "update_reason": "REQUESTED_BY_CUSTOMER",
    "amount": "45.00",
    "payment_industry": "ACCOUNT_REPAYMENT",
    "recurring": {
      "process_day": 1,
      "collection_interval": "MONTHLY",
      "date_release": "2026-05-12"
    },
    "one_time": {
      "process_date": "2024-10-16"
    },
    "debicheck": {
      "first_collection_amount": "50.45",
      "first_collection_amount_excl": "50.45",
      "first_collection_date": "2024-10-16",
      "maximum_collection_amount": "60.00",
      "allow_date_adjustment": true,
      "allow_variable_amount": true,
      "allow_payment_tracking": true,
      "payment_tracking_max_days": 4,
      "adjustment_category": "ANNUALLY",
      "adjustment_type": "RATE",
      "adjustment_rate": "5.12345",
      "adjustment_amount": "0.00",
      "approval_window": "BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2"
    },
    "registered_mandate": {
      "first_collection_amount": "50.45",
      "first_collection_amount_excl": "50.45",
      "first_collection_date": "2024-10-16",
      "maximum_collection_amount": "60.00",
      "allow_date_adjustment": true,
      "allow_variable_amount": true,
      "allow_payment_tracking": true,
      "payment_tracking_max_days": 4
    },
    "debit_order": {
      "mandates": [{
        "created_at": "2025-10-07T06:44:57.697Z",
        "document_url": "https://staging.app.kwik.co.za/1.0/mandates/download?key=mandates/acc_N0Rys3kQcYMLgS52XPMRa/mandate_MANHOD2510070844572665.pdf"
      }, ...]
    }
  }, ...]
}

Response Parameters

Field
RequiredType
Description
Example
idn/aString(32)Record id returnedman_LfUp0ZILHxWRdzZV9ksPt
referenceNString(256)Optional custom reference numberABC123
contract_referenceCString(14)Uniquely identifies the mandate with the bank and will show on bank statements.CTC24091900001
updated_atn/aDate(YYYY-MM-DD HH:mm:ss)When last the record was updated2024-02-27 09:11:23
created_atn/aDate(YYYY-MM-DD HH:mm:ss)When this record was created2024-02-27 09:11:23
customer_idYString(32)Customer IDcus_q0lJckGcUQptaXODDb7sG
bank_account_idYString(32)Bank Account IDban_xrf4nxBPH5bwjXIrl6Le5
payment_methods_idYString(32)Payment Method IDpam_ak7lHmJ0a2fuD1q4M6b0q
mandate_statusn/aENUM(ACTIVE,ARCHIVED,CANCELLATION_PENDING,CANCELLATION_REJECTED,CANCELLATION_SUCCESSFUL,DISABLED,GENERATED,NO_REPLY,PENDING,REJECTED,SUSPENDED)ACTIVE
messagen/aStringMessage related to the mandate status if applicablesome rejection reason
bank_request_statusn/aENUMApplicable to DebiCheck / RM update and cancellation requests. (CANCELLATION_ACCEPTED,CANCELLATION_PENDING,CANCELLATION_REJECTED,CANCELLATION_SUCCESSFUL,UPDATE_ACCEPTED,UPDATE_PENDING,UPDATE_REJECTED).UPDATE_PENDING
cancel_reasonn/aENUM(CANCELLATION_OR_AMENDMENT_REQUESTED_BY_THE_CREDITOR,CONTRACT_EXPIRED,MANDATE_CANCELLATION_DUE_TO_FRAUD,MANDATE_CANCELLED_DUE_TO_EARLY_SETTLEMENT)CONTRACT_EXPIRED
update_reasonn/aENUM(CANCELLATION_OR_AMENDMENT_REQUESTED_BY_INITIATING_PARTY,REQUESTED_BY_CUSTOMER)REQUESTED_BY_CUSTOMER
amountYDecimalThe amount to be collected on the billing day in Rands45.00
payment_industryNENUMUsed by both EFT debit orders and DebiCheck. (ACCOUNT_REPAYMENT,BOND_REPAYMENT,CHARITABLE_OR_RELIGIOUS_CONTRIBUTIONS,H_P__REPAYMENT,INSURANCE_PREMIUM,LOAN_REPAYMENT_OTHER_THAN_MORTGAGE,MEDICAL_AID_FUND_CONTRIBUTION,PENSION_FUND_CONTRIBUTION,RENT_PROPERTY,RENTALLEASE_OTHER_THAN_PROPERTY,SERVICE_CHARGE_MAINTENANCE,SERVICE_CHARGE_VARIABLE_AMOUNTS,UNIT_TRUST_PURCHASE).ACCOUNT_REPAYMENT
recurring.process_dayYIntegerCalendar day on which the collection is to be made. If you choose 31st and the month only has 30 days the collection will be made on the 30th.1
recurring.collection_intervalNENUMHow often this collection should be run. (MONTHLY,YEARLY).MONTHLY
recurring.date_releaseNDate(YYYY-MM-DD)When this mandate is to release or complete2026-05-01
one_time.process_dateNDate(YYYY-MM-DD)Date upon which transaction will be processed once2024-09-30
debicheck.first_collection_amountNDecimalAmount to be collected on the first collection date. Make sure to have a running collection connected to the mandate to receive this first collection amount.50.45
debicheck.first_collection_amount_exclNDecimalFirst collection amount excluding tax.50.45
debicheck.first_collection_dateCDate(YYYY-MM-DD)When the first collection amount is to be collected. If this date is the same as the collection starting date then 2 collections will be attempted on the same day. This first collection date is independent from the recurring collection start date.2024-03-01
debicheck.maximum_collection_amountYDecimalThis is the maximum collection amount allowed for the mandate. This maximum amount may not be more than 1.5 times the instalment amount e.g. if your instalment amount is R 10.00 then your maximum collection amount may not be more than R15.00. Used with re-presented (arrears) collections.60.00
debicheck.allow_date_adjustmentNBooleanUsed by DebiCheck to indicate that collections may be made on billing days other than the day specified on the mandate.true
debicheck.allow_variable_amountNBooleanUsed by DebiCheck to indicate that the amount collected on the billing day may be changed. Must be true when using adjustment category amount/rates.false
debicheck.allow_payment_trackingNBooleanUsed by DebiCheck to allow automated resubmission of failed collections. The collection will be resubmitted up to a maximum amount of days, or until the collection succeeds whichever comes first. Warning: the resubmitted collection becomes disputable.true
debicheck.payment_tracking_max_daysNInteger1 to 10 Days. Maximum amount of days failed collections are to be resubmitted (when in tracking), after the billing day.4
debicheck.adjustment_categoryNENUMUsed by DebiCheck to increase the DebiCheck mandate amount per specified interval e.g. increase collection amount by R 10.00 every year. (ANNUALLY,BIANNUALLY,NEVER,QUARTERLY). See increase API. Not applicable to RM, for RM create a new mandate and disable the previous mandate manually.ANNUALLY
debicheck.adjustment_typeNENUMAmount or rate as a percentage. (AMOUNT,RATE)RATE
debicheck.adjustment_rateNDecimalDetermines the percentage to increase the DebiCheck amount per adjustment category interval e.g 5.12345% per interval5.12345
debicheck.adjustment_amountNDecimalDetermines the amount to increase the DebiCheck amount per adjustment category interval. Either adjustment rate OR adjustment amount must be used when an adjustment category is specified and both may not be specified at the same time0.00
debicheck.approval_windowNENUMDetermines how long the user has to approve the DebiCheck mandate. Does NOT apply to Registered Mandates. (BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2,DELAYED_REAL_TIME_TT1_APPROVE_BY_20H00_ON_THE_SAME_DAY,MAC_TT3_MESSAGE_AUTHENTICATION_CODE_CARD_AND_PIN,REAL_TIME_TT1_APPROVE_WITHIN_120_SECONDS_CELLPHONE_MUST_MATCH_BANK,REAL_TIME_TT1_APPROVE_WITHIN_120_SECONDS_SENT_TO_BANK_CELLPHONE).BATCH_TT2_APPROVE_BY_19H00_ON_DAY_2
registered_mandate.first_collection_amountNDecimalAmount to be collected on the first collection date. Make sure to have a running collection connected to the mandate to receive this first collection amount.50.45
registered_mandate.first_collection_dateCDate(YYYY-MM-DD)When the first collection amount is to be collected. If this date is the same as the collection starting date then 2 collections will be attempted on the same day. This first collection date is independent from the recurring collection start date.2024-03-01
registered_mandate.maximum_collection_amountYDecimalThis is the maximum collection amount allowed for the mandate. This maximum amount may not be more than 1.5 times the instalment amount e.g. if your instalment amount is R 10.00 then your maximum collection amount may not be more than R15.00. Used with re-presented (arrears) collections.60.00
registered_mandate.allow_date_adjustmentNBooleanUsed by RM to indicate that collections may be made on billing days other than the day specified on the mandate.true
registered_mandate.allow_variable_amountNBooleanUsed by RM to indicate that the amount collected on the billing day may be changed. Must be true when using adjustment category amount/rates.false
registered_mandate.allow_payment_trackingNBooleanUsed by RM to allow automated resubmission of failed collections. The collection will be resubmitted up to a maximum amount of days, or until the collection succeeds whichever comes first. Warning: the resubmitted collection becomes disputable.true
registered_mandate.payment_tracking_max_daysNInteger1 to 10 Days. Maximum amount of days failed collections are to be resubmitted (when in tracking), after the billing day.4
debit_order.documents_historyNObjectList of mandate PDF documents created
debit_order.documents_history.created_atNDate(ISO)ISO timestamp when the document was created2025-10-07T06:44:57.697Z
debit_order.documents_history.document_urlNStringPrivate URL link to download the document. Make a GET request to this URL with authorization headers included (to test you can use POSTMAN for example).