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.
WARNINGWhen 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
andbank_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 | Required | Type | Description | Example |
---|---|---|---|---|
batch_reference | N | String(128) | Custom API reference number you may assign to this collection that will also reflect on subsequent transactions. | RFR23011 |
*.customer_id | C | String(32) | Customer id, either the customer_id or customer object is required | cus_abc123... |
*.customer.reference | Y | String(35) | Reference to identify a specific customer | CLN240919000001 |
*.customer.company_name | Y | String(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_name | Y | String(32) | Name of the person to be collected from | John |
*.customer.person_surname | Y | String(32) | Surname of the person to be collected from | Doe |
*.customer.id_type_lookups_id | C | String(32) | Required field for DebiCheck. Lookups ID relating to the type of ID number e.g. South African ID, passport or temporary residence | loo_abc123... |
*.customer.id_number | C | String(13) | Required field for DebiCheck. ID number relating to the ID type | 900112... |
*.customer.email | Y | String(128) | Valid email address of the person to be collected from | johndoe@mail.com |
*.customer.contact_number | N | String(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_1 | N | String(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_2 | N | String(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_town | N | String(64) | City/Town where address lines 1 and 2 are located in. | Pretoria |
*.customer.postal_code | N | Integer | Postal code related to address lines 1 and 2. | 1285 |
*.bank_account_id | C | String(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_name | C | String(30) | Bank account holder name for the bank account to be collected from | J DOE |
*.bank_account.bank_account_number | C | String(17) | Bank account number to be collected from | 10004291601 |
*.bank_account.bank_account_type_lookups_id | C | String(32) | Lookups ID relating to a bank account type e.g. Cheque. | loo_abc123... |
*.bank_account.bank_name_lookups_id | C | String(32) | Lookups ID relating to the bank name of the account number e.g. ABSA | loo_abc123... |
*.bank_account.bank_branch_code | C | Integer | Bank branch code for the account number | 632005 |
*.card.token | C | String(256) | Encrypted card provider token associated with the payment method | 60d678e2465b5b6c4fd5e847ef39c70c4b0c22d1b826f39eb80a107b3b8433ad |
*.pay_in.eft_reference | N | String(20) | EFT Reference used by the customer to make a payment, must be unique and is used for tracking the payment | My EFT Reference |
*.items | N | JSON Object | These items will also appear in the transaction | |
*.items.name | N | String(128) | Order item product name | My product name |
*.items.code | N | String(32) | Order item product code | PROD334 |
*.items.description | N | String(256) | Order item product description | My product name |
*.items.amount | N | Decimal | Order item product amount | 45.00 |
*.mandate_id | C | String(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.amount | Y | Decimal | The amount to be collected on the billing/process day | 45.00 |
*.mandate.recurring.process_day | Y | Integer | Calendar 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_id | N | String(32) | Lookups ID relating to how often this collection should be run e.g. monthly | loo_abc123... |
*.mandate.recurring.date_release | N | Date(YYYY-MM-DD) | When this mandate is to cease / when the contract ends | 2026-05-12 |
*.mandate.one-time.process_date | N | Date(YYYY-MM-DD) | Date upon which transaction will be processed once | 2024-09-30 |
*.mandate.payment_industry_lookups_id | N | String(32) | Lookups ID relating to what type of payment this is for e.g. insurance premium | loo_abc123... |
*.mandate.debicheck.contract_reference | C | String(14) | Required when using DebiCheck. This uniquely identifies the collection. | CTC24091900001 |
*.mandate.debicheck.first_collection_amount | N | Decimal | Amount 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_date | C | Date(YYYY-MM-DD) | Date upon which the first collection amount is to be collected | 2024-10-16 |
*.mandate.debicheck.maximum_collection_amount | Y | Decimal | Required 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_adjustment | N | Boolean | Used 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_amount | N | Boolean | Used 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_tracking | N | Boolean | Used 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_days | N | Integer | 1 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_id | N | String(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 true | loo_abc123... |
*.mandate.debicheck.adjustment_type_lookups_id | N | String(32) | Lookups ID determining the type of adjustment e.g. Rate adjustment | loo_abc123... |
*.mandate.debicheck.adjustment_rate | N | Decimal | Determines the percentage to increase the DebiCheck payment amount per adjustment category interval. | 5.12345 |
*.mandate.debicheck.adjustment_amount | N | Decimal | Determines 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 time | 0.00 |
*.mandate.debicheck.approval_window_lookups_id | N | String(32) | Determines how long the user has to approve the DebiCheck mandate. | loo_abc123... |
*.payment.payment_methods_id | Y | String(32) | ID of the payment method to be used for this collection | pam_abc123... |
*.payment.transaction_reference | N | String(32) | Unique reference for transactions | INV-001234 |
*.payment.amount | Y | Decimal | The 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_start | C | Date | Date to start recurring payments | 2024-10-01 |
*.payment.recurring.date_end | C | Date | Date to end recurring payments, leave blank to stop manually | 2025-09-30 |
*.payment.recurring.process_day | C | Integer | Calendar 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 here | 1 |
*.mandate.one-time.process_date | C | Date(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 | Required | Type | Description | Example |
---|---|---|---|---|
paymentsID | Y | String(32) | Payment record ID returned on submission of the payment | pay_abc123... |
statusLookupsID | Y | String(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.
WARNINGYou 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
andprocess_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 | Required | Can be Cleared | DebiCheck Mandate | Type | Description | Example |
---|---|---|---|---|---|---|
payments_id | Y | - | - | String(32) | Payment record ID | pay_abc123... |
*.payment.amount | N | N | String(32) | The amount to be collected on the billing day | 45.00 | |
*.payment.recurring.date_start | N | N | Date | Date to start recurring payments | 2024-10-01 | |
*.payment.recurring.date_end | N | Y | Date | Date to end recurring payments, leave blank to stop manually | 2025-09-30 | |
*.payment.one-time.process_date | N | N | Date | Unique reference for transactions | INV-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 | Required | Description | Example |
---|---|---|---|---|
payment_status_lookups_id | String(32) | N | Filter for a specific payment status. Lookups type must be 'payment_status'. | loo_abc123... |
bank_account_status_lookups_id | String(32) | N | Filter for a specific bank account status. Lookups type must be 'bank_account_status'. | loo_abc123... |
customer_status_lookups_id | String(32) | N | Filter for a specific customer status. Lookups type must be 'customer_status'. | loo_abc123... |
mandate_status_lookups_id | String(32) | N | Filter for a specific mandate status. Lookups type must be 'mandate_status'. | loo_abc123... |
customer_id | String(32) | N | Filter for a specific customer id. | cus_abc123... |
bank_account_id | String(32) | N | Filter for a specific bank account id. | bac_abc123... |
mandate_id | String(32) | N | Filter for a specific mandate id. | man_abc123... |
payments_id | String(32) | N | Filter for a specific payments id. | pay_abc123... |
payment_methods_id | String(32) | N | Filter for a specific payment method id. | pam_abc123... |
date_start | Date(YYYY-MM-DD) | N | Filter for records that have a created date after this date specified. | 2024-09-13 |
date_end | Date(YYYY-MM-DD) | N | Filter for records that have an created date before this specified date | 2025-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"
}, {
...
}
}
}, ...]
}