The Electrum QR Payment Service describes an interface for supporting payments via scanning of a QR code transactions.
https://docs.electrumsoftware.com/
A QR payment confirmation.
The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122
The date and time of the message as recorded by the sender. The format shall be as defined for date-time in RFC 3339 section 5.6. It is recommended that the optional time-secfrac be included up to millisecond precision
The unaltered thirdPartyIdentifiers array as supplied in the related BasicResponse message. Required if thirdPartyIdentifiers field was present in the BasicResponse. If no thirdPartyIdentifiers was received in the BasicResponse or no BasicResponse was received then this should be set to the thirdPartyIdentifiers sent in the original request.
The System Trace Audit Number can be used to locate transactions across different systems.
Amounts which make up the transaction. Absent amounts have zero value.
https://docs.electrumsoftware.com/payments/confirmations
curl -i -X POST \
-u <username>:<password> \
https://docs.electrumsoftware.com/payments/confirmations \
-H 'Content-Type: application/json' \
-d '{
"id": "string",
"requestId": "string",
"time": "2019-08-24T14:15:22Z",
"thirdPartyIdentifiers": [
{
"institutionId": "string",
"transactionIdentifier": "string"
}
],
"stan": "string",
"rrn": "string",
"amounts": {
"requestAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"approvedAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"feeAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"balanceAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"additionalAmounts": {
"property1": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"property2": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
}
}
},
"partner": {
"id": "string",
"name": "string"
},
"tranId": "string"
}'Accepted
The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122
The date and time of the message as recorded by the sender. The format shall be as defined for date-time in RFC 3339 section 5.6. It is recommended that the optional time-secfrac be included up to millisecond precision
The unaltered thirdPartyIdentifiers array as supplied in the related BasicResponse message. Required if thirdPartyIdentifiers field was present in the BasicResponse. If no thirdPartyIdentifiers was received in the BasicResponse or no BasicResponse was received then this should be set to the thirdPartyIdentifiers sent in the original request.
The System Trace Audit Number can be used to locate transactions across different systems.
Amounts which make up the transaction. Absent amounts have zero value.
{ "id": "string", "requestId": "string", "time": "2019-08-24T14:15:22Z", "thirdPartyIdentifiers": [ { … } ], "stan": "string", "rrn": "string", "amounts": { "requestAmount": { … }, "approvedAmount": { … }, "feeAmount": { … }, "balanceAmount": { … }, "additionalAmounts": { … } }, "partner": { "id": "string", "name": "string" }, "tranId": "string" }
This request contains conventional payment information (POS information, transaction amount, date etc.) as well as Partner information. If a merchant is unable to supply the Partner information in this request, then the request is directed to an intermediate system which also receives notifications from Partners of QR scans. This intermediate system will match the payment request from the merchant with the scan notification from the Partner using the QR code information common to both messages. The payment request may then be forwarded to the correct Partner for processing.
A QR payment request.
A list containing labels that can be used to discover this transaction or group it with other transactions sharing labels with the same label name and value. Transaction labels should never be used to make transaction processing decisions.
The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122
The date and time of the message as recorded by the sender. The format shall be as defined for date-time in RFC 3339 section 5.6. It is recommended that the optional time-secfrac be included up to millisecond precision
The Originator object encapsulates data relating to the originator of the transaction
Originating, acquiring, processing, or receiving institution details
The ID that uniquely identifies each device or system in an originator's institution capable of sending requests. Required for transactions initiated from physical card entry or point-of-sale devices
Merchant related data. Must be included if available
The assigned four digit merchant category code
The assigned merchant identifier. Also known as card acceptor id
A container object representing the Merchant Name and Location
The merchant or trading as name associated with the merchant
The state or region where the merchant is located
The ID that uniquely identifies the person operating the terminal specified by the terminalId field.
Originating, acquiring, processing, or receiving institution details
Originating, acquiring, processing, or receiving institution details
An array of identifiers which each identify the transaction within each entity's system.
Indicates the transaction type (i.e. Goods and Services or Cash Withdrawal).
Indicates the type of account being used in a transaction process.
Indicates the type of account being used in a transaction process.
The System Trace Audit Number can be used to locate transactions across different systems.
Amounts which make up the transaction. Absent amounts have zero value.
An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT
An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT
An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT
An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT
The unique transaction identifier related to this transaction. Retailers must set this to the same value as that returned in the tranId field of the CreateQrCodeResponse that preceded this PaymentRequest. Partners may associate this PaymentRequest with the QR code whose ScanNotification they submitted with this value.
A payment token received from the Partner in the ScanNotification. A Partner may provide such a value in the ScanNotification so that it is included in the PaymentRequest to the Partner. This field should be populated if known. A Partner may expect to receive this value in the PaymentRequest if it was provided in the ScanNotification.
https://docs.electrumsoftware.com/payments
curl -i -X POST \
-u <username>:<password> \
https://docs.electrumsoftware.com/payments \
-H 'Content-Type: application/json' \
-d '{
"transactionLabels": [
{
"name": "string",
"value": "string"
}
],
"id": "string",
"time": "2019-08-24T14:15:22Z",
"originator": {
"institution": {
"id": "string",
"name": "string"
},
"terminalId": "string",
"merchant": {
"merchantType": "string",
"merchantId": "string",
"merchantName": {
"name": "string",
"city": "string",
"region": "string",
"country": "string"
}
},
"operatorId": "string",
"channelId": "string"
},
"client": {
"id": "string",
"name": "string"
},
"settlementEntity": {
"id": "string",
"name": "string"
},
"receiver": {
"id": "string",
"name": "string"
},
"thirdPartyIdentifiers": [
{
"institutionId": "string",
"transactionIdentifier": "string"
}
],
"slipData": {
"messageLines": [
{
"barcode": {
"data": "string",
"encoding": "string"
},
"text": "string",
"fontWidthScaleFactor": 0.1,
"fontHeightScaleFactor": 0.1,
"line": true,
"cut": true
}
],
"slipWidth": 0,
"issuerReference": "string"
},
"basketRef": "string",
"tranType": "GOODS_AND_SERVICES",
"srcAccType": "DEFAULT",
"destAccType": "DEFAULT",
"stan": "string",
"rrn": "string",
"partner": {
"id": "string",
"name": "string"
},
"amounts": {
"requestAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"approvedAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"feeAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"balanceAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"additionalAmounts": {
"property1": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"property2": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
}
}
},
"tranId": "string",
"partnerPaymentToken": "string",
"allowedPartners": [
{
"id": "string",
"name": "string"
}
]
}'Created
A list containing labels that can be used to discover this transaction or group it with other transactions sharing labels with the same label name and value. Transaction labels should never be used to make transaction processing decisions.
The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122
The date and time of the message as recorded by the sender. The format shall be as defined for date-time in RFC 3339 section 5.6. It is recommended that the optional time-secfrac be included up to millisecond precision
The Originator object encapsulates data relating to the originator of the transaction
Originating, acquiring, processing, or receiving institution details
The ID that uniquely identifies each device or system in an originator's institution capable of sending requests. Required for transactions initiated from physical card entry or point-of-sale devices
Merchant related data. Must be included if available
The assigned four digit merchant category code
The assigned merchant identifier. Also known as card acceptor id
A container object representing the Merchant Name and Location
The merchant or trading as name associated with the merchant
The state or region where the merchant is located
The ID that uniquely identifies the person operating the terminal specified by the terminalId field.
Originating, acquiring, processing, or receiving institution details
Originating, acquiring, processing, or receiving institution details
An array of identifiers which each identify the transaction within each entity's system.
Indicates the transaction type (i.e. Goods and Services or Cash Withdrawal).
Indicates the type of account being used in a transaction process.
Indicates the type of account being used in a transaction process.
The System Trace Audit Number can be used to locate transactions across different systems.
Originating, acquiring, processing, or receiving institution details
An array of tenders used to pay for the transaction. This may be used to describe the payment which was effected as a result of the QR code scan e.g. the card detail ultimately used for the payment.
Amounts which make up the transaction. Absent amounts have zero value.
An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT
An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT
An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT
An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT
{ "transactionLabels": [ { … } ], "id": "string", "time": "2019-08-24T14:15:22Z", "originator": { "institution": { … }, "terminalId": "string", "merchant": { … }, "operatorId": "string", "channelId": "string" }, "client": { "id": "string", "name": "string" }, "settlementEntity": { "id": "string", "name": "string" }, "receiver": { "id": "string", "name": "string" }, "thirdPartyIdentifiers": [ { … } ], "slipData": { "messageLines": [ … ], "slipWidth": 0, "issuerReference": "string" }, "basketRef": "string", "tranType": "GOODS_AND_SERVICES", "srcAccType": "DEFAULT", "destAccType": "DEFAULT", "stan": "string", "rrn": "string", "partner": { "id": "string", "name": "string" }, "tenders": [ { … } ], "amounts": { "requestAmount": { … }, "approvedAmount": { … }, "feeAmount": { … }, "balanceAmount": { … }, "additionalAmounts": { … } }, "tranId": "string", "partnerPaymentToken": "string", "allowedPartners": [ { … } ] }
A QR payment reversal.
The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122
The date and time of the message as recorded by the sender. The format shall be as defined for date-time in RFC 3339 section 5.6. It is recommended that the optional time-secfrac be included up to millisecond precision
The unaltered thirdPartyIdentifiers array as supplied in the related BasicResponse message. Required if thirdPartyIdentifiers field was present in the BasicResponse. If no thirdPartyIdentifiers was received in the BasicResponse or no BasicResponse was received then this should be set to the thirdPartyIdentifiers sent in the original request.
The System Trace Audit Number can be used to locate transactions across different systems.
Amounts which make up the transaction. Absent amounts have zero value.
The reason for the reversal
https://docs.electrumsoftware.com/payments/reversals
curl -i -X POST \
-u <username>:<password> \
https://docs.electrumsoftware.com/payments/reversals \
-H 'Content-Type: application/json' \
-d '{
"id": "string",
"requestId": "string",
"time": "2019-08-24T14:15:22Z",
"thirdPartyIdentifiers": [
{
"institutionId": "string",
"transactionIdentifier": "string"
}
],
"stan": "string",
"rrn": "string",
"amounts": {
"requestAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"approvedAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"feeAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"balanceAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"additionalAmounts": {
"property1": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"property2": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
}
}
},
"reversalReason": "TIMEOUT",
"partner": {
"id": "string",
"name": "string"
},
"tranId": "string"
}'Accepted
The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122
The date and time of the message as recorded by the sender. The format shall be as defined for date-time in RFC 3339 section 5.6. It is recommended that the optional time-secfrac be included up to millisecond precision
The unaltered thirdPartyIdentifiers array as supplied in the related BasicResponse message. Required if thirdPartyIdentifiers field was present in the BasicResponse. If no thirdPartyIdentifiers was received in the BasicResponse or no BasicResponse was received then this should be set to the thirdPartyIdentifiers sent in the original request.
The System Trace Audit Number can be used to locate transactions across different systems.
Amounts which make up the transaction. Absent amounts have zero value.
The reason for the reversal
{ "id": "string", "requestId": "string", "time": "2019-08-24T14:15:22Z", "thirdPartyIdentifiers": [ { … } ], "stan": "string", "rrn": "string", "amounts": { "requestAmount": { … }, "approvedAmount": { … }, "feeAmount": { … }, "balanceAmount": { … }, "additionalAmounts": { … } }, "reversalReason": "TIMEOUT", "partner": { "id": "string", "name": "string" }, "tranId": "string" }
Information pertaining to the QR code, which may be available at the time of the request. This may include details such as the entity requesting the QR code, the value of the transaction for which the QR code will be used and the specific purpose of the QR code. The request for a QR code should convey information about the merchant requesting the QR code (e.g. POS information) and not information about the consumer who will scan the QR code (e.g. customer or loyalty information).
The randomly generated UUID identifying this request. This may be a variant 3 or 4 as defined in RFC 4122
The date and time of the message as recorded by the sender. The format shall be as defined for date-time in RFC 3339 section 5.6. It is recommended that the optional time-secfrac be included up to millisecond precision
The Originator object encapsulates data relating to the originator of the transaction
Originating, acquiring, processing, or receiving institution details
The ID that uniquely identifies each device or system in an originator's institution capable of sending requests. Required for transactions initiated from physical card entry or point-of-sale devices
Merchant related data. Must be included if available
The assigned four digit merchant category code
The assigned merchant identifier. Also known as card acceptor id
A container object representing the Merchant Name and Location
The merchant or trading as name associated with the merchant
The state or region where the merchant is located
The ID that uniquely identifies the person operating the terminal specified by the terminalId field.
Originating, acquiring, processing, or receiving institution details
An array of identifiers which each identify the transaction within each entity's system.
The System Trace Audit Number can be used to locate transactions across different systems.
Amounts which make up the transaction. Absent amounts have zero value.
A collection of attributes that describe how a QR code is intended to be used for transacting.
A list of payment methods with which the QR owner will accept payment. The paymentMethods specify the destination to which funds may be transferred when the QR code is scanned.
https://docs.electrumsoftware.com/qrCodes
curl -i -X POST \
-u <username>:<password> \
https://docs.electrumsoftware.com/qrCodes \
-H 'Content-Type: application/json' \
-d '{
"id": "string",
"time": "2019-08-24T14:15:22Z",
"originator": {
"institution": {
"id": "string",
"name": "string"
},
"terminalId": "string",
"merchant": {
"merchantType": "string",
"merchantId": "string",
"merchantName": {
"name": "string",
"city": "string",
"region": "string",
"country": "string"
}
},
"operatorId": "string",
"channelId": "string"
},
"client": {
"id": "string",
"name": "string"
},
"thirdPartyIdentifiers": [
{
"institutionId": "string",
"transactionIdentifier": "string"
}
],
"rrn": "string",
"stan": "string",
"amounts": {
"requestAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"approvedAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"feeAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"balanceAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"additionalAmounts": {
"property1": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"property2": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
}
}
},
"customer": {
"firstName": "string",
"lastName": "string",
"address": "string",
"dateOfBirth": "2019-08-24T14:15:22Z",
"status": "string",
"msisdn": "string",
"emailAddress": "string",
"addressDetails": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"region": "string",
"country": "string",
"postalCode": "string"
},
"profileId": "string"
},
"qrProperties": {
"description": "string",
"guid": "string",
"overPaymentAllowed": true,
"partPaymentAllowed": true,
"customerProvidedValuePrompts": [
{
"label": "string"
}
],
"requestTip": true,
"creationDateTime": "2019-08-24T14:15:22Z",
"expiryDate": "2019-08-24T14:15:22Z",
"notificationParameters": {
"recipients": [
{
"emailAddress": "string",
"msisdn": "string"
}
]
},
"qrLabel": "string"
},
"paymentMethods": [
{
"type": "AN_32_TOKEN",
"name": "string",
"amount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"issuer": {
"id": "string",
"name": "string"
},
"pin": {
"type": "CLEAR_PIN",
"pin": "string"
},
"proxy": "string",
"proxyType": "MSISDN",
"token": "string"
}
],
"allowedPartners": [
{
"id": "string",
"name": "string"
}
]
}'Created
The randomly generated UUID identifying this request. This may be a variant 3 or 4 as defined in RFC 4122
The date and time of the message as recorded by the sender. The format shall be as defined for date-time in RFC 3339 section 5.6. It is recommended that the optional time-secfrac be included up to millisecond precision
The Originator object encapsulates data relating to the originator of the transaction
Originating, acquiring, processing, or receiving institution details
The ID that uniquely identifies each device or system in an originator's institution capable of sending requests. Required for transactions initiated from physical card entry or point-of-sale devices
Merchant related data. Must be included if available
The assigned four digit merchant category code
The assigned merchant identifier. Also known as card acceptor id
A container object representing the Merchant Name and Location
The merchant or trading as name associated with the merchant
The state or region where the merchant is located
The ID that uniquely identifies the person operating the terminal specified by the terminalId field.
Originating, acquiring, processing, or receiving institution details
An array of identifiers which each identify the transaction within each entity's system.
The System Trace Audit Number can be used to locate transactions across different systems.
Amounts which make up the transaction. Absent amounts have zero value.
A collection of attributes that describe how a QR code is intended to be used for transacting.
A list of payment methods with which the QR owner will accept payment. The paymentMethods specify the destination to which funds may be transferred when the QR code is scanned.
A list of partners that are permitted to process the transaction associated with this QR code. If null or empty, all partners are permitted to process the transaction.
The unique transaction identifier assigned by the QR code provider to this QR code. This value is also encoded in the QR code returned in the qrCode field. The QR code provider is responsible for ensuring appropriate uniqueness of the QR code for the appropriate period of time. No specific restrictions are placed on the format of the QR code (length, characters etc.) but implementors should consider the following aspects; Length - Longer QR codes require more detailed resolution on display screens and scanning devices and are also harder to scan. Manual Entry - While manual entry of QR codes is not explicitly supported by the QR Payments Service Interface, implementors may choose to support such fallback mechanisms if a QR code cannot be scanned. Longer and more complicated codes will be more susceptible to errors when inputted manually. This value must be provided in subsequent 'notifyScan' and 'pay' operations to link payments to specific Partners.
The full set of data to be encoded in the graphical QR code. The data is provided in a Tag-Length-Value format as described in the EMVCo specification but is not a fully EMVCo compliant string e.g. Tags which are mandatory under the EMVCo specification may be omitted. The precise set of Tags to be populated in the QR code should be discussed and agreed upon by implementation partners.
{ "id": "string", "time": "2019-08-24T14:15:22Z", "originator": { "institution": { … }, "terminalId": "string", "merchant": { … }, "operatorId": "string", "channelId": "string" }, "client": { "id": "string", "name": "string" }, "thirdPartyIdentifiers": [ { … } ], "rrn": "string", "stan": "string", "amounts": { "requestAmount": { … }, "approvedAmount": { … }, "feeAmount": { … }, "balanceAmount": { … }, "additionalAmounts": { … } }, "customer": { "firstName": "string", "lastName": "string", "address": "string", "dateOfBirth": "2019-08-24T14:15:22Z", "status": "string", "msisdn": "string", "emailAddress": "string", "addressDetails": { … }, "profileId": "string" }, "qrProperties": { "description": "string", "guid": "string", "overPaymentAllowed": true, "partPaymentAllowed": true, "customerProvidedValuePrompts": [ … ], "requestTip": true, "creationDateTime": "2019-08-24T14:15:22Z", "expiryDate": "2019-08-24T14:15:22Z", "notificationParameters": { … }, "qrLabel": "string" }, "paymentMethods": [ { … } ], "allowedPartners": [ { … } ], "tranId": "string", "qrCode": "string" }
Partners are not notified by a QR code provider when a QR code is generated. Only when a consumer scans a QR code using a Partner's application is the Partner aware that the QR code is available. The Partner subsequently informs the provider of the QR code that their code has been scanned. The QR code provider shall then associate any other transactions pertaining to the QR code with the Partner.
A get QR code request.
The randomly generated UUID identifying this notification. This may be a variant 3 or 4 as defined in RFC 4122
The date and time of the message as recorded by the sender. The format shall be as defined for date-time in RFC 3339 section 5.6. It is recommended that the optional time-secfrac be included up to millisecond precision
Originating, acquiring, processing, or receiving institution details
Originating, acquiring, processing, or receiving institution details
An array of identifiers which identify the transaction within each entity's system.
Amounts which make up the transaction. Absent amounts have zero value.
The transaction identifier encoded within the QR Code which was scanned. Any PaymentRequest with a matching tranId value should be forwarded to the Partner for processing.
https://docs.electrumsoftware.com/scans
curl -i -X POST \
-u <username>:<password> \
https://docs.electrumsoftware.com/scans \
-H 'Content-Type: application/json' \
-d '{
"id": "string",
"time": "2019-08-24T14:15:22Z",
"partner": {
"id": "string",
"name": "string"
},
"settlementEntity": {
"id": "string",
"name": "string"
},
"receiver": {
"id": "string",
"name": "string"
},
"thirdPartyIdentifiers": [
{
"institutionId": "string",
"transactionIdentifier": "string"
}
],
"amounts": {
"requestAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"approvedAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"feeAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"balanceAmount": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"additionalAmounts": {
"property1": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
},
"property2": {
"amount": 0,
"currency": "string",
"ledgerIndicator": "DEBIT"
}
}
},
"tranId": "string",
"partnerPaymentToken": "string"
}'