Specification

Payments

Payments API calls

Used with Pay-in, EFT Debit Order, DebiCheck and Card payment methods to create one-time or recurring payments.

Submit

Submit a new payment request for processing.

WARNING

When submitting DebiCheck payments with a new mandate you need to retrieve the mandate after submission and ensure that the client has accepted the mandate before any payments will run.

If the client rejects the mandate or the bank declined the mandate you will have to re-submit the mandate when using TT1 approval window or create a new payment.

Path

POST /payments/submit

Request Body

Note:

  • Parameters under debicheck, pay_in, card and bank_account are conditional based on the payment method chosen.
  • The items parameter is optional, if set then the values will be available in the transaction records

Example request with all the payment method parameters

{
  "batch_reference": "RFR23011",
  "payments": [{
      // either pass the customer_id or the customer object
      "customer_id": "cus_abc123...",
      // create a new customer
      "customer": {
        "reference": "CLN240919000001",
        "company_name": null,
        "person_name": "John",
        "person_surname": "Doe",
        "id_type_lookups_id": "loo_abc123...",
        "id_number": "900112....",
        "email": "johndoe@mail.com",
        "contact_number": "+27831234567",
        "billing_address_line_1": "145 Superior Complex",
        "billing_address_line_2": "541 New River Road",
        "city_or_town": "Pretoria",
        "postal_code": 1285,
      },

      // either pass the bank_account_id or the bank_account object
      // must be linked to customer_id when used
      "bank_account_id": "ban_abc123...",
      // create a new bank account
      "bank_account": {
        "bank_account_holder_name": "J DOE",
        "bank_account_number": "10004291601",
        "bank_account_type_lookups_id": "loo_abc123...",
        "bank_name_lookups_id": "loo_abc123...",
        "bank_branch_code": 632005
      },

      // parameter for card payment methods
      "card": {
        "token": "60d678e2465b5b6c4fd5e847ef39c70c4b0c22d1b826f39eb80a107b3b8433ad",
      },

       // parameter for pay-in payment methods
      "pay_in": {
        "eft_reference": "My EFT Reference",
      },

      // optional: cart or invoice items to store in transactions
      "items": {
        "item_1": {
          "name": "My product name",
          "code": "PROD334",
          "description": "My product description",
          "amount": "45.00"
        }, {
          ...
        }
      },

      // either pass the mandate_id or the mandate object
      // must be linked to bank_account_id when used
      "mandate_id": "man_abc123...",
      // create a new mandate
      "mandate": {
        "amount": "45.00",
        // required for recurring payments
        "recurring": {
          "process_day": 1,
          "payment_interval_lookups_id": "loo_abc123...",
          "date_release": "2026-05-12"
        },
        // required for one-time payments
        "one-time": {
          "process_date": "2024-10-25"
        },
        // required if Payment method is DebiCheck or EFT Debit Order
        "payment_industry_lookups_id": "loo_abc123...",
        // required if Payment Method is DebiCheck
        "debicheck": {
          "contract_reference": "CTC24091900001",
          "first_collection_amount": "50.45",
          "first_collection_date": "2024-10-16",
          "maximum_collection_amount": "60.00",
          "allow_date_adjustment": true,
          // required when using adjustment category
          "allow_variable_amount": true,
          "allow_payment_tracking": true,
          "payment_tracking_max_days": 4,
          "adjustment_category_lookups_id": "loo_abc123...",
          "adjustment_type_lookups_id": "loo_abc123...",
          "adjustment_rate": "5.12345",
          "adjustment_amount": "0.00",
          "approval_window_lookups_id": "loo_abc123..."
        }
      },

      "payment": {
        "payment_methods_id": "pam_abc123...",
        // transaction reference for one-time payments
        "transaction_reference": "INV0045",
        // could be used with DebiCheck mandates that have variable amount for example
        "amount": "45.00",

        // create a recurring payment
        "recurring": {
          // can be different from mandate if allow 'allow_date_adjustment' is true with DebiCheck for example
          "process_day": 1,
          "date_start": "2024-10-01",
          "date_end": "2025-09-30",
        },
        // this could also be used to create a one-time payment from a recurring mandate (re-using the mandate)
        "one-time": {
          "process_date": "2024-10-25"
        },
      }
    }, {
    ...
  }]
}

Request Parameters

