The Electrum QR Payment Service describes an interface for supporting payments via scanning of a QR code transactions.
https://docs.electrumsoftware.com/
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.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
{ "type": "AccountPayment", "name": "string", "amount": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "issuer": { "id": "string", "name": "string" }, "pin": { "type": "CLEAR_PIN" }, "proxy": "string", "proxyType": "MSISDN", "srcAccountId": "string", "srcCustomerId": "string", "destAccountId": "string", "destCustomerId": "string" }
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.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
{ "type": "AccountPayment", "name": "string", "amount": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "issuer": { "id": "string", "name": "string" }, "pin": { "type": "CLEAR_PIN" }, "proxy": "string", "proxyType": "MSISDN", "srcAccountId": "string", "srcCustomerId": "string", "destAccountId": "string", "destCustomerId": "string" }
A QR payment confirmation.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
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"
}'{ "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.
Data relating to the originator of the request.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
The amounts pertaining to the QR code which was scanned.
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"
}'Created
Data relating to the originator of the request.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
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.
The amounts pertaining to the QR code which was scanned.
{ "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" }
A QR payment reversal.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
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"
}'{ "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
Data relating to the originator of the request.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
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.
A collection of attributes that describe how a QR code is intended to be used for transacting.
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"
},
"proxy": "string",
"proxyType": "MSISDN"
}
]
}'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
Data relating to the originator of the request.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
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.
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.
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": [ { … } ], "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
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
Data relating to the entity which ultimately processes the request. A Partner may provide this information if known at the time the QR code was scanned.
An array of identifiers which identify the transaction within each entity's system.
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"
}'