Short Payment Descriptor


Short Payment Descriptor is a compact data format for an easy exchange of a payment information using modern electronic channels, such as smart phones or NFC devices. Practically, the format is being deployed in the Czech Republic and the Slovak Republic, but format can be technically used with any bank using IBAN account numbers. That includes currently most of European countries, some in the Middle East and few other ones.

History

The format was started in May 2012 during the development of the mobile banking for Raiffeisenbank a.s. in cooperation with a technology company Inmite s.r.o.. Originally, the format should have been used for a P2P Payments via the QR Code. Later, it was generalized for many other usages, such as NFC payments or online payments.
Format was started as an opened effort from the very beginning and all specification, documentation, source codes, libraries and APIs were open-sourced under the Apache 2.0 license. Therefore, Short Payment Descriptor can be implemented by any subject without any legal concerns or fees. Due to this approach, the format was quickly recognized and accepted by many Czech invoice software companies and adopted by Czech banks. Československá obchodní banka was very active during the format development and it proposed the brand name for the communication to the users.
On November 14, 2012, the format was accepted by the Czech Banking Association and submitted to all Czech banks as the official local standard for QR code payments.

Format information

Short Payment Descriptor uses the ideas from the vCard and SEPA payment. It is designed to be compact, human readable and therefore, easy to implement. The format is based on defined key-value pairs and it can be extended by proprietary attributes. The string may contain any ASCII printable characters, any other characters must be encoded using the percent encoding.

Example of SPAYD payload

SPD*1.0*ACC:CZ5855000000001265098001*AM:480.50*CC:CZK*MSG:Payment for the goods

Default SPAYD keys

The default keys that are used in the SPAYD format are:
KeyCompulsoryLengthStructureDescriptionExample
ACCYESMax. 46 characters $IBAN?Bank account - an identifier of the payment recipient. Either IBAN account number, or optionally "IBAN+BIC" format ACC:CZ5855000000001265098001+RZBCCZPP*
... or...
ACC:CZ5855000000001265098001*
ALT-ACCNOMax. 93 characters Alternative bank account list. In case recipient has more accounts, this field allows a banking application to pick the one in the same bank, allowing faster accounting and lower fees for the client.ALT-ACC:CZ5855000000001265098001+RZBCCZPP,
CZ5855000000001265098001*
AMNOMax. 10 characters - 7 + 1 + 2 *?A payment amount.AM:480.55*
CCNOExactly 3 charactersCurrency code in ISO 4217A payment currency.CC:CZK*
RFNOMax. 16 charactersA sender's reference.RF:1234567890123456*
RNNOMax. 35 charactersRecipient's nameRN:PETR DVORAK*
DTNOExactly 8 charactersDate in ISO 8601 formatDue dateDT:20121231*
PTNOMax. 3 charactersPayment type PT:SPD*
MSGNOMax. 60 charactersMessage for payment recipient.MSG:Payment for internet*
CRC32NOExactly 8 charactersCRC32 checksum computed from canonic representation.
Canonic representation is obtained by removing CRC32 field from SPAYD representation, reconstructing SPAYD string while sorting key-pair attributes by key and values, applying CRC32 and converting to hexadecimal uppercase string.
Example:
Original SPAYD string: SPD*1.0*CC:CZK*ACC:CZ5855000000001265098001*AM:100.00*CRC32: AAD80227
Canonic SPAYD string: SPD*1.0*ACC:CZ5855000000001265098001*AM:100.00*CC:CZK
CRC32:81C0FFEE*

Integration with applications

The file type extension is:
*.spayd.
MIME type of the format is:
application/x-shortpaymentdescriptor.

Examples of format usage