Field
RequiredType
Description
Example
batch_referenceNString(128)Custom API reference number you may assign to this collection that will also reflect on subsequent transactions.RFR23011
*.customer_idCString(32)Customer id, either the customer_id or customer object is requiredcus_abc123...
*.customer.referenceYString(35)Reference to identify a specific customerCLN240919000001
*.customer.company_nameYString(64)Either a company name OR person name and surname must be provided. Company name is used when collection is made from a specific company. Company name is NOT supported by DebiCheck payments.Superior Meteor Corp
*.customer.person_nameYString(32)Name of the person to be collected fromJohn
*.customer.person_surnameYString(32)Surname of the person to be collected fromDoe
*.customer.id_type_lookups_idCString(32)Required field for DebiCheck. Lookups ID relating to the type of ID number e.g. South African ID, passport or temporary residenceloo_abc123...
*.customer.id_numberCString(13)Required field for DebiCheck. ID number relating to the ID type900112...
*.customer.emailYString(128)Valid email address of the person to be collected fromjohndoe@mail.com
*.customer.contact_numberNString(16)Mobile contact number of the person to be collected from. Must include the area code. Required for 'DebiCheck TT1 realtime approval within 3 minutes' approval windows.+27831234567
*.customer.billing_address_line_1NString(128)First line of address for the person to be collected from. Should be the street address if no complex number is applicable.145 Superior Complex
*.customer.billing_address_line_2NString(128)Second line of address for the person to be collected from. Should be the street address if a complex was used on line 1.541 New River Road
*.customer.city_or_townNString(64)City/Town where address lines 1 and 2 are located in.Pretoria
*.customer.postal_codeNIntegerPostal code related to address lines 1 and 2.1285
*.bank_account_idCString(32)Bank account id, either the bank_account_id or bank_account object is required. Must be linked to the customer_id when used.J DOE
*.bank_account.bank_account_holder_nameCString(30)Bank account holder name for the bank account to be collected fromJ DOE
*.bank_account.bank_account_numberCString(17)Bank account number to be collected from10004291601
*.bank_account.bank_account_type_lookups_idCString(32)Lookups ID relating to a bank account type e.g. Cheque.loo_abc123...
*.bank_account.bank_name_lookups_idCString(32)Lookups ID relating to the bank name of the account number e.g. ABSAloo_abc123...
*.bank_account.bank_branch_codeCIntegerBank branch code for the account number632005
*.card.tokenCString(256)Encrypted card provider token associated with the payment method60d678e2465b5b6c4fd5e847ef39c70c4b0c22d1b826f39eb80a107b3b8433ad
*.pay_in.eft_referenceNString(20)EFT Reference used by the customer to make a payment, must be unique and is used for tracking the paymentMy EFT Reference
*.itemsNJSON ObjectThese items will also appear in the transaction
*.items.nameNString(128)Order item product nameMy product name
*.items.codeNString(32)Order item product codePROD334
*.items.descriptionNString(256)Order item product descriptionMy product name
*.items.amountNDecimalOrder item product amount45.00
*.mandate_idCString(32)Mandate id, either the mandate_id or mandate object is required. Must be linked to the bank_account_id when used.pam_abc123...
*.mandate.amountYDecimalThe amount to be collected on the billing/process day45.00
*.mandate.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
*.mandate.recurring.payment_interval_lookups_idNString(32)Lookups ID relating to how often this collection should be run e.g. monthlyloo_abc123...
*.mandate.recurring.date_releaseNDate(YYYY-MM-DD)When this mandate is to cease / when the contract ends2026-05-12
*.mandate.one-time.process_dateNDate(YYYY-MM-DD)Date upon which transaction will be processed once2024-09-30
*.mandate.payment_industry_lookups_idNString(32)Lookups ID relating to what type of payment this is for e.g. insurance premiumloo_abc123...
*.mandate.debicheck.contract_referenceCString(14)Required when using DebiCheck. This uniquely identifies the collection.CTC24091900001
*.mandate.debicheck.first_collection_amountNDecimalAmount to be collected on the very first billing day for DebiCheck. This would be your instalment amount plus any fee which you may require e.g. if your payment amount is R 10.00 and you require a R 5.00 fee to be processed on the first billing run then your first collection amount would be R 15.00.50.45
*.mandate.debicheck.first_collection_dateCDate(YYYY-MM-DD)Date upon which the first collection amount is to be collected2024-10-16
*.mandate.debicheck.maximum_collection_amountYDecimalRequired by DebiCheck. This is the maximum collection amount allowed for the mandate. This maximum amount may not be more than 1.5 times the payment amount e.g. if your payment amount is R 10.00 then your maximum collection amount may not be more than R15.00.60.00
*.mandate.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
*.mandate.debicheck.allow_variable_amountNBooleanUsed by DebiCheck to indicate that the amount collected on the billing day may differ from the mandate payment amount as long as it is less than the maximum collection amount.false
*.mandate.debicheck.allow_payment_trackingNBooleanUsed by DebiCheck to allow resubmission of a payment should the payment fail on the collection day. The payment will be resubmitted up to a maximum amount of days, or until the payment succeeds whichever comes first. Warning: this resubmitted payment becomes disputable.true
*.mandate.debicheck.payment_tracking_max_daysNInteger1 to 10 Days. Used by payment tracking specified above to defined the maximum amount of days a resubmission is allowed after the billing day.4
*.mandate.debicheck.adjustment_category_lookups_idNString(32)Used by DebiCheck to adjust the mandate payment amount per specified interval e.g. increase payment amount by R 10.00 every year. Only allowed when 'allow_variable_amount' is set to trueloo_abc123...
*.mandate.debicheck.adjustment_type_lookups_idNString(32)Lookups ID determining the type of adjustment e.g. Rate adjustmentloo_abc123...
*.mandate.debicheck.adjustment_rateNDecimalDetermines the percentage to increase the DebiCheck payment amount per adjustment category interval.5.12345
*.mandate.debicheck.adjustment_amountNDecimalDetermines the amount to increase the DebiCheck payment 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
*.mandate.debicheck.approval_window_lookups_idNString(32)Determines how long the user has to approve the DebiCheck mandate.loo_abc123...
*.payment.payment_methods_idYString(32)ID of the payment method to be used for this collectionpam_abc123...
*.payment.transaction_referenceNString(32)Unique reference for transactionsINV-001234
*.payment.amountYDecimalThe amount to be collected on the billing/process day for the payment. Used for DebiCheck mandates with a variable amount for example.45.00
*.payment.recurring.date_startCDateDate to start recurring payments2024-10-01
*.payment.recurring.date_endCDateDate to end recurring payments, leave blank to stop manually2025-09-30
*.payment.recurring.process_dayCIntegerCalendar 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. Can differ from the mandate in the case of DebiCheck you could specify 'allow_date_adjustment' and then define a different process day here1
*.mandate.one-time.process_dateCDate(YYYY-MM-DD)Date upon which payment will be processed once. Can be used to create one-time payments from a recurring mandate as well.2024-09-30

