DeltaPay Bulk Payment Import CSV Specification
1. Purpose
This CSV format is used to submit bulk payment instructions into DeltaPay.
It supports the following payment routes:
- DELTA: DeltaPay to DeltaPay payments
- EPS: EPS fast payments (below E50,000)
- BANK: bank transfer payments, typically for payments above E50,000
Each CSV row represents exactly one payment instruction.
2. File format
- File type: CSV
- Encoding: UTF-8
- Delimiter: comma (, )
- First row: header row required
- One payment instruction per row
- Empty values should be left blank
- Do not include formulas or multiple values in one cell
General rules
- Column names must match the specification exactly
- Amounts must use a decimal point, for example
1500.00(Maximum of two decimal points) - No currency column is included; all amounts are assumed to be SZL / E
- Values are case-sensitive and must match exactly
- No abbreviations or alternative spellings are allowed
- Any value outside this list will result in validation failure
Phone number format
All phone numbers in the CSV must
- be in international format without the "+" symbol
- contain country code + number
- contain digits only (no spaces, dashes, or brackets)
Example
Validation behaviour
File-level validation
- Invalid CSV format → entire file rejected
- Missing required headers → entire file rejected
Row-level validation
- Invalid rows are rejected individually
- Valid rows are still processed (partial success allowed)
- Only fields relevant to the selected
payment_methodmay be populated - Any unrelated field being non-empty must result in validation failure
Whitespace
- No leading or trailing whitespace allowed
- Empty strings and whitespace-only values are treated as empty
3. High-level design
The file uses one required routing field:
payment_method
Allowed values:
DELTAEPSBANK
This determines which recipient fields are required for that row.
4. Column specification
4.1 Common columns
These columns apply to all rows.
| Column | Required | Type | Description |
|---|---|---|---|
payment_method |
Yes | enum | One of DELTA, EPS, BANK |
amount |
Yes | decimal | Payment amount in SZL |
note |
No | string | Human-readable payment note |
client_reference |
No but strongly recommended | string | Free-form external reference or JSON system for reconciliation and idempotency |
Note: ** The
client_referenceshould be globally unique accross all transactions past, current, and future (e.g. 64 character uuid)
Amount validation
- Must be greater than
0 - Maximum of 2 decimal places
- Must not exceed system or regulatory limits
- For
EPS, must be<= 50,000 - For
BANK, must be> 50,000(if you want strict routing separation)
- For
4.2 DELTA recipient columns
These columns are used only when payment_method = DELTA.
Exactly one of the following must be provided:
delta_recipient_account_iddelta_recipient_usernamedelta_recipient_phone_number
| Column | Required for DELTA | Type | Description |
|---|---|---|---|
delta_recipient_account_id |
Conditionally | string | DeltaPay account ID |
delta_recipient_username |
Conditionally | string | DeltaPay username |
delta_recipient_phone_number |
Conditionally | string | DeltaPay phone number |
transaction_type |
No but recommended | string | Source-defined transaction type, preferably populated for DeltaPay processing |
The transaction_type field is optional but strongly recommended for DELTA payments.
The following values are allowed for bulk upload:
incomegroceriestransportationrentutilitieshealthcareeducationairtimeclothinghouseholdentertainmentbusinesstaxessavingseating_outdeceasedother
If not provided, it will deafult to income.
4.3 EPS recipient columns
These columns are used only when payment_method = EPS.
Exactly one of the following must be provided:
eps_recipient_account_numbereps_recipient_phone_number
| Column | Required for EPS | Type | Description |
|---|---|---|---|
eps_recipient_agent_id |
Yes | string | EPS agent / institution identifier |
eps_recipient_account_number |
Conditionally | string | Recipient bank account or wallet account number |
eps_recipient_phone_number |
Conditionally | string | Recipient mobile number |
For EPS rows:
Note: The amount must be less than or equal to E50,000, subject to DeltaPay and EPS validation rules
The eps_recipient_agent_id must be a valid National Payment Switch participant identifier as defined by the Central Bank of Eswatini.
According to the National Payment Switch Participant Identification document (v1.5) , the following identifiers are supported:
Banks
103001— Eswatini Bank103002— First National Bank103003— Nedbank103004— Standard Bank103005— Swaziland Building Society103006— Central Bank of Eswatini
Mobile Wallet Providers
203001— Eswatini Mobile203002— InstaCash203003— MTN203004— Standard Bank (Unayo)203005— Swaziland Building Society203006— DeltaPay
4.4 BANK recipient columns
These columns are used only when payment_method = BANK.
| Column | Required for BANK | Type | Description |
|---|---|---|---|
bank_recipient_account_holder |
Yes | string | Name of the bank account holder |
bank_recipient_account_number |
Yes | string | Bank account number |
bank_recipient_bank_code |
Yes | string | Bank identifier from a DeltaPay-supported enum / reference list |
bank_recipient_branch_code |
Yes | string | Branch code |
The bank_recipient_bank_code field must use one of the following exact values:
FNB_SZ— First National BankSTB_SZ— Standard BankNED_SZ— NedbankESW_SZ— Eswatini Bank
5. Header definition
The recommended full CSV header is:
payment_method,amount,note,client_reference,transaction_type,delta_recipient_account_id,delta_recipient_username,delta_recipient_phone_number,eps_recipient_agent_id,eps_recipient_account_number,eps_recipient_phone_number,bank_recipient_account_holder,bank_recipient_account_number,bank_recipient_bank_code,bank_recipient_branch_code
5.1 DELTA row
Must populate:
payment_method = DELTAamount- exactly one DELTA recipient field
Must leave blank:
- all EPS fields
- all BANK fields
5.2 EPS row
Must populate:
payment_method = EPSamounteps_recipient_agent_id- exactly one of
eps_recipient_account_numberoreps_recipient_phone_number
Must leave blank:
- all DELTA fields
- all BANK fields
5.3 BANK row
Must populate:
payment_method = BANKamount- all BANK recipient fields
Must leave blank:
- all DELTA fields
- all EPS fields