Electrum Regulated Payments Partner API (21.0.2)

The Electrum Regulated Payments API is an asynchronous API that allows partners to participate in various nationally regulated payment schemes.

As the Regulated Payments API is asynchronous, partners have a choice of how to integrate with Electrum:

  • Webhooks: Electrum will send events to the partner containing inbound payments to action, or responses to outbound payment requests. Webhooks are defined in the Electrum Regulated Payments Partner API.
  • Partner API: Electrum will call operations exposed by the partner containing inbound payments to action, or responses to outbound payment requests. The operations are defined in this document.

Receiving transactional events via webhooks or API are equivalent, except that it may be more familiar or convenient to implement one style or the other.

This document describes the operations a partner must implement for Electrum to consume in order to complete the integration with the Electrum Regulated Payments API.

Languages
Servers
Partner API sandbox

https://example.com/path/payments/partner-api/v1/

transactional

Operations that participate in transaction processing, which may or may not have financial impact.

Operations

financial

Operations that participate in transaction processing and have financial impact.

Operations

credit-transfer

Operations related to credit transfer transactions.

Operations

direct-debit

Operations related to direct debit transactions.

Operations

payment-return

Operations related to payment returns.

Operations

identifier-determination

Operations used to retrieve additional information related to an identifier

Operations

funds-management

Operations related to the management of funds, including reservations, postings, and voiding of reservations.

Operations

risk-assessment

Operations related to the assessment and identification of risk in transactions.

Operations

fraud-assessment

Operations related to the processing of fraud assessments for payment transactions.

Operations

Schema

FiToFiPaymentCancellationPaymentScheme

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

schemastring(PaymentSchemeName)required

Identifies the scheme used for the payment

  • ZA_RTC: South African Realtime Clearing scheme.
  • ZA_RPP: South African Realtime Payments Platform scheme.
  • ZA_EFT: South African Electronic Funds Transfer scheme.
  • ZA_AC : South African Authenticated Collections scheme.
  • ZA_RMS: South African Registered Mandate Service scheme.
  • CBPR_PLUS: Cross-Border Payments and Reporting Plus.
Enum"ZA_RTC""ZA_RPP""ZA_EFT""ZA_AC""ZA_RMS""CBPR_PLUS"
Discriminator
schemeDataobject(ZaAcFiToFiPaymentCancellationPaymentSchemeData)required
schemeData.​cancellationTypestringrequired

Identifies the specific business process applicable to the cancellation request.

  • RECALL: A request to revoke a payment instruction that has not yet settled or is currently in tracking. If successful, the instruction is cancelled without financial movement (no settlement occurs). If the partner makes use of Electrum's collections capabilities, this type is only expected for outbound use.

  • SYSTEM_ERROR_CORRECTION_REQUEST: Represents the case where a bank has experienced a technical issue that resulted in settled debit collections being processed incorrectly (e.g., a batch of debits was duplicated), and the industry bank is requesting that the partner bank correct the error.

    A successful correction means the partner bank initiates a financial Payment Return to recover the funds from the industry bank in order to refund the debtor.

    This case is notably different from standard recalls and disputes in that: (1) This strictly requires prior industry/PASA authorisation to invoke, (2) it may be rejected by the partner bank if the correction cannot be applied (e.g., original transaction not found, or the transaction was already reversed via a customer dispute), (3) partial reversals are not permitted, and (4) the bank from industry is limited to exactly 2 (two) retry attempts for the same transaction if an earlier request was rejected.

Enum"RECALL""SYSTEM_ERROR_CORRECTION_REQUEST"
{ "schema": "ZA_AC", "schemeData": { "cancellationType": "RECALL" } }

OriginalTransactionReference

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

amountsobject(TransactionAmounts)
creditorAccountobject(PaymentAccount)

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

creditorAgentobject(InstitutionIdentification)
creditorAgentAccountobject(PaymentAccount)

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

debtorAccountobject(PaymentAccount)

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

debtorAgentobject(InstitutionIdentification)
debtorAgentAccountobject(PaymentAccount)

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

paymentMethodstring(PaymentMethod)
  • CreditTransfer - Transfer of an amount of money in the books of the account servicer.
  • DirectDebit - Collection of an amount of money from the debtor's account by the creditor, the amount and date of collection may vary.
Enum"CreditTransfer""DirectDebit"
paymentTypeInformationobject(PaymentTypeInformation)
purposeobject(PurposeType)

Specifies the underlying reason for the payment transaction