Response Body

{
  "status": true,
  "payments": [{
    "payments_id": "pay_abc123...",
    "deleted_at": null,
    "updated_at": null,
    "created_at": "2024-02-27 09:11:23",
    "batch_reference": "RFR23011",
    "customer_id": "cus_abc123...",
    "customer": {
      ...
    },
    "bank_account_id": "ban_abc123...",
    "bank_account": {
      ...
    },
    "mandate_id": "man_abc123...",
    "mandate": {
      "amount": "45.00",
      ...
    },
    "pay_in": {
      ...
    },
    "items": {
      ...
    },
    "payment": {
      "amount": "45.00",
      "payment_methods_id": "pam_abc123...",
      "transaction_reference": "INV0045",
      "payment_status_lookups_id": "loo_abc123...",
      "recurring": { 
        ...
      },
      "one-time": {
        ...
      },
    },
  }]
}

Response Parameters

The response follows the same format as the list response

Examples

Company bank accounts can not be processed via a DebiCheck payment methods, EFT Debit Order or RM must be used for business accounts.

DebiCheck

Below is an example of how to submit a recurring DebiCheck mandate where you control the batch yourself.

{
  "batch_reference": "RFR25051",
  "payments": [{
      "customer_id": "cus_abc123...",
      "bank_account_id": "ban_abc123...",  
      "mandate": {
        "amount": "45.00",
        "recurring": {
          "process_day": 1,
          "payment_interval_lookups_id": "loo_abc123...",
          "date_release": "2026-05-12"
        },
        "payment_industry_lookups_id": "loo_abc123...",
        "debicheck": {
          "contract_reference": "CTC24091900001",
          "maximum_collection_amount": "60.00",
          "allow_date_adjustment": true,
          "allow_variable_amount": false,
          "allow_payment_tracking": false,
          "approval_window_lookups_id": "loo_abc123..."
        }
      },
      "payment": {
        "amount": "45.00",
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0045",
        "one-time": {
          "process_date": "2025-05-01"
        },
      }
    }, {
    ...
  }]
}

