Prepaid Utility Service Interface (3.16.0)

The Electrum Prepaid Utility Service describes an interface for facilitating the purchase of prepaid tokens for utilities such as electricity and water. One or more tokens for a requested value are issued by an upstream provider (typically a payments aggregator) against a specified meter number. The tokens (each being a sequence of usually 20 digits) are printed on the customer receipt and are input manually on the meter's keypad for the value to be redeemed.

Download OpenAPI description
Languages
Servers

https://[placeholder].dev/prepaidutility/v3/

Schema

Amounts

Amounts which make up the transaction. Absent amounts have zero value.

requestAmountobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

approvedAmountobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

feeAmountobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

balanceAmountobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

additionalAmountsobject

Any additional amounts that are involved in a transaction which don't appropriately fit into the other amount fields.

{ "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": {}, "property2": {} } }

An32TokenPayment

Base model for all payment types

typestringrequired

The general method of payment used

Enum"AN_32_TOKEN""LOYALTY_CARD""CARD""ACCOUNT""REWARD""WALLET""QR"
Discriminator
namestring

The specific method of payment used

amountobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

issuerobject(Institution)

Originating, acquiring, processing, or receiving institution details

pinobject(Pin)

Base model for capturing either a clear PIN or encrypted PIN

proxystring[ 0 .. 40 ] characters

An alternative identifier for the customer's source of funds. Acts as a stand in for the customer identifier. E.g. a customer's MSISDN or email address.

proxyTypestring

An enumerated value describing the type of value used as the proxy.

Enum"MSISDN""EMAIL""UNKNOWN"
srcAccountIdstring

Source AccountId from which this payment will be made.

srcCustomerIdstring

Source CustomerId from which this payment will be made.

destAccountIdstring

Destination AccountId to which this payment will be made.

destCustomerIdstring

Destination CustomerId to which this payment will be made.

{ "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" }

Barcode

Used to indicate barcode information for a slip line.

datastringrequired

Data to be encoded in the barcode

encodingstringrequired

Specifies the encoding used in the barcode

{ "data": "string", "encoding": "string" }

notifyTokenPurchase

Request

An event notification to signal that a successful token purchase was performed. This operation is for informational purposes only. Implementations that do not need to subscribe to this event may simply return an HTTP status code 501.

Security
httpBasic or oauth2
Query
purchaseIdstringrequired

The id of the original purchase request.

Bodyapplication/jsonrequired

A token purchase response

transactionLabelsArray of objects(TransactionLabel)

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.

purchaseTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

taxTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

customerobject(Customer)required

A customer who ultimately requests a transaction be performed.

customer.​firstNamestring

The customer's first name(s)

customer.​lastNamestring

The customer's last name

customer.​addressstring

The customer's address

customer.​dateOfBirthstring(date-time)

The customer's date of birth

customer.​statusstring

The status of this customer on the Giftcard system. For example: active, inactive

customer.​msisdnstring^\+?[1-9]\d{0,14}

This must conform to the ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en) e.g. 27821234567 for a South African number.

customer.​emailAddressstring

The customer's email address. This address must conform to RFC 5322 3.4.1 addr-spec (https://tools.ietf.org/html/rfc5322#section-3.4.1).

customer.​addressDetailsobject(Address)

Details of a customer's address

customer.​profileIdstring

The customer's profile ID. Used to uniquely identify a customer.

utilityobject(Utility)required

Represents a utility with whom a meter is registered.

utility.​namestring

Name of the utility.

utility.​addressstring

Physical address of the utility.

utility.​vatRegNumstring

VAT registration number of the utility.

utility.​clientIdstring

Identifier assigned by the utility to the client connecting to the utility's token issuing service.

utility.​messagestring

Message send by the utility to be displayed on the customer receipt.

utilityTypestring

Type of utility purchase being requested (e.g. electricity, water, gas).

tokensArray of objects(Token)

List of tokens issued for the purchase.

debtRecoveryChargesArray of objects(DebtRecoveryCharge)

List of charges that have been levied in order to reclaim outstanding debts associated with the meter.

serviceChargesArray of objects(ServiceCharge)

List of service charges levied against this meter.

vatInvoiceNumberstring

The VAT invoice number corresponding to this specific transaction.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Failed to generate code sample.

Responses

Accepted

Response
No content

createFaultReport

Request

Reports a technical fault on a specified meter. This resource is used when a customer wishes to report a technical fault to the utility with whom the meter is reqistered.

Security
httpBasic or oauth2
Path
requestIdstringrequired

The randomly generated UUID of this request.

Bodyapplication/jsonrequired

A fault report

transactionLabelsArray of objects(TransactionLabel)

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.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

customerobject(Customer)

A customer who ultimately requests a transaction be performed.