remittanceInformationobject(RemittanceInformation)
settlementDatestring(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.

supplementaryDataobject(SupplementaryData)

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

creditorany(PartyInstitutionChoice)
debtorany(PartyInstitutionChoice)
mandateInformationobject(MandateInformation)

Provides details of the direct debit mandate signed between the creditor and the debtor.

NOTE: This model is a work in progress and may change. In particular, it lacks properties relating to mandate amendments which we may need in the future. Note also that this model is not relevant to the ZA_EFT scheme, and therefore Electrum will not do any special processing for these fields for EFT (e.g. Electrum cannot honour tracking days for EFT payments).

{ "amounts": { "bankSettlementAmount": {}, "instructedAmount": {} }, "creditorAccount": { "currency": "string", "identification": {}, "name": "string", "proxy": {}, "type": {} }, "creditorAgent": { "additionalIdentifications": [], "address": {}, "bicfi": "string", "branch": {}, "clearingSystemMemberId": {}, "companyRegistration": "string", "lei": "string", "memberId": "string", "name": "string" }, "creditorAgentAccount": { "currency": "string", "identification": {}, "name": "string", "proxy": {}, "type": {} }, "debtorAccount": { "currency": "string", "identification": {}, "name": "string", "proxy": {}, "type": {} }, "debtorAgent": { "additionalIdentifications": [], "address": {}, "bicfi": "string", "branch": {}, "clearingSystemMemberId": {}, "companyRegistration": "string", "lei": "string", "memberId": "string", "name": "string" }, "debtorAgentAccount": { "currency": "string", "identification": {}, "name": "string", "proxy": {}, "type": {} }, "paymentMethod": "CreditTransfer", "paymentTypeInformation": { "categoryPurpose": {}, "localInstrument": {}, "serviceLevel": [] }, "purpose": { "schema": "string", "value": "BKDF" }, "remittanceInformation": { "structured": [], "unstructured": [] }, "settlementDate": "2019-08-24", "supplementaryData": { "property1": "string", "property2": "string" }, "creditor": { "party": {}, "schema": "PARTY" }, "debtor": { "party": {}, "schema": "PARTY" }, "mandateInformation": { "dateOfSignature": "2019-08-24", "electronicSignature": "string", "finalCollectionDate": "2019-08-24", "firstCollectionDate": "2019-08-24", "frequency": {}, "mandateIdentification": "string", "reason": {}, "trackingDays": 1 } }

CancellationReasonCode

schemastring

Identifies the value as being a pre-defined code. Always CODE.

valuestring

AC02 InvalidDebtorAccountNumber - Debtor account number invalid or missing. AC03 InvalidCreditorAccountNumber - Wrong account number in Credit Transfer. AGNT IncorrectAgent - Agent in the payment workflow is incorrect. AM09 WrongAmount - Amount is not the amount agreed or expected. BE16 InvalidDebtorIdentificationCode - Debtor or Ultimate Debtor identification code missing or invalid. COVR CoverCancelledOrReturned - Cover payments has either been returned or cancelled. CURR IncorrectCurrency - Currency of the payment is incorrect. CUST RequestedByCustomer - Cancellation requested by the Debtor. CUTA CancelUponUnableToApply - Cancellation requested because an investigation request has been received and no remediation is possible. DS24 TimeOut - Cancellation requested because the original payment order expired due to time-out. DT01 InvalidDate - Invalid date (for example, wrong or missing settlement date). DUPL DuplicatePayment - Payment is a duplicate of another payment. FRAD FraudulentOrigin - Cancellation requested following a transaction that was originated fraudulently. The use of the FraudulentOrigin code should be governed by jurisdictions. FRNA ForwardToNextAgent - To complement a rejection response, suggesting the request for cancelation should be forwarded to the next agent in the payment transaction chain. FRTR FinalResponse - Direct Debit Tracking recalled as Mandate Cancelled INDM IndemnityRequired - To express the wish to establish a bilateral indemnity agreement. MODT ModifiedTransaction - The underlying transaction in relation to an RTP was modified. PAID TransactionAlreadyPaid - The underlying transaction in relation to an RTP was already paid (via other means). SVNR ServiceNotRendered - The payment is cancelled since a cash amount rendered was not correct or goods or a service was not rendered to the customer, e.g. in an e-commerce situation. SYAD RequestToSettlementSystemAdministrator - Cancellation requested by System Member to Settlement System Administrator to indicate that the cancellation request must not be forwarded further in the chain. TECH TechnicalProblem - Cancellation requested following technical problems resulting in an erroneous transaction. UPAY UnduePayment - Payment is not justified. ENUE EndUserError - Cancellation or request for return requested by the Debtor specifically due to one or more errors by debtor in the original Credit Transfer. Usage: This code can be used for any error in the original Credit Transfer made by the Debtor. Can also be used if multiple errors were made in the original Credit Transfer. UAPA UnauthorizedPayment - "The Debtor is requesting a return of the payment because the payment was not properly authorized. Usage: This code can be used in the case where a Credit Transfer was made without proper authorization from the Debtor. This could be due to compromised end user credentials." NARR Narrative - Reason is provided as narrative information in the additional reason information. INCR InvalidCancellationRequest - Process a cancellation request with incorrect reference to original batch. BIAS BatchInstructionAlreadySettled - Process a cancellation request but batch already settled. DRTP DuplicationRequestToPay - Duplication of a request-to-pay message. WNTB WarrantyBreach - Breach of warranty provided in connection with a request for payment. MD06 RefundRequestByEndCustomer - Return of funds requested by end customer. PPRC PayeeParticipantRTPCancellation - Request to Pay cancellation initiated because the Payee is not in good standing. ECAG ErrorCreditorAgent - Payee (Creditor) cancels the Request To Pay (RTP) request due to error or adjustment agreement with Payer/Debtor. NFNA NeverForwardToNextAgent - To complement a cancellation request, instructing the market infrastructure that the request for cancelation should not be forwarded to the next agent in the payment transaction chain.

Enum"AC02""AC03""AGNT""AM09""BE16""COVR""CURR""CUST""CUTA""DS24"
{ "schema": "string", "value": "AC02" }

operational

Operations

bulk

Operations

request-to-pay

Operations

refund

Operations

account-verification

Operations