Subsequent submissions will look like this:

{
  "batch_reference": "RFR25061",
  "payments": [{
      "customer_id": "cus_abc123...",
      "bank_account_id": "ban_abc123...",  
      "mandate_id": "man_abc123...",
      "payment": {
        "amount": "45.00",
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0046",
        "one-time": {
          "process_date": "2025-06-01"
        },
      }
    }, {
    ...
  }]
}

Below is an example of automated recurring DebiCheck payments:

{
  "batch_reference": "RFR25052",
  "payments": [{
      "customer_id": "cus_abc123...",
      "bank_account_id": "ban_abc123...",  
      "mandate": {
        "amount": "45.00",
        "recurring": {
          "process_day": 1,
          "payment_interval_lookups_id": "loo_abc123...",
          "date_release": "2026-05-02"
        },
        "payment_industry_lookups_id": "loo_abc123...",
        "debicheck": {
          "contract_reference": "CTC24091900001",
          "first_collection_amount": "50.45",
          "first_collection_date": "2025-05-01",
          "maximum_collection_amount": "60.00",
          "allow_date_adjustment": true,
          // required when using adjustment category
          "allow_variable_amount": true,
          "allow_payment_tracking": true,
          "payment_tracking_max_days": 4,
          "adjustment_category_lookups_id": "loo_abc123...",
          "adjustment_type_lookups_id": "loo_abc123...",
          "adjustment_rate": "5.12345",
          "adjustment_amount": "0.00",
          "approval_window_lookups_id": "loo_abc123..."
        }
      },
      "payment": {
        "amount": "45.00",
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0030",
        "recurring": {
          "process_day": 1,
          "date_start": "2025-01-01",
          "date_end": "2026-05-02",
        },
      }
    }, {
    ...
  }]
}

Below is an example of a fixed one-off DebiCheck payment:

{
  "batch_reference": "RFR25053",
  "payments": [{
      "customer_id": "cus_abc123...",
      "bank_account_id": "ban_abc123...",  
      "mandate": {
        "amount": "45.00",
        "one-time": {
          "process_date": "2025-05-16"
        },
        "payment_industry_lookups_id": "loo_abc123...",
        "debicheck": {
          "contract_reference": "CTC24091900001",
          "maximum_collection_amount": "60.00",
          "approval_window_lookups_id": "loo_abc123..."
        }
      },
      "payment": {
        "amount": "45.00",
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0031",
        "one-time": {
          "process_date": "2025-05-16"
        },
      }
    }, {
    ...
  }]
}

EFT Debit Order

Below is an example of submitting an EFT Debit Order where the customer and mandate details are not already on the system. This is used if you want to submit recurring debit orders.

{
  "batch_reference": "RFR23011",
  "payments": [{
      "customer": {
        "reference": "CLN240919000001",
        "person_name": "John",
        "person_surname": "Doe",
        "email": "johndoe@mail.com",
        "contact_number": "+27831234567",
      },

      "bank": {
        "bank_account_holder_name": "J DOE",
        "bank_account_number": "10004291601",
        "bank_account_type_lookups_id": "loo_abc123...",
        "bank_name_lookups_id": "loo_abc123...",
        "bank_branch_code": 632005
      },

      "mandate": {
        "amount": "45.00",
        "recurring": {
          "process_day": 1,
          "payment_interval_lookups_id": "loo_abc123..."
        },
        "payment_industry_lookups_id": "loo_abc123...",
      },
      "payment": {
        "amount": "45.00",
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0045",
        "recurring": {
          "date_start": "2024-10-01",
          "date_end": "2025-09-30",
        },
      },
    }]
}

Below is an example of a fixed one-time EFT Debit Order payment:

{
  "batch_reference": "RFR25056",
  "payments": [{
      "customer_id": "cus_abc123...",
      "bank_account_id": "ban_abc123...",  
      "mandate": {
        "amount": "45.00",
        "one-time": {
          "process_date": "2025-05-16"
        },
        "payment_industry_lookups_id": "loo_abc123..."
      },
      "payment": {
        "amount": "45.00",
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0021",
        "one-time": {
          "process_date": "2025-05-16"
        },
      }
    }, {
    ...
  }]
}

Below is an example of controlling recurring mandate EFT Debit Orders yourself:

{
  "batch_reference": "RFR23011",
  "payments": [{
      "customer": {
        "reference": "CLN240919000001",
        "person_name": "John",
        "person_surname": "Doe",
        "email": "johndoe@mail.com",
        "contact_number": "+27831234567",
      },

      "bank": {
        "bank_account_holder_name": "J DOE",
        "bank_account_number": "10004291601",
        "bank_account_type_lookups_id": "loo_abc123...",
        "bank_name_lookups_id": "loo_abc123...",
        "bank_branch_code": 632005
      },

      "mandate": {
        "amount": "45.00",
        "recurring": {
          "process_day": 16,
          "payment_interval_lookups_id": "loo_abc123..."
        },
        "payment_industry_lookups_id": "loo_abc123...",
      },
      "payment": {
        "amount": "45.00",
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0045",
        "one-time": {
          "process_date": "2025-05-16"
        },
      },
    }]
}

Subsequent submissions might look like this:

{
  "batch_reference": "RFR23021",
  "payments": [{
      "customer_id": "cus_abc123...",
      "bank_account_id": "ban_abc123...",
      "mandate_id": "man_abc123...",
      "payment": {
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0046",
        "one-time": {
          "process_date": "2025-06-16"
        },
      },
    }]
}

Card Payment

Below is an example of a card payment request. Multiple card tokens can be created and loaded either as a recurring payment or as a one-time payment.

{
  "batch_reference": "RFR23011",
  "payments": [{
      "customer_id": "cus_abc123...",
      "card": {
        "token": "60d678e2465b5b6c4fd5e847ef39c70c4b0c22d1b826f39eb80a107b3b8433ad"
      },
      // optional items of invoice
      "items": {
        "item_1": {
          "name": "My product name",
          "code": "PROD334",
          "description": "My product description",
          "amount": "45.00"
        }, {
          ...
        }
      },

      "payment": {
        "amount": "45.00",
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0045",
        "one-time": {
          "process_date": "2024-10-25"
        },
      }
    }, {
    ...
  }]
}

Pay-in

Below is an example of a pay-in payment request. When submitting this POST request you you will receive a response back with the payment status: Waiting for payment. Once the customer makes a manual EFT payment into the payment method bank account using the pay_in.eft_reference the transaction status will be marked as paid and a webhook will be triggered with the transaction information.

If multiple bank accounts are used then multiple payment methods should be created, each for every bank account to pay into. The bank accounts to pay in can be viewed under the payment method's payments parameter.

{
  "batch_reference": "RFR23011",
  "payments": [{
      "customer": {
        "reference": "CLN240919000001",
        "company_name": null,
        "person_name": "John",
        "person_surname": "Doe",
        "email": "johndoe@mail.com",
        "contact_number": "+27831234567",
      },
      "pay_in": {
        "eft_reference": "My EFT Reference",
      },
      "payment": {
        "amount": "45.00",
        "payment_methods_id": "pam_abc123...",
        "transaction_reference": "INV0045",
      },
    }, {
    ...
  }]
}

Update Payment Status

Update the status of an existing payment record. To update the customer, bank account or mandate use the relevant API call.

Path

POST /payments/status/:paymentsID/:statusLookupsID

Query Parameters

Field
RequiredType
Description
Example
paymentsIDYString(32)Payment record ID returned on submission of the paymentpay_abc123...
statusLookupsIDYString(32)The lookups 'payment_status' status to set the payment to. One-time payments can only be cancelled. Recurring payments can be stopped, paused, cancelled or set to running.pay_abc123...

Response Body

{
  "status": true,
}

Update Payment Details

Update the details of an existing payment record. To update the customer, bank account or mandate use the relevant API call.

WARNING

You can not convert a recurring payment to a one-time payment or vice versa.

amount changes will only reflect on new transactions created. If a transaction is already in the process of being sent to the bank (for this payment) the amount of that transaction will not get updated.

date_start and process_date can not be amended if a transaction has already been logged for this payment.

Path

POST /payments/update

Example request with all the payment method parameters

Optional variables can be cleared by passing in null.

{
  "payments": [{
      "payments_id": "pay_abc123...",
      "amount": "45.00",
      "recurring": {
        "date_start": "2024-10-01",
        "date_end": "2025-09-30",
      },
      "one-time": {
        "process_date": "2024-10-01",
      }
    }, {
    ...
  }]
}

Request Parameters