contactNumberstringrequired

Contact telephone number of the person reporting the fault.

faultTypestringrequired

Type of fault that is being reported.

Enum"SERIOUS_BOX_DAMAGE""FIRE_WATER_DAMAGE""METER_DEAD""KEEPS_TRIPPING""NO_TRIP""DISPLAY_LIGHTS_BUTTONS""NETWORK_FAULT_REPORT""INCORRECT_SGC""INCORRECT_TI""CONVERTED_FRM_CONVENTIONAL"
faultDescriptionstring
idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Failed to generate code sample.

Responses

Created

Bodyapplication/json
transactionLabelsArray of objects(TransactionLabel)

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.

referencestringrequired

Reference number for the fault report.

descriptionstringrequired

Description of the fault.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Response
application/json
{ "transactionLabels": [ {} ], "reference": "string", "description": "string", "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" }

createKeyChangeTokenRequest

Request

Requests a key change token for a specified meter. This resource is used when the utility has updated a meter's encryption key and the customer required a token to input the new key to the meter. Key change tokens are typically supplied as part of a normal purchase, so this operation is rarely used.

Security
httpBasic or oauth2
Path
requestIdstringrequired

The randomly generated UUID of this request.

Bodyapplication/jsonrequired

A key change token request

transactionLabelsArray of objects(TransactionLabel)

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.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Failed to generate code sample.

Responses

Created

Bodyapplication/json
transactionLabelsArray of objects(TransactionLabel)

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.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

tokensArray of objects(Token)

List of tokens issued for the key change.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Response
application/json
{ "transactionLabels": [ {} ], "meter": { "meterId": "string", "track2Data": "string", "serviceType": "string", "supplyGroupCode": "string", "keyRevisionNum": "string", "tariffIndex": "string", "tokenTechCode": "string", "algorithmCode": "string", "keyChangeData": {} }, "tokens": [ {} ], "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" }

confirmKeyChange

Request

Confirms that key change tokens have been provided successfully.

Security
httpBasic or oauth2
Path
requestIdstringrequired

The randomly generated UUID of the original request.

confirmationIdstringrequired

The randomly generated UUID of this confirmation.

Bodyapplication/jsonrequired

A key change confirmation

idstringrequired

The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122

requestIdstringrequired

The UUID identifying the request that this advice relates to

timestring(date-time)required

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

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

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.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

Failed to generate code sample.

Responses

Accepted

Bodyapplication/json
idstringrequired

The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122

requestIdstringrequired

The UUID identifying the request that this advice relates to

timestring(date-time)required

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

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

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.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

Response
application/json
{ "id": "string", "requestId": "string", "time": "2019-08-24T14:15:22Z", "thirdPartyIdentifiers": [ {} ], "stan": "string", "rrn": "string", "amounts": { "requestAmount": {}, "approvedAmount": {}, "feeAmount": {}, "balanceAmount": {}, "additionalAmounts": {} } }

createMeterLookup

Request

Request information about a specified meter, including customer and utility details. This resource is used to verify that a meter number is valid and registered with the correct details. It also confirms whether the meter is recognised by a provider and that tokens can be issued against it.

Security
httpBasic or oauth2
Path
lookupIdstringrequired

The randomly generated UUID of this request.

Bodyapplication/jsonrequired

A meter information lookup request.

transactionLabelsArray of objects(TransactionLabel)

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.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Failed to generate code sample.

Responses

Created

Bodyapplication/json
transactionLabelsArray of objects(TransactionLabel)

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.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

customerobject(Customer)required

A customer who ultimately requests a transaction be performed.

customer.​firstNamestring

The customer's first name(s)

customer.​lastNamestring

The customer's last name

customer.​addressstring

The customer's address

customer.​dateOfBirthstring(date-time)

The customer's date of birth

customer.​statusstring

The status of this customer on the Giftcard system. For example: active, inactive

customer.​msisdnstring^\+?[1-9]\d{0,14}

This must conform to the ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en) e.g. 27821234567 for a South African number.

customer.​emailAddressstring

The customer's email address. This address must conform to RFC 5322 3.4.1 addr-spec (https://tools.ietf.org/html/rfc5322#section-3.4.1).

customer.​addressDetailsobject(Address)

Details of a customer's address

customer.​profileIdstring

The customer's profile ID. Used to uniquely identify a customer.

utilityobject(Utility)required

Represents a utility with whom a meter is registered.

utility.​namestring

Name of the utility.

utility.​addressstring

Physical address of the utility.

utility.​vatRegNumstring

VAT registration number of the utility.

utility.​clientIdstring

Identifier assigned by the utility to the client connecting to the utility's token issuing service.

utility.​messagestring

Message send by the utility to be displayed on the customer receipt.

minAmountobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

maxAmountobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

arrearsAmountobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

bsstDueboolean

Boolean flag indicating whether a free basic service support token is owing on this meter. Not all meters support this and typically only one free token is issued per calendar month. If the value of this field is true, then a purchase request with an amount of 0 can be sent and the response will contain the free token.

Default false
idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Response
application/json
{ "transactionLabels": [ {} ], "meter": { "meterId": "string", "track2Data": "string", "serviceType": "string", "supplyGroupCode": "string", "keyRevisionNum": "string", "tariffIndex": "string", "tokenTechCode": "string", "algorithmCode": "string", "keyChangeData": {} }, "customer": { "firstName": "string", "lastName": "string", "address": "string", "dateOfBirth": "2019-08-24T14:15:22Z", "status": "string", "msisdn": "string", "emailAddress": "string", "addressDetails": {}, "profileId": "string" }, "utility": { "name": "string", "address": "string", "vatRegNum": "string", "clientId": "string", "message": "string" }, "minAmount": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "maxAmount": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "arrearsAmount": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "bsstDue": false, "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" }

createTokenPurchaseRequest

Request

Requests that the provider issue a token against the meter for a given monetary value. In the case that the meter and/or utility supports the issue of free tokens under a basic service support tariff scheme, then any free tokens due will also be returned. If the requested amount is 0 and a free token is due to the meter, then only this free token will be returned. A portion of the request amount may be used by the provider to offset outstanding debt or service charges owed by the customer, in which case the value of the token returned may be less than the request amount (see interface documentation for further details).

Security
httpBasic or oauth2
Path
purchaseIdstringrequired

The randomly generated UUID of this request.

Bodyapplication/jsonrequired

A token purchase request.

transactionLabelsArray of objects(TransactionLabel)

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.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

purchaseAmountobject(LedgerAmount)required

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

purchaseAmount.​amountinteger(int64)required

Amount in minor denomination, e.g. R799.95 is encoded as 79995

purchaseAmount.​currencystring[0-9]{3}required

Three digit currency number from ISO 4217, e.g. South African Rand is encoded as 710

purchaseAmount.​ledgerIndicatorstring

Indicates whether this amount is a debit or a credit. Only required when the amount can be either a debit or a credit

Enum"DEBIT""CREDIT"
utilityTypestring

Type of utility purchase being requested (e.g. electricity, water, gas).

msisdnstring(^\+?[1-9]\d{1,14})|(^[0][0-9]{9})

Mobile phone number of the customer to which the outcome of a transaction can be communicated. This should conform to the ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en), but a 10-digit number beginning with zero is also acceptable.

tendersArray of objects(Tender)

An array of tenders used to pay for the transaction. This is used if payment is tendered at the point of sale. A Tender differs from a PaymentMethod in that the former represents a payment that has already been collected at the point of sale, whereas the latter represents a payment that still needs to be collected from a third party.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

paymentMethodsArray of objects(PaymentMethod)

An array of payment methods to be used as payment for the transaction. This is used if payment is not tendered at the point of sale, but is effected through one or more calls to third party payment providers as part of the request. A PaymentMethod differs from a Tender in that the former represents payment that still needs to be collected from a third party, whereas the latter represents payment that has already been collected at the point of sale.

Failed to generate code sample.

Responses

Created

Bodyapplication/json
transactionLabelsArray of objects(TransactionLabel)

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.

purchaseTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

taxTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

customerobject(Customer)required

A customer who ultimately requests a transaction be performed.

customer.​firstNamestring

The customer's first name(s)

customer.​lastNamestring

The customer's last name

customer.​addressstring

The customer's address

customer.​dateOfBirthstring(date-time)

The customer's date of birth

customer.​statusstring

The status of this customer on the Giftcard system. For example: active, inactive

customer.​msisdnstring^\+?[1-9]\d{0,14}

This must conform to the ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en) e.g. 27821234567 for a South African number.

customer.​emailAddressstring

The customer's email address. This address must conform to RFC 5322 3.4.1 addr-spec (https://tools.ietf.org/html/rfc5322#section-3.4.1).

customer.​addressDetailsobject(Address)

Details of a customer's address

customer.​profileIdstring

The customer's profile ID. Used to uniquely identify a customer.

utilityobject(Utility)required

Represents a utility with whom a meter is registered.

utility.​namestring

Name of the utility.

utility.​addressstring

Physical address of the utility.

utility.​vatRegNumstring

VAT registration number of the utility.

utility.​clientIdstring

Identifier assigned by the utility to the client connecting to the utility's token issuing service.

utility.​messagestring

Message send by the utility to be displayed on the customer receipt.

utilityTypestring

Type of utility purchase being requested (e.g. electricity, water, gas).

tokensArray of objects(Token)

List of tokens issued for the purchase.

