System Error Correction (SEC)

An EFT SEC is a request from the originating bank to reverse a credit or debit payment that was previously submitted and has already been actioned at the homing bank.

The scenarios below describe transaction flows that occur between you, the homing bank, and Electrum, when receiving an inbound SEC request file from an originating bank (via BankservAfrica).

Successful System Error Correction Request

eft inbound sec

  1. PASA (Payments Association of South Africa) notifies the homing bank that SEC will be initiated at another bank to correct a system error.
  1. Electrum receives an EFT data file containing a number of transactions to be processed. These are essentially previously applied transactions that need to be reversed/returned.
  1. Electrum parses the file, separating it into a number of transactions that are either stored in the database (credits and debits) or processed immediately (for credits only) after matching the transactions to the original instructions.
  1. Once the transactions are ready to be sent (allowed processing window is reached), Electrum sends an inboundPaymentReturn message to the inbound/payment-return endpoint (PaymentReturn schema) for each transaction in the file. The message contains the SYSTEM_ERROR_CORRECTION_REQUEST reason for the return in the paymentScheme.schemeData.returnType field.
PaymentReturn Schema
required
object (MessageIdentifiers)

Holds a point-to-point unique message identification string as well as a message's creation date time.

object (SupplementaryData)

A list of key-value pairs to support adding any supplementary/additional data to an Electrum Regulated Payments API message.

required
object (TransactionIdentifiers)

Holds a series of identifiers to identify the transaction or an individual message that is part of a transaction.

required
object (Party)

This model is the basic representation of a Party. It is expanded on depending on whether the party is a person or an organisation.

object (PaymentAccount)

Representation of an account for payment purposes. Note that at least one of identification or proxy is expected to be present.

required
object (InstitutionIdentification)
required
object (Party)

This model is the basic representation of a Party. It is expanded on depending on whether the party is a person or an organisation.

object (PaymentAccount)

Representation of an account for payment purposes. Note that at least one of identification or proxy is expected to be present.

required
object (InstitutionIdentification)
object (InstitutionIdentification)
object (InstitutionIdentification)
object (MessageIdentifiers)

Holds a point-to-point unique message identification string as well as a message's creation date time.

object (OriginalTransactionData)

Contains key elements related to the original transaction that is being referred to.

required
object (PaymentReturnPaymentScheme)

Designates which scheme a payment return is associated with and describes scheme-specific information for the return.

object (PaymentTypeInformation)
Array of objects (ReturnReasonInfo) non-empty

A list of ReturnReasonInfo values providing detailed reason information for the return.

required
object (TransactionAmounts)
schema
required
string
Value: "PaymentReturn"
settlementDate
string <date>

Date on which the amount of money ceases to be available to the agent that owes it and when the amount of money becomes available to the agent to which it is due.

The message is sent via an Electrum store-and-forward (SAF) queue which repeats the message until you return a positive response.

  1. You respond with an HTTP status code of 202 for each transaction request you receive.
  1. Once you have successfully processed a transaction, you send an inboundPaymentReturnResponse message to the inbound/payment-return-response endpoint (PaymentStatusReport schema).
PaymentStatusReport Schema
required
object (MessageIdentifiers)

Holds a point-to-point unique message identification string as well as a message's creation date time.

object (SupplementaryData)

A list of key-value pairs to support adding any supplementary/additional data to an Electrum Regulated Payments API message.

required
object (MessageIdentifiers)

Holds a point-to-point unique message identification string as well as a message's creation date time.

required
object (TransactionIdentifiers)

Holds a series of identifiers to identify the transaction or an individual message that is part of a transaction.

object (InstitutionIdentification)
object (InstitutionIdentification)
object (OriginalTransactionData)

Contains key elements related to the original transaction that is being referred to.

required
object (PaymentStatusReportPaymentScheme)

Designates which scheme a payment status report is associated with and describes scheme-specific information for the payment status report.

schema
required
string
Value: "PaymentStatusReport"
required
object (Status)
7. Electrum acknowledges receipt of each message with an HTTP status code of `202`.
  1. Once all the transactions for that file have been processed, Electrum will generate:
  • An EFT data file containing all the unsuccessful transactions (those that could not be reversed) and send the file to BankservAfrica.
  • Unpaid transactions for all transactions that were successfully processed. For example, if an account at the homing bank was initially erroneously credited, then a successful SEC transaction means that the money could be removed from the credited account. Thus the money can be returned to the original paying account, that is, the original payment instructions are reversed, which is the definition of an unpaid.

The unpaids are included in the next same-day file sent to BankservAfrica.

Error Handling

No Response from BankservAfrica

If Electrum does not receive a file from BankservAfrica, and an acknowledgement message is therefore not received at BankservAfrica, BankservAfrica will notify you that a file has been sent. You will notify Electrum. The issue will be resolved between BankservAfrica and Electrum. The transaction will then proceed as usual.

No HTTP Response from the Homing Bank

If Electrum does not receive an acknowledgement or negative acknowledgement from you in response to a PaymentReturn then the message will continue to be sent. If Electrum then does not receive an acknowledgement (ACK, HTTP 202) before the reconciliation window, this transaction will be considered a reconciliation exception.
Note

This sub-service requires a reply to BankservAfrica in some form. Electrum will consider this as an unsuccessful transaction and it will be included in the file of unsuccessful transactions returned to BankservAfrica.

Negative Acknowledgement from Homing Bank

If Electrum receives a negative acknowledgement (NACK, i.e., an HTTP 5xx or retryable HTTP 4xx) in response to a PaymentReturn, then Electrum will continue to send the message via a store-and-forward queue. If Electrum does not receive an acknowledgement (HTTP 202) before the reconciliation window, this transaction will be considered a reconciliation exception.
Note
Electrum will continue to send the message via a SAF queue for all HTTP 5xx and 4xx NACKs that are considered transient (i.e., recoverable). If Electrum receives an unretryable HTTP 4xx NACK, then Electrum will stop sending the message and the error will be resolved manually.

No PaymentStatusReport from Homing Bank

If Electrum does not receive a PaymentStatusReport message from you before the reconciliation window closes, then this transaction will be considered a reconciliation exception.
Note

This sub-service requires a reply to BankservAfrica in some form. Electrum will consider this as an unsuccessful transaction and it will be included in the file of unsuccessful transactions returned to BankservAfrica.

No HTTP Response from Electrum

If you do not receive an acknowledgement or negative acknowledgement from Electrum in response to a PaymentStatusReport message, then you can retry the message a set number of times before considering the transaction failed. This transaction will be considered a reconciliation exception.

No Response From BankservAfrica

If Electrum does not receive a file response from BankservAfrica, Electrum will notify BankservAfrica that a file has been sent and an issue has occurred. The issue will then be resolved between BankservAfrica and Electrum. The process will then continue as normal.

Copyright © Electrum Payments (Pty) Ltd. 2019-2023. All right reserved.