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:
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.
https://docs.electrumsoftware.com/_mock/openapi/elpapi/elpapi-partner/
https://example.com/path/payments/partner-api/v1/
This operation is asynchronous. The outcome of the request is delivered by the inboundAccountVerificationReport
operation.
The outbound account verification operation can be called to verify whether information held by the caller regarding an account (store of value) is valid.
In the context of payments, this operation is often used prior to making payment, or loading a beneficiary to a banking profile.
Scheme | Applicable | Function Enabled |
---|---|---|
ZA_AVS | ✓ | Verifying account information |
A value used to trace an HTTP message within an Electrum Regulated Payments implementation. This field must be set as per the traceparent
element defined in the W3C Trace Context Level 2 specification.
A value used to provide context to an HTTP message as it is traced within an Electrum Regulated Payments implementation. This field must be set as per the traceparent
element defined in the W3C Trace Context Level 2 specification.
Holds a point-to-point unique message identification string as well as a message's creation date time.
The date and time at which the message was created, in senders local timezone or UTC. The date must be formatted as defined by date-time
in RFC3339
A list of key-value pairs to support adding any supplementary/additional data to an Electrum Regulated Payments API message.
Holds a series of identifiers to identify the transaction or an individual message that is part of a transaction.
Unique identification, as assigned by the initiating party, to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Note: this is distinct from the UETR.
Unique identification, as assigned by an instructing party for an instructed party, to unambiguously identify the instruction. The instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction.
Unique identification, as assigned by the first instructing agent, to unambiguously identify the transaction that is passed on, unchanged, throughout the entire interbank chain. Usage: The transaction identification can be used for reconciliation, tracking or to link tasks relating to the transaction on the interbank level. Usage: The instructing agent has to make sure that the transaction identification is unique for a pre-agreed period.
This model is the basic representation of a Party. It is expanded on depending on whether the party is a person or an organisation.
A code to identify a country, a dependency, or another area of particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166, Alpha-2 code).
The identification of a party, either a person or an organisation.
The name by which this party is commonly known in day to day use. For example, a shortening of their legal name or a nickname that they commonly use. This is "non-official". However, it is acceptable for this field to be set to the same as legalName
.
This model is the basic representation of a Party. It is expanded on depending on whether the party is a person or an organisation.
A code to identify a country, a dependency, or another area of particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166, Alpha-2 code).
The identification of a party, either a person or an organisation.
The name by which this party is commonly known in day to day use. For example, a shortening of their legal name or a nickname that they commonly use. This is "non-official". However, it is acceptable for this field to be set to the same as legalName
.
This model is the basic representation of a Party. It is expanded on depending on whether the party is a person or an organisation.
Representation of an account for payment purposes. Note that at least one of identification
or proxy
is expected to be present.
Identification of the currency in which the account is held.
Name of the account, as assigned by the account servicing institution, in agreement with the account owner in order to provide an additional means of identification of the account.
Uniquely identifies this verification. Used in cases where a list of verifications are necessary, in such cases a verification may need to be uniquely identified independently from other verifications.
This model is the basic representation of a Party. It is expanded on depending on whether the party is a person or an organisation.
A code to identify a country, a dependency, or another area of particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166, Alpha-2 code).
The identification of a party, either a person or an organisation.
The name by which this party is commonly known in day to day use. For example, a shortening of their legal name or a nickname that they commonly use. This is "non-official". However, it is acceptable for this field to be set to the same as legalName
.
https://docs.electrumsoftware.com/_mock/openapi/elpapi/elpapi-partner/accounts/inbound/account-verification
https://example.com/path/payments/partner-api/v1/accounts/inbound/account-verification
curl -i -X POST \
https://docs.electrumsoftware.com/_mock/openapi/elpapi/elpapi-partner/accounts/inbound/account-verification \
-H 'Content-Type: application/json' \
-H 'traceparent: string' \
-H 'tracestate: string' \
-d '{
"schema": "AccountVerificationRequest",
"messageIdentifiers": {
"messageIdentification": "8fd51c7124ba4819b9253e296a68e1da",
"creationDateTime": "2022-05-04T03:02:01Z"
},
"transactionIdentifiers": {
"endToEndIdentification": "6249118655591098",
"transactionIdentification": "RRN000000001",
"uetr": "f27a34ad-c5ab-4b70-a3f9-946d743eaeaa"
},
"creator": {
"legalName": "Amazing Bank Inc",
"identification": {
"schema": "ORGANISATION",
"identifiers": [
{
"schema": "BIC",
"BIC": "RY8PEG0L"
},
{
"schema": "OTHER",
"identification": "AmazingBankClearingID",
"scheme": {
"schema": "CODE",
"value": "CHID"
}
}
]
}
},
"firstAgent": {
"bicfi": "RY8PEG0L",
"memberId": "AmazingBankId",
"name": "Amazing Bank Inc",
"branch": {
"identification": "210514",
"name": "ABC Plettenberg Bay",
"address": {
"addressType": "ADDR",
"department": "Department of Mysteries",
"streetName": "Street of Mysteries",
"buildingNumber": "42",
"buildingName": "Mysterious Building",
"floor": "42",
"postBox": "1024",
"postCode": "4242",
"townName": "Mysty Town",
"townLocationName": "Mysty Location",
"districtName": "Mysty District",
"countrySubDivision": "Mysterious Cape",
"country": "ZA",
"addressLine": [
"16A",
"New market street",
"Foreshore",
"Cape Town",
"ZA",
"8001"
]
}
}
},
"assigner": {
"legalName": "Amazing Bank Inc",
"identification": {
"schema": "ORGANISATION",
"identifiers": [
{
"schema": "BIC",
"BIC": "RY8PEG0L"
},
{
"schema": "OTHER",
"identification": "AmazingBankClearingID",
"scheme": {
"schema": "CODE",
"value": "CHID"
}
}
]
}
},
"assignee": {
"legalName": "Zamazing Bank Inc",
"identification": {
"schema": "ORGANISATION",
"identifiers": [
{
"schema": "BIC",
"BIC": "ZY8PEG0L"
},
{
"schema": "OTHER",
"identification": "ZamazingBankClearingID",
"scheme": {
"schema": "CODE",
"value": "CHID"
}
}
]
}
},
"verification": {
"identification": "e21a36adc5ab4b70a3f9952d743eaeaa",
"party": {
"legalName": "Joshua Paul du Plessis",
"address": {
"addressType": "ADDR",
"department": "Department of Mysteries",
"streetName": "Street of Mysteries",
"buildingNumber": "42",
"buildingName": "Mysterious Building",
"floor": "42",
"postBox": "1024",
"postCode": "4242",
"townName": "Mysty Town",
"townLocationName": "Mysty Location",
"districtName": "Mysty District",
"countrySubDivision": "Mysterious Cape",
"country": "ZA",
"addressLine": [
"16A",
"New market street",
"Foreshore",
"Cape Town",
"ZA",
"8001"
]
},
"contactDetails": {
"phoneNumber": "+27-214620000",
"mobileNumber": "+27-823000000",
"emailAddress": "joshua.du.plessis@electrum.com"
},
"countryOfResidence": "ZA",
"identification": {
"schema": "PERSON",
"identifiers": [
{
"identification": "90001236549870",
"scheme": {
"schema": "CODE",
"value": "NIDN"
},
"issuer": "Dept of Home Affairs"
}
]
}
},
"account": {
"identification": {
"schema": "GENERIC",
"scheme": {
"schema": "CODE",
"value": "BBAN"
},
"issuer": "Amazing Bank",
"value": 60091645492
},
"type": {
"schema": "CODE",
"value": "CACC"
},
"currency": "ZAR"
},
"agent": {
"branch": {
"identification": "210514",
"name": "ABC Plettenberg Bay",
"address": {
"addressType": "ADDR",
"department": "Department of Mysteries",
"streetName": "Street of Mysteries",
"buildingNumber": "42",
"buildingName": "Mysterious Building",
"floor": "42",
"postBox": "1024",
"postCode": "4242",
"townName": "Mysty Town",
"townLocationName": "Mysty Location",
"districtName": "Mysty District",
"countrySubDivision": "Mysterious Cape",
"country": "ZA",
"addressLine": [
"16A",
"New market street",
"Foreshore",
"Cape Town",
"ZA",
"8001"
]
}
}
},
"schemeVerificationData": {
"schema": "ZA_AVS",
"checkDebitsAllowed": "true",
"checkCreditsAllowed": "true",
"checkOlderThanThreeMonths": "true",
"initials": "JP",
"lastName": "du Plessis"
}
}
}'
Accepted. RFC9110 - 202
No content
This operation is asynchronous. It communicates the outcome of an outboundAccountVerification
operation.
The outbound account verification report operation can be called to deliver the outcome of a previously requested account verification request.
Scheme | Applicable | Function Enabled |
---|---|---|
ZA_AVS | ✓ | Verifying account information |
A value used to trace an HTTP message within an Electrum Regulated Payments implementation. This field must be set as per the traceparent
element defined in the W3C Trace Context Level 2 specification.
A value used to provide context to an HTTP message as it is traced within an Electrum Regulated Payments implementation. This field must be set as per the traceparent
element defined in the W3C Trace Context Level 2 specification.
Holds a point-to-point unique message identification string as well as a message's creation date time.
The date and time at which the message was created, in senders local timezone or UTC. The date must be formatted as defined by date-time
in RFC3339
A list of key-value pairs to support adding any supplementary/additional data to an Electrum Regulated Payments API message.
Holds a series of identifiers to identify the transaction or an individual message that is part of a transaction.
Unique identification, as assigned by the initiating party, to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Note: this is distinct from the UETR.
Unique identification, as assigned by an instructing party for an instructed party, to unambiguously identify the instruction. The instruction identification is a point to point reference that can be used between the instructing party and the instructed party to refer to the individual instruction. It can be included in several messages related to the instruction.
Unique identification, as assigned by the first instructing agent, to unambiguously identify the transaction that is passed on, unchanged, throughout the entire interbank chain. Usage: The transaction identification can be used for reconciliation, tracking or to link tasks relating to the transaction on the interbank level. Usage: The instructing agent has to make sure that the transaction identification is unique for a pre-agreed period.
This model is the basic representation of a Party. It is expanded on depending on whether the party is a person or an organisation.
A code to identify a country, a dependency, or another area of particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166, Alpha-2 code).
The identification of a party, either a person or an organisation.
The name by which this party is commonly known in day to day use. For example, a shortening of their legal name or a nickname that they commonly use. This is "non-official". However, it is acceptable for this field to be set to the same as legalName
.
This model is the basic representation of a Party. It is expanded on depending on whether the party is a person or an organisation.
A code to identify a country, a dependency, or another area of particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166, Alpha-2 code).
The identification of a party, either a person or an organisation.
The name by which this party is commonly known in day to day use. For example, a shortening of their legal name or a nickname that they commonly use. This is "non-official". However, it is acceptable for this field to be set to the same as legalName
.
This model is the basic representation of a Party. It is expanded on depending on whether the party is a person or an organisation.
Holds a point-to-point unique message identification string as well as a message's creation date time.
https://docs.electrumsoftware.com/_mock/openapi/elpapi/elpapi-partner/accounts/outbound/account-verification-report
https://example.com/path/payments/partner-api/v1/accounts/outbound/account-verification-report
curl -i -X POST \
https://docs.electrumsoftware.com/_mock/openapi/elpapi/elpapi-partner/accounts/outbound/account-verification-report \
-H 'Content-Type: application/json' \
-H 'traceparent: string' \
-H 'tracestate: string' \
-d '{
"schema": "AccountVerificationResponse",
"messageIdentifiers": {
"messageIdentification": "9fd51c1234ba4819bbheyde296a68e1da",
"creationDateTime": "2022-05-04T03:22:11Z"
},
"originalMessageIdentifiers": {
"messageIdentification": "8fd51c7124ba4819b9253e296a68e1da",
"creationDateTime": "2022-05-04T03:02:01Z"
},
"transactionIdentifiers": {
"endToEndIdentification": "6249118655591098",
"transactionIdentification": "RRN000000001",
"uetr": "f27a34ad-c5ab-4b70-a3f9-946d743eaeaa"
},
"creator": {
"legalName": "Zamazing Bank Inc",
"identification": {
"schema": "ORGANISATION",
"identifiers": [
{
"schema": "BIC",
"BIC": "ZY8PEG0L"
},
{
"schema": "OTHER",
"identification": "ZamazingBankClearingID",
"scheme": {
"schema": "CODE",
"value": "CHID"
}
}
]
}
},
"firstAgent": {
"bicfi": "RY8PEG0L",
"memberId": "ZamazingBankId",
"name": "Zamazing Bank Inc",
"branch": {
"identification": "210514",
"name": "XYZ Knysna",
"address": {
"addressType": "ADDR",
"department": "Department of Mysteries",
"streetName": "Street of Mysteries",
"buildingNumber": "42",
"buildingName": "Mysterious Building",
"floor": "42",
"postBox": "1024",
"postCode": "4242",
"townName": "Mysty Town",
"townLocationName": "Mysty Location",
"districtName": "Mysty District",
"countrySubDivision": "Mysterious Cape",
"country": "ZA",
"addressLine": [
"16A",
"New market street",
"Foreshore",
"Cape Town",
"ZA",
"8001"
]
}
}
},
"assigner": {
"legalName": "Zamazing Bank Inc",
"identification": {
"schema": "ORGANISATION",
"identifiers": [
{
"schema": "BIC",
"BIC": "ZY8PEG0L"
},
{
"schema": "OTHER",
"identification": "ZamazingBankClearingID",
"scheme": {
"schema": "CODE",
"value": "CHID"
}
}
]
}
},
"assignee": {
"legalName": "Amazing Bank Inc",
"identification": {
"schema": "ORGANISATION",
"identifiers": [
{
"schema": "BIC",
"BIC": "RY8PEG0L"
},
{
"schema": "OTHER",
"identification": "AmazingBankClearingID",
"scheme": {
"schema": "CODE",
"value": "CHID"
}
}
]
}
},
"originalVerification": {
"identification": "e21a36adc5ab4b70a3f9952d743eaeaa",
"party": {
"legalName": "Joshua Paul du Plessis",
"address": {
"addressType": "ADDR",
"department": "Department of Mysteries",
"streetName": "Street of Mysteries",
"buildingNumber": "42",
"buildingName": "Mysterious Building",
"floor": "42",
"postBox": "1024",
"postCode": "4242",
"townName": "Mysty Town",
"townLocationName": "Mysty Location",
"districtName": "Mysty District",
"countrySubDivision": "Mysterious Cape",
"country": "ZA",
"addressLine": [
"16A",
"New market street",
"Foreshore",
"Cape Town",
"ZA",
"8001"
]
},
"contactDetails": {
"phoneNumber": "+27-214620000",
"mobileNumber": "+27-8230000000",
"emailAddress": "josh.du.plessis@electrum.com"
},
"countryOfResidence": "ZA",
"identification": {
"schema": "PERSON",
"identifiers": [
{
"identification": "90001236549870",
"scheme": {
"schema": "CODE",
"value": "NIDN"
},
"issuer": "Dept of Home Affairs"
}
]
}
},
"account": {
"identification": {
"schema": "GENERIC",
"scheme": {
"schema": "CODE",
"value": "BBAN"
},
"issuer": "Amazing Bank",
"value": 60091645492
},
"type": {
"schema": "CODE",
"value": "CACC"
},
"currency": "ZAR"
},
"agent": {
"branch": {
"identification": "210514",
"name": "ABC Plettenberg Bay",
"address": {
"addressType": "ADDR",
"department": "Department of Mysteries",
"streetName": "Street of Mysteries",
"buildingNumber": "42",
"buildingName": "Mysterious Building",
"floor": "42",
"postBox": "1024",
"postCode": "4242",
"townName": "Mysty Town",
"townLocationName": "Mysty Location",
"districtName": "Mysty District",
"countrySubDivision": "Mysterious Cape",
"country": "ZA",
"addressLine": [
"16A",
"New market street",
"Foreshore",
"Cape Town",
"ZA",
"8001"
]
}
}
},
"schemeVerificationData": {
"schema": "ZA_AVS",
"checkDebitsAllowed": "true",
"checkCreditsAllowed": "true",
"checkOlderThanThreeMonths": "true",
"initials": "JP",
"lastName": "du Plessis"
}
},
"originalAssignment": {
"creator": {
"legalName": "Amazing Bank Inc",
"identification": {
"schema": "ORGANISATION",
"identifiers": [
{
"schema": "BIC",
"BIC": "RY8PEG0L"
},
{
"schema": "OTHER",
"identification": "AmazingBankClearingID",
"scheme": {
"schema": "CODE",
"value": "CHID"
}
}
]
}
},
"firstAgent": {
"bicfi": "RY8PEG0L",
"memberId": "AmazingBankId",
"name": "Amazing Bank Inc",
"branch": {
"identification": "210514",
"name": "ABC Plettenberg Bay",
"address": {
"addressType": "ADDR",
"department": "Department of Mysteries",
"streetName": "Street of Mysteries",
"buildingNumber": "42",
"buildingName": "Mysterious Building",
"floor": "42",
"postBox": "1024",
"postCode": "4242",
"townName": "Mysty Town",
"townLocationName": "Mysty Location",
"districtName": "Mysty District",
"countrySubDivision": "Mysterious Cape",
"country": "ZA",
"addressLine": [
"16A",
"New market street",
"Foreshore",
"Cape Town",
"ZA",
"8001"
]
}
}
},
"assigner": {
"legalName": "Amazing Bank Inc",
"identification": {
"schema": "ORGANISATION",
"identifiers": [
{
"schema": "BIC",
"BIC": "RY8PEG0L"
},
{
"schema": "OTHER",
"identification": "AmazingBankClearingID",
"scheme": {
"schema": "CODE",
"value": "CHID"
}
}
]
}
},
"assignee": {
"legalName": "Zamazing Bank Inc",
"identification": {
"schema": "ORGANISATION",
"identifiers": [
{
"schema": "BIC",
"BIC": "ZY8PEG0L"
},
{
"schema": "OTHER",
"identification": "ZamazingBankClearingID",
"scheme": {
"schema": "CODE",
"value": "CHID"
}
}
]
}
}
},
"status": {
"outcome": "APPROVED",
"reasonInfo": [
{
"reason": {
"schema": "CODE",
"value": "ACCC"
}
}
]
},
"report": {
"originalIdentification": "e21a36adc5ab4b70a3f9952d743eaeaa",
"outcome": {
"schema": "FAILED",
"reasonInfo": {
"reason": {
"schema": "CODE",
"value": "MS03"
}
}
},
"schemeVerificationReportData": {
"schema": "ZA_AVS",
"accountFound": "TRUE",
"accountOpen": "TRUE",
"accountTypeMatch": "TRUE",
"privateIdentificationMatch": "TRUE",
"organisationIdentificationMatch": "NOT_CHECKED",
"trustIdentificationMatch": "NOT_CHECKED",
"initialsMatch": "FALSE",
"nameMatch": "FALSE",
"debitsAllowed": "FALSE",
"creditsAllowed": "TRUE",
"olderThanThreeMonths": "TRUE",
"emailMatch": "NOT_CHECKED",
"mobileMatch": "NOT_CHECKED"
}
}
}'
Accepted. RFC9110 - 202
No content