debtRecoveryChargesArray of objects(DebtRecoveryCharge)

List of charges that have been levied in order to reclaim outstanding debts associated with the meter.

serviceChargesArray of objects(ServiceCharge)

List of service charges levied against this meter.

vatInvoiceNumberstring

The VAT invoice number corresponding to this specific transaction.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Response
application/json
{ "transactionLabels": [ {} ], "purchaseTotal": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "taxTotal": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "amounts": { "requestAmount": {}, "approvedAmount": {}, "feeAmount": {}, "balanceAmount": {}, "additionalAmounts": {} }, "meter": { "meterId": "string", "track2Data": "string", "serviceType": "string", "supplyGroupCode": "string", "keyRevisionNum": "string", "tariffIndex": "string", "tokenTechCode": "string", "algorithmCode": "string", "keyChangeData": {} }, "customer": { "firstName": "string", "lastName": "string", "address": "string", "dateOfBirth": "2019-08-24T14:15:22Z", "status": "string", "msisdn": "string", "emailAddress": "string", "addressDetails": {}, "profileId": "string" }, "utility": { "name": "string", "address": "string", "vatRegNum": "string", "clientId": "string", "message": "string" }, "utilityType": "string", "tokens": [ {} ], "debtRecoveryCharges": [ {} ], "serviceCharges": [ {} ], "vatInvoiceNumber": "string", "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" }

confirmTokenPurchase

Request

Confirms that a purchase has been completed successfully (i.e. the tokens have been issued to the customer and payment has been received by the merchant). It is typical that token providers do not support confirmations (aka advices), but certain point-of-sale integrations may require support for these. A confirmation request must be sent repeatedly until an HTTP response code indicating a final state has been received (i.e. either 202 or 4xx).

Security
httpBasic or oauth2
Path
purchaseIdstringrequired

The randomly generated UUID of the original purchase request.

confirmationIdstringrequired

The randomly generated UUID of this confirmation.

Bodyapplication/jsonrequired

A token purchase confirmation

idstringrequired

The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122

requestIdstringrequired

The UUID identifying the request that this advice relates to

timestring(date-time)required

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

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

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.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

tendersArray of objects(Tender)required

An array of tenders used to pay for the transaction

tenders[].​accountTypestring

The type of account

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""STORED_VALUE"
tenders[].​amountobject(LedgerAmount)required

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

tenders[].​amount.​amountinteger(int64)required

Amount in minor denomination, e.g. R799.95 is encoded as 79995

tenders[].​amount.​currencystring[0-9]{3}required

Three digit currency number from ISO 4217, e.g. South African Rand is encoded as 710

tenders[].​amount.​ledgerIndicatorstring

Indicates whether this amount is a debit or a credit. Only required when the amount can be either a debit or a credit

Enum"DEBIT""CREDIT"
tenders[].​cardNumberstring[0-9]{6}[0-9*]{0,13}

A PCI compliant masked card number, with at least the first 6 digits in the clear. Only applicable to card based transactions

tenders[].​referencestring

A free text reference

tenders[].​tenderTypestringrequired

The type of tender used

Enum"CASH""CHEQUE""CREDIT_CARD""DEBIT_CARD""WALLET""ROUNDING""GIFT_CARD""LOYALTY_CARD""OTHER""REWARD"
Failed to generate code sample.

Responses

Accepted

Bodyapplication/json
idstringrequired

The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122

requestIdstringrequired

The UUID identifying the request that this advice relates to

timestring(date-time)required

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

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

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.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

Response
application/json
{ "id": "string", "requestId": "string", "time": "2019-08-24T14:15:22Z", "thirdPartyIdentifiers": [ {} ], "stan": "string", "rrn": "string", "amounts": { "requestAmount": {}, "approvedAmount": {}, "feeAmount": {}, "balanceAmount": {}, "additionalAmounts": {} } }

retryPurchaseRequest

Request

If no response was received to a purchase request due to a timeout or temporary communications failure, PoS may retry the same purchase request by calling this resource. The original purchase request will be resubmitted to the provider. If the provider had received the original request, it will respond by returning any tokens that were already issued. If not, then either new tokens may be issued as per a normal purchase or the retry will be declined.

Security
httpBasic or oauth2
Path
purchaseIdstringrequired

The randomly generated UUID of the original purchase request.

Bodyapplication/jsonrequired

The original token purchase request.

transactionLabelsArray of objects(TransactionLabel)

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.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

purchaseAmountobject(LedgerAmount)required

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

purchaseAmount.​amountinteger(int64)required

Amount in minor denomination, e.g. R799.95 is encoded as 79995

purchaseAmount.​currencystring[0-9]{3}required

Three digit currency number from ISO 4217, e.g. South African Rand is encoded as 710

