Skip to main content

Architecture

High level overview

The Banking service in a nutshell really just a service which takes JSON and converts it into a TEXT file which ABSA processes with COBOL. Requests come in via a RESTful api call or consumed by a kafka topic and queued to be processed. Requests can either be an EFT or a Debit Order.

ABSA workflow

When requests are submitted to ABSA, each request is given a generation number, a sequence number and shoved onto a document with a transmission number.

generation number - An integer that increments sequentially with each request submitted. It starts at 1 and goes to 9999 and then rolls back to 1. It must start at the last accepted request + 1.

sequence number - Similar to the above but this is reset each day. The first request will begin with 1, documents submitted throughout the day need to take this into account.

transmission number - Each document has an integer ranging from 1 - 9999, also rolls over to 1.

Requests are rolled up into 1 file called an INPUT file and then submitted to ABSA. We cannot submit another INPUT file until we receive a response, this is because we need to know the status of the file and each request. When a request is rejected for whatever reason every transaction thereafter is rejected and we need to recreate an INPUT file from the last successful generation number and sequnce number, if the whole INPUT files is rejected we also need to resubmit from the last successful transmission number.

Once ABSA receives an INPUT file they will send back a REPLY file, this file will contain the status of every request submitted. There may also be an OUTPUT file sent by ABSA, this contains rejections that ABSA did not initially pick up. You can think of the files this way.

REPLY FILE: Upfront validation, ABSA make sure transmission, generation and sequence numbers are valid, bank account numbers, branch codes are all fine.

OUTPUT FILE: Validation done by them later and also errors from external banks. These errors can range from Insufficient Funds to Account Holder deceased.

When reply files are processed we mark the requests as accepted, or if any are rejected due to one of the requests rejecting, we set them back to pending to be processed again. When the output files are processed we mark the requests as rejected with the rejection reason.

STATEMENT FILE: Every morning we receive a statement file, this contains all credits and debits for all of our accounts which occured the previous day.

Operating hours/cutoff times

It is worth noting that ABSA services operate at certain times. We also have our own cutoff times

ServiceDay
PAAF(eft)Mon-Fri
PAAF(eft)Sat
PAAF(eft)Sun and Pub Hol
Debit Order(SAMEDAY)Mon-Fri
Debit Order(SAMEDAY)Sat

Debit orders will not go off on Saturdays, Sundays and public holidays, we can submit debit orders on those days but we always set the date to the next available business day.

Banking service will still receive requests but will set the date for the eft/debit order to go off the next available business day.