Skip to main content

Suppliers

A supplier is a beneficiary, vendor or payee. Preloading suppliers lets you pay with only a supplier code, amount, date and reference — the payment processes against banking details already stored.

Every supplier is identified by a system-generated supplier code: six alphanumeric characters in the form AAA000.

Store the supplier code against your unique reference. When a supplier code is returned, link it in your database to the unique reference you sent. This prevents a later updateSuppliers call from updating the wrong supplier, and prevents duplicate suppliers being created by loadBatch.


addSuppliers

POST {server}/api/payments/v2/addSuppliers

Preloads suppliers so that payments can later be made with loadPayments. This step may be skipped by going directly to loadBatch, which creates suppliers from the payment data.

Skipping it does not prevent later use of the Account Verification Service, but the compulsory AVS fields will then need to be completed manually or through updateSuppliers.

Post fields

NameTypeRequiredDescription
tokenTextYThe signed JWT
testBooleanOSet true when testing. Bypasses billing and only validates the test data
suppliersArrayY1–n of supplier data

Supplier fields

NameTypeRequiredDescription
uniqueReferenceTextYYour unique customer reference identifier
supplierTypeTextYIdentifies the supplier — see listSupplierTypes
nameTextYFirst name of the account holder where the supplier type is Individual; otherwise the entity name
lastNameTextCYSurname of the account holder. Required where supplier type is Individual
groupTextOName of a group to assign the supplier to
cellNumberTextOThe supplier's cellphone number
emailAddressTextOThe supplier's email address, for payment advice
vatNoTextOThe supplier's VAT number
addressLine1addressLine4TextOSupplier address
townTextOSupplier address
postalCodeTextOSupplier address
paymentTypeTextYEFT, Debit Order or Cash — see listPaymentTypes
identificationTypeTextCYSID South African ID · SPP passport number · SBR business registration number · TRN trust number. Required where payment type is EFT
identificationNumberTextCYThe account holder's identity, passport, company registration or trust number. Required where payment type is EFT
bankTextCYThe bank the account is held at — see listBankOptions. Required where payment type is EFT
accountTypeTextCYSee listAccountTypes. Required where payment type is EFT
accountNumberTextCYRequired where payment type is EFT
branchCodeTextCYRequired where payment type is EFT
branchNameTextOThe branch name

Do not duplicate or reuse unique references. Reusing a unique reference can cause a later update to be applied to the wrong supplier.

Response

NameTypeRequiredDescription
jtiTextYThe unique JWT ID
statusTextYNumber of suppliers imported
suppliersArrayY1–n of supplier results

Per supplier:

NameTypeRequiredDescription
uniqueReferenceTextYYour unique customer reference identifier
statusTextYSuccess or Failed
messageTextOFailure reason, where status is Failed
supplierCodeTextNReturned where the status is Success, or where a supplier already exists. Alphanumeric, format AAA000

Example

{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"suppliers": [
{
"uniqueReference": "Ref1",
"supplierType": "Individual",
"name": "Joe",
"lastName": "Soap",
"group": "Test",
"cellNumber": "0823456789",
"emailAddress": "joesoap@example.com",
"addressLine1": "21 Jump Street",
"addressLine2": "Newlands",
"town": "Cape Town",
"postalCode": "7979",
"paymentType": "EFT",
"identificationType": "SID",
"identificationNumber": "7410025102082",
"bank": "Standard Bank",
"accountType": "Cheque",
"accountNumber": "700000000",
"branchCode": "051001"
}
]
}
{
"jti": "{UNIQUE VALUE}",
"status": "1 of 2 suppliers imported",
"suppliers": [
{ "reference": "Ref1", "status": "Success", "supplierCode": "JOE002" },
{
"reference": "Ref2",
"status": "Failed",
"message": "Unique reference already exists",
"supplierCode": "RON001"
}
]
}

The response example returns reference where the field table specifies uniqueReference — see known issues.


updateSuppliers

POST {server}/api/payments/v2/updateSuppliers

Only the supplier code is required. Any additional field provided will be updated.

Post fields

NameTypeRequiredDescription
tokenTextYThe signed JWT
suppliersArrayY1–n of account data

Supplier fields

supplierCode is required. The remaining fields are as for addSuppliers, and only those supplied are changed.

NameTypeRequiredDescription
supplierCodeTextYThe system's six-character alphanumeric supplier code
uniqueReferenceTextYYour unique customer reference identifier
supplierTypeTextYSee listSupplierTypes
nameTextYAs for addSuppliers
lastNameTextCYRequired where supplier type is Individual
group, cellNumber, emailAddress, vatNo, address fields, branchNameTextOAs for addSuppliers
paymentTypeTextYEFT, Debit Order or Cash
identificationType, identificationNumber, bank, accountType, accountNumber, branchCodeTextCYRequired where payment type is EFT

Do not change, duplicate or reuse unique references when updating. Doing so may result in the wrong supplier's data being updated.

Response

NameTypeRequiredDescription
jtiTextYThe unique JWT ID
statusTextYProcessed
suppliersArrayY1–n of status results

Per supplier: supplierCode, status (Success or Failed), and message where failed.


listSuppliers

POST {server}/api/payments/v2/listSuppliers

Returns stored supplier details. Supplying supplierCodes restricts the result to those suppliers.

Post fields

NameTypeRequiredDescription
tokenTextYThe signed JWT
supplierCodesArrayOArray of six-character alphanumeric supplier codes

Result fields

NameTypeRequiredDescription
supplierCodeTextYThe system's six-character alphanumeric supplier code
supplierTypeTextYIdentifies the supplier
nameTextYFirst name where the supplier type is Individual; otherwise the entity name
lastNameTextCYSurname, where supplier type is Individual
uniqueReferenceTextYYour unique customer reference identifier
groupTextOThe assigned group
identificationTypeTextCYThe supplier identification type
identificationNumberTextCYThe supplier identity number
cellNumberTextOThe supplier's cellphone number
emailAddressTextOThe supplier's email address for payment advice
vatNoTextOVAT number
addressLine1addressLine4, town, postalCodeTextOSupplier address
paymentTypeTextYSupplier payment type
bank, accountType, accountNumber, branchCodeTextCYBanking details
branchNameTextOThe branch name
messageTextOReturned for invalid supplier codes

Example

{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"supplierCodes": ["ABC001", "ABC002", "ABC003"]
}

A supplier code that does not exist is returned with a message of Does not exist rather than causing the call to fail.