purchaseAmount.​ledgerIndicatorstring

Indicates whether this amount is a debit or a credit. Only required when the amount can be either a debit or a credit

Enum"DEBIT""CREDIT"
utilityTypestring

Type of utility purchase being requested (e.g. electricity, water, gas).

msisdnstring(^\+?[1-9]\d{1,14})|(^[0][0-9]{9})

Mobile phone number of the customer to which the outcome of a transaction can be communicated. This should conform to the ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en), but a 10-digit number beginning with zero is also acceptable.

tendersArray of objects(Tender)

An array of tenders used to pay for the transaction. This is used if payment is tendered at the point of sale. A Tender differs from a PaymentMethod in that the former represents a payment that has already been collected at the point of sale, whereas the latter represents a payment that still needs to be collected from a third party.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

paymentMethodsArray of objects(PaymentMethod)

An array of payment methods to be used as payment for the transaction. This is used if payment is not tendered at the point of sale, but is effected through one or more calls to third party payment providers as part of the request. A PaymentMethod differs from a Tender in that the former represents payment that still needs to be collected from a third party, whereas the latter represents payment that has already been collected at the point of sale.

Failed to generate code sample.

Responses

Accepted

Bodyapplication/json
transactionLabelsArray of objects(TransactionLabel)

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.

purchaseTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

taxTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

customerobject(Customer)required

A customer who ultimately requests a transaction be performed.

customer.​firstNamestring

The customer's first name(s)

customer.​lastNamestring

The customer's last name

customer.​addressstring

The customer's address

customer.​dateOfBirthstring(date-time)

The customer's date of birth

customer.​statusstring

The status of this customer on the Giftcard system. For example: active, inactive

customer.​msisdnstring^\+?[1-9]\d{0,14}

This must conform to the ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en) e.g. 27821234567 for a South African number.

customer.​emailAddressstring

The customer's email address. This address must conform to RFC 5322 3.4.1 addr-spec (https://tools.ietf.org/html/rfc5322#section-3.4.1).

customer.​addressDetailsobject(Address)

Details of a customer's address

customer.​profileIdstring

The customer's profile ID. Used to uniquely identify a customer.

utilityobject(Utility)required

Represents a utility with whom a meter is registered.

utility.​namestring

Name of the utility.

utility.​addressstring

Physical address of the utility.

utility.​vatRegNumstring

VAT registration number of the utility.

utility.​clientIdstring

Identifier assigned by the utility to the client connecting to the utility's token issuing service.

utility.​messagestring

Message send by the utility to be displayed on the customer receipt.

utilityTypestring

Type of utility purchase being requested (e.g. electricity, water, gas).

tokensArray of objects(Token)

List of tokens issued for the purchase.

debtRecoveryChargesArray of objects(DebtRecoveryCharge)

List of charges that have been levied in order to reclaim outstanding debts associated with the meter.

serviceChargesArray of objects(ServiceCharge)

List of service charges levied against this meter.

vatInvoiceNumberstring

The VAT invoice number corresponding to this specific transaction.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Response
application/json
{ "transactionLabels": [ {} ], "purchaseTotal": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "taxTotal": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "amounts": { "requestAmount": {}, "approvedAmount": {}, "feeAmount": {}, "balanceAmount": {}, "additionalAmounts": {} }, "meter": { "meterId": "string", "track2Data": "string", "serviceType": "string", "supplyGroupCode": "string", "keyRevisionNum": "string", "tariffIndex": "string", "tokenTechCode": "string", "algorithmCode": "string", "keyChangeData": {} }, "customer": { "firstName": "string", "lastName": "string", "address": "string", "dateOfBirth": "2019-08-24T14:15:22Z", "status": "string", "msisdn": "string", "emailAddress": "string", "addressDetails": {}, "profileId": "string" }, "utility": { "name": "string", "address": "string", "vatRegNum": "string", "clientId": "string", "message": "string" }, "utilityType": "string", "tokens": [ {} ], "debtRecoveryCharges": [ {} ], "serviceCharges": [ {} ], "vatInvoiceNumber": "string", "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" }

reverseTokenPurchase

Request

Notifies that a purchase was not completed successfully. This can occur if the original request timed out or if payment was unsuccessful. Many providers, however, do not support reversals and once a token has been issued the merchant becomes liable for the cost irrespective of payment failure or timeout. The token may still be retrieved by a reprint request, which merchants may use to help accommodate this scenario. A reversal request must be sent repeatedly until an HTTP response code indicating a final state has been received (i.e. either 202 or 4xx).

Security
httpBasic or oauth2
Path
purchaseIdstringrequired

The randomly generated UUID of the original purchase request.

reversalIdstringrequired

The randomly generated UUID of this reversal.

Bodyapplication/jsonrequired