Field
RequiredCan be ClearedDebiCheck MandateType
Description
Example
payments_idY--String(32)Payment record IDpay_abc123...
*.payment.amountNNString(32)The amount to be collected on the billing day45.00
*.payment.recurring.date_startNNDateDate to start recurring payments2024-10-01
*.payment.recurring.date_endNYDateDate to end recurring payments, leave blank to stop manually2025-09-30
*.payment.one-time.process_dateNNDateUnique reference for transactionsINV-001234

Response Body

{
  "status": true,
  "payments": [{
    "payments_id": "pay_abc123...",
    "amount": "45.00",
    "recurring": {
      ...
    },
    "one-time": {
       ...
    }
  }]
}

List

List current one-time or recurring payments loaded on the platform.

Path

GET /payments/list?{params}

Query Parameters

Field
Type
RequiredDescription
Example
payment_status_lookups_idString(32)NFilter for a specific payment status. Lookups type must be 'payment_status'.loo_abc123...
bank_account_status_lookups_idString(32)NFilter for a specific bank account status. Lookups type must be 'bank_account_status'.loo_abc123...
customer_status_lookups_idString(32)NFilter for a specific customer status. Lookups type must be 'customer_status'.loo_abc123...
mandate_status_lookups_idString(32)NFilter for a specific mandate status. Lookups type must be 'mandate_status'.loo_abc123...
customer_idString(32)NFilter for a specific customer id.cus_abc123...
bank_account_idString(32)NFilter for a specific bank account id.bac_abc123...
mandate_idString(32)NFilter for a specific mandate id.man_abc123...
payments_idString(32)NFilter for a specific payments id.pay_abc123...
payment_methods_idString(32)NFilter for a specific payment method id.pam_abc123...
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

Response Body

{
  "status": true,
  "payments": [{
    "payments_id": "pay_abc123...",
    "deleted_at": null,
    "updated_at": "2024-02-02 15:00:45",
    "created_at": "2024-02-02 15:00:45",
    "batch_reference": "RFR23011",
    "payment_status_lookups_id": "loo_...",
    "payment_failed_at": "2024-02-03 15:00:45",
    "payment_failed_at_reason": "No such account",

    "customer_id": "cus_abc123...",
    "customer": {
      "reference": "CLN240919000001",
      "company_name": null,
      "person_name": "John",
      "person_surname": "Doe",
      "id_type_lookups_id": "loo_abc123...",
      "id_number": "900112....",
      "email": "johndoe@mail.com",
      "contact_number": "+27831234567",
      "billing_address_line_1": "145 Superior Complex",
      "billing_address_line_2": "541 New River Road",
      "city_or_town": "Pretoria",
      "postal_code": 1285,
    },

    "bank_account_id": "ban_abc123...",
    "bank_account": {
      "bank_account_holder_name": "J DOE",
      "bank_account_number": "10004291601",
      "bank_account_type_lookups_id": "loo_abc123...",
      "bank_name_lookups_id": "loo_abc123...",
      "bank_branch_code": 632005
    },

    "mandate_id": "man_abc123...",
    "mandate": {
      "amount": "45.00",
      "recurring": {
        "process_day": 1,
        "payment_interval_lookups_id": "loo_abc123...",
        "date_release": "2026-05-12"
      },
      "one-time": {
        "process_date": "2024-10-25"
      },
      "payment_industry_lookups_id": "loo_abc123...",
      "debicheck": {
        "contract_reference": "CTC24091900001",
        "first_collection_amount": "50.45",
        "first_collection_date": "2024-10-16",
        "maximum_collection_amount": "60.00",
        "allow_date_adjustment": true,
        "allow_variable_amount": false,
        "allow_payment_tracking": true,
        "payment_tracking_max_days": 4,
        "adjustment_category_lookups_id": "loo_abc123...",
        "adjustment_type_lookups_id": "loo_abc123...",
        "adjustment_rate": "5.12345",
        "adjustment_amount": "0.00",
        "approval_window_lookups_id": "loo_abc123..."
      }
    },

    "pay_in": {
      "eft_reference": "My EFT Reference",
    },

    "payment": {
      "payment_methods_id": "pam_abc123...",
      "transaction_reference": "INV0045",
      "amount": "45.00",
      "recurring": {
        "process_day": 1,
        "date_start": "2024-10-01",
        "date_end": "2025-09-30",
      },
      "one-time": {
        "process_date": "2024-10-25"
      },
    },

    "items": {
      "item_1": {
        "name": "My product name",
        "code": "PROD334",
        "description": "My product description",
        "amount": "45.00"
      }, {
        ...
      }
    }
  }, ...]
}

Copyright © 2024 Kwik