A token purchase reversal.

idstringrequired

The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122

requestIdstringrequired

The UUID identifying the request that this advice relates to

timestring(date-time)required

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

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

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.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

reversalReasonstringrequired

The reason for the reversal

Enum"TIMEOUT""CANCELLED""RESPONSE_NOT_FINAL""REFUND""VOID"
Failed to generate code sample.

Responses

Accepted

Bodyapplication/json
idstringrequired

The randomly generated UUID identifying this advice, as defined for a variant 4 UUID in RFC 4122

requestIdstringrequired

The UUID identifying the request that this advice relates to

timestring(date-time)required

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

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

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.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

Response
application/json
{ "id": "string", "requestId": "string", "time": "2019-08-24T14:15:22Z", "thirdPartyIdentifiers": [ {} ], "stan": "string", "rrn": "string", "amounts": { "requestAmount": {}, "approvedAmount": {}, "feeAmount": {}, "balanceAmount": {}, "additionalAmounts": {} } }

trialTokenPurchaseRequest

Request

This operation is identical to the 'createTokenPurchaseRequest' operation except that no tokens are returned and this operation carries no financial impact. This operation allows the customer to make an informed choice about the transaction outcome before committing to purchase electricity. This operation serves to inform a customer exactly what the outcome of their purchase is: the service charges which will be levied, the debt recovery charges, the number of units which will be provided etc. If a customer is dissatisfied with the details in the response, the customer may abort the transaction without any consequences.

Security
httpBasic or oauth2
Path
trialIdstringrequired

The randomly generated UUID of this request.

Bodyapplication/jsonrequired

A token purchase request.

transactionLabelsArray of objects(TransactionLabel)

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.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

purchaseAmountobject(LedgerAmount)required

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

purchaseAmount.​amountinteger(int64)required

Amount in minor denomination, e.g. R799.95 is encoded as 79995

purchaseAmount.​currencystring[0-9]{3}required

Three digit currency number from ISO 4217, e.g. South African Rand is encoded as 710

purchaseAmount.​ledgerIndicatorstring

Indicates whether this amount is a debit or a credit. Only required when the amount can be either a debit or a credit

Enum"DEBIT""CREDIT"
utilityTypestring

Type of utility purchase being requested (e.g. electricity, water, gas).

msisdnstring(^\+?[1-9]\d{1,14})|(^[0][0-9]{9})

Mobile phone number of the customer to which the outcome of a transaction can be communicated. This should conform to the ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en), but a 10-digit number beginning with zero is also acceptable.

tendersArray of objects(Tender)

An array of tenders used to pay for the transaction. This is used if payment is tendered at the point of sale. A Tender differs from a PaymentMethod in that the former represents a payment that has already been collected at the point of sale, whereas the latter represents a payment that still needs to be collected from a third party.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

paymentMethodsArray of objects(PaymentMethod)

An array of payment methods to be used as payment for the transaction. This is used if payment is not tendered at the point of sale, but is effected through one or more calls to third party payment providers as part of the request. A PaymentMethod differs from a Tender in that the former represents payment that still needs to be collected from a third party, whereas the latter represents payment that has already been collected at the point of sale.

Failed to generate code sample.

Responses

OK

Bodyapplication/json
transactionLabelsArray of objects(TransactionLabel)

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.

purchaseTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

taxTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

customerobject(Customer)required

A customer who ultimately requests a transaction be performed.

customer.​firstNamestring

The customer's first name(s)

customer.​lastNamestring

The customer's last name

customer.​addressstring

The customer's address

customer.​dateOfBirthstring(date-time)

The customer's date of birth

customer.​statusstring

The status of this customer on the Giftcard system. For example: active, inactive

customer.​msisdnstring^\+?[1-9]\d{0,14}

This must conform to the ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en) e.g. 27821234567 for a South African number.

customer.​emailAddressstring

The customer's email address. This address must conform to RFC 5322 3.4.1 addr-spec (https://tools.ietf.org/html/rfc5322#section-3.4.1).

customer.​addressDetailsobject(Address)

Details of a customer's address

customer.​profileIdstring

The customer's profile ID. Used to uniquely identify a customer.

utilityobject(Utility)required

Represents a utility with whom a meter is registered.

utility.​namestring

Name of the utility.

utility.​addressstring

Physical address of the utility.

utility.​vatRegNumstring

VAT registration number of the utility.

utility.​clientIdstring

Identifier assigned by the utility to the client connecting to the utility's token issuing service.

utility.​messagestring

Message send by the utility to be displayed on the customer receipt.

utilityTypestring

Type of utility purchase being requested (e.g. electricity, water, gas).

tokensArray of objects(Token)

List of tokens issued for the purchase.

debtRecoveryChargesArray of objects(DebtRecoveryCharge)

List of charges that have been levied in order to reclaim outstanding debts associated with the meter.

serviceChargesArray of objects(ServiceCharge)

List of service charges levied against this meter.

vatInvoiceNumberstring

The VAT invoice number corresponding to this specific transaction.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Response
application/json
{ "transactionLabels": [ {} ], "purchaseTotal": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "taxTotal": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "amounts": { "requestAmount": {}, "approvedAmount": {}, "feeAmount": {}, "balanceAmount": {}, "additionalAmounts": {} }, "meter": { "meterId": "string", "track2Data": "string", "serviceType": "string", "supplyGroupCode": "string", "keyRevisionNum": "string", "tariffIndex": "string", "tokenTechCode": "string", "algorithmCode": "string", "keyChangeData": {} }, "customer": { "firstName": "string", "lastName": "string", "address": "string", "dateOfBirth": "2019-08-24T14:15:22Z", "status": "string", "msisdn": "string", "emailAddress": "string", "addressDetails": {}, "profileId": "string" }, "utility": { "name": "string", "address": "string", "vatRegNum": "string", "clientId": "string", "message": "string" }, "utilityType": "string", "tokens": [ {} ], "debtRecoveryCharges": [ {} ], "serviceCharges": [ {} ], "vatInvoiceNumber": "string", "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" }

requestTokenReprint

Request

Requests a reprint of a token that was previously issued for a specified meter. The request can be for either the last token issued for that meter, or for a specific transaction reference, depending on what the provider supports.

Security
httpBasic or oauth2
Path
reprintIdstringrequired

The randomly generated UUID of this request.

Bodyapplication/jsonrequired

A token reprint request.

transactionLabelsArray of objects(TransactionLabel)

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.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

originalRefstring

Reference or receipt number for the original token in the case that a specific token is requested. If this field is not present, then the last-issued token will be requested from the provider.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Failed to generate code sample.

Responses

OK

Bodyapplication/json
transactionLabelsArray of objects(TransactionLabel)

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.

purchaseTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

taxTotalobject(LedgerAmount)

An amount object only containing value and currency, and optionally an indicator of DEBIT/CREDIT

amountsobject(Amounts)

Amounts which make up the transaction. Absent amounts have zero value.

meterobject(Meter)required

Data associated with a prepaid utility meter

meter.​meterIdstring[a-zA-Z0-9]{0,20}required

Unique identifier for the meter (e.g. serial number).

meter.​track2Datastring[a-zA-Z0-9=]{34}

Track 2 data stored on the magnetic stripe of a card that is supplied with certain meters. This data contains all meter details. It can be used as an alternative means of input at PoS and may be required by some providers.

meter.​serviceTypestring[a-zA-Z0-9]{0,12}

Type of service dispensed by this meter (e.g. electricity, water or gas).

meter.​supplyGroupCodestring[0-9]{6}

Code used to identify a group of suppliers.

meter.​keyRevisionNumstring[0-9]{1}

Key revision number of the meter.

meter.​tariffIndexstring[0-9]{2}

Code representing the tariff associated with this meter.

meter.​tokenTechCodestring[0-9]{2}

The means by which tokens are supplied for this meter (typically either numeric token or magnetic track).

meter.​algorithmCodestring[0-9]{2}

Code used to identify token encryption algorithm used by the meter.

meter.​keyChangeDataobject(KeyChangeData)

Represents updated meter encryption key data.

customerobject(Customer)required

A customer who ultimately requests a transaction be performed.

customer.​firstNamestring

The customer's first name(s)

customer.​lastNamestring

The customer's last name

customer.​addressstring

The customer's address

customer.​dateOfBirthstring(date-time)

The customer's date of birth

customer.​statusstring

The status of this customer on the Giftcard system. For example: active, inactive

customer.​msisdnstring^\+?[1-9]\d{0,14}

This must conform to the ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en) e.g. 27821234567 for a South African number.

customer.​emailAddressstring

The customer's email address. This address must conform to RFC 5322 3.4.1 addr-spec (https://tools.ietf.org/html/rfc5322#section-3.4.1).

customer.​addressDetailsobject(Address)

Details of a customer's address

customer.​profileIdstring

The customer's profile ID. Used to uniquely identify a customer.

utilityobject(Utility)required

Represents a utility with whom a meter is registered.

utility.​namestring

Name of the utility.

utility.​addressstring

Physical address of the utility.

utility.​vatRegNumstring

VAT registration number of the utility.

utility.​clientIdstring

Identifier assigned by the utility to the client connecting to the utility's token issuing service.

utility.​messagestring

Message send by the utility to be displayed on the customer receipt.

utilityTypestring

Type of utility purchase being requested (e.g. electricity, water, gas).

tokensArray of objects(Token)

List of tokens issued for the purchase.

debtRecoveryChargesArray of objects(DebtRecoveryCharge)

List of charges that have been levied in order to reclaim outstanding debts associated with the meter.

serviceChargesArray of objects(ServiceCharge)

List of service charges levied against this meter.

vatInvoiceNumberstring

The VAT invoice number corresponding to this specific transaction.

idstringrequired

The randomly generated UUID identifying this transaction, as defined for a variant 4 UUID in RFC 4122

timestring(date-time)required

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

originatorobject(Originator)required

The Originator object encapsulates data relating to the originator of the transaction

originator.​institutionobject(Institution)required

Originating, acquiring, processing, or receiving institution details

originator.​institution.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

originator.​institution.​namestringrequired

The institutions's name

originator.​terminalIdstringrequired

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

originator.​merchantobject(Merchant)required

Merchant related data. Must be included if available

originator.​merchant.​merchantTypestring[0-9]{4}required

The assigned four digit merchant category code

originator.​merchant.​merchantIdstringrequired

The assigned merchant identifier. Also known as card acceptor id

originator.​merchant.​merchantNameobject(MerchantName)required

A container object representing the Merchant Name and Location

originator.​merchant.​merchantName.​namestringrequired

The merchant or trading as name associated with the merchant

originator.​merchant.​merchantName.​citystringrequired

The city where the merchant is located

originator.​merchant.​merchantName.​regionstringrequired

The state or region where the merchant is located

originator.​merchant.​merchantName.​countrystringrequired

The country where the merchant is located

originator.​operatorIdstring

The ID that uniquely identifies the person operating the terminal specified by the terminalId field.

originator.​channelIdstring

The ID that uniquely identifies the originator's channel that this transaction was received through.

clientobject(Institution)required

Originating, acquiring, processing, or receiving institution details

client.​idstringrequired

The institution's ID. API implementations should take care to set this field as appropriate for the implementation.

client.​namestringrequired

The institutions's name

settlementEntityobject(Institution)

Originating, acquiring, processing, or receiving institution details

receiverobject(Institution)

Originating, acquiring, processing, or receiving institution details

thirdPartyIdentifiersArray of objects(ThirdPartyIdentifier)required

An array of identifiers which each identify the transaction within each entity's system.

thirdPartyIdentifiers[].​institutionIdstringrequired

The entity's institution ID.

thirdPartyIdentifiers[].​transactionIdentifierstringrequired

The identifier assigned to this transaction by the institution represented in institutionId. This value should be unique within the institution's system.

slipDataobject(SlipData)

Data that may be printed on the customer slip for information purposes

basketRefstring

Used to group multiple transactions which would otherwise be considered independent.

tranTypestring

Data relating to the type of transaction taking place (i.e. cash withdrawal, goods and services etc.).

Enum"GOODS_AND_SERVICES""CASH_WITHDRAWAL""DEBIT_ADJUSTMENT""GOODS_AND_SERVICES_WITH_CASH_BACK""NON_CASH""RETURNS""DEPOSIT""CREDIT_ADJUSTMENT""GENERAL_CREDIT""AVAILABLE_FUNDS_INQUIRY"
srcAccTypestring

This specifies the type of source account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
destAccTypestring

This specifies the type of destination account being used in the transaction (i.e. cheque, savings).

Enum"DEFAULT""SAVINGS""CHEQUE""CREDIT""UNIVERSAL""ELECTRONIC_PURSE""GIFT_CARD""STORED_VALUE"
stanstring

The System Trace Audit Number can be used to locate transactions across different systems.

rrnstring

This is a reference set by the original source of the transaction.

Response
application/json
{ "transactionLabels": [ {} ], "purchaseTotal": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "taxTotal": { "amount": 0, "currency": "string", "ledgerIndicator": "DEBIT" }, "amounts": { "requestAmount": {}, "approvedAmount": {}, "feeAmount": {}, "balanceAmount": {}, "additionalAmounts": {} }, "meter": { "meterId": "string", "track2Data": "string", "serviceType": "string", "supplyGroupCode": "string", "keyRevisionNum": "string", "tariffIndex": "string", "tokenTechCode": "string", "algorithmCode": "string", "keyChangeData": {} }, "customer": { "firstName": "string", "lastName": "string", "address": "string", "dateOfBirth": "2019-08-24T14:15:22Z", "status": "string", "msisdn": "string", "emailAddress": "string", "addressDetails": {}, "profileId": "string" }, "utility": { "name": "string", "address": "string", "vatRegNum": "string", "clientId": "string", "message": "string" }, "utilityType": "string", "tokens": [ {} ], "debtRecoveryCharges": [ {} ], "serviceCharges": [ {} ], "vatInvoiceNumber": "string", "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" }