Process Payment Request

When a buyer selects the payment app to make payment during the checkout process, SHOPLINE will use the predetermined parameter protocol to initiate an HTTP call to the latest payment URL set by your payment app, and redirect the buyer to the PaymentUrl returned by you. After the payment is completed, you need to redirect the buyer back to the RedirectUrl passed in the interface, where the buyer will wait for the final payment result. You can synchronize payment results to SHOPLINE in the following two ways:

  1. Provide a payment query URL, then SHOPLINE will initiate HTTP calls through the payment query URL at a certain frequency after calling the payment URL, and try to get the result of the payment until the final status is obtained or the final timeout (usually 24 hours) ;
  2. Actively call our payment notification Webhook interface until a correct response is returned;

How the payment app flow works

The following diagram illustrates how the payment flow between the payment app and SHOPLINE works:

image.png

  1. The customer completes the checkout, triggering a payment request.
  2. SHOPLINE sends a backend request to the payment app specifying the amount and currency to be charged.
  3. The payment app responds with the redirect URL of the payment page hosted by the partner app.
  4. SHOPLINE redirects the customer to the redirect URL.
  5. The payment app collects the customer's payment credentials and processes the payment as described in the backend request.
  6. The payment app sends the payment result to SHOPLINE, and SHOPLINE will implement a retry policy as needed.
  7. SHOPLINE responds with a redirect URL and sends a successful HTTP status.
  8. The payment app redirects the customer to SHOPLINE.
  9. The customer proceeds to checkout.

Please be noted that the payment app should use the payment order number we passed for idempotent processing.

Embedded mode

image.png

Payment Status Flow

For a payment request initiated by a payment app, we expect its payment status to flow as follows: image.png

Request Payment Interface

When requesting payment, Shopline will request the payment Url provided by you through Http-Post;
Example request header Corresponds to Http Request Header pay-api-version: 1.0.0 pay-api-idempotency-key: TESTKEYKEYKEY pay-api-signature: SIGNSIGNSIGN pay-api-timestamp: 1665632758606000 pay-api-store-handle: xxx

FieldIs it required?Description
pay-api-versionYesThe API VERSION you filled in when configuring the payment app extension
pay-api-idempotency-keyYesidempotent key
pay-api-signatureYessignature value
pay-api-timestampYesTimestamp when the request was initiated
pay-api-store-handleYesThe unique identifier of the store, for example: store1

Example Request Body

Corresponds to Http Request Body

{
"orderTransactionId": "test_4ea758952734",
"referenceOrderId": "test_ff13c864b7fc",
"amount": 47,
"currency": "test_6ecc3b427a9f",
"cancelUrl": "test_a273b5c6sas",
"redirectUrl": "test_a273b5c641b4",
"notifyUrl": "test_188f3fe29ae2",
"billing": {
"personalInfo": {
"firstName": "test_fe18d6fc2798",
"lastName": "test_53fb73557da0",
"email": "test_e5e3dbd08790",
"identityType": "test_cac8c5abdbc7",
"identityNumber": "test_ebc761bb42ac",
"gender": "test_0704156bc002",
"phoneNumber": "test_e387bba596a8",
"homeTelephone": "test_a904ea96f89f",
"birthDay": "test_dccbf5b55cb6"
},
"address": {
"countryCode": "test_58ee6b67432f",
"state": "test_c86268fac927",
"stateCode": "test_bd232ee9b52a",
"city": "test_a8e72a4b7660",
"district": "test_60580c478afe",
"street": "test_f6ca14b11e07",
"street2": "test_9d168406be68",
"street3": "test_c9c85ef7c4b6",
"postcode": "test_7250544bd97d"
}
},
"shipping": {
"personalInfo": {
"firstName": "test_4db57f98c782",
"lastName": "test_d25c9b6d4a07",
"email": "test_089851321917",
"identityType": "test_2f2fcc09f376",
"identityNumber": "test_9b940715498a",
"gender": "test_5650bb1861d2",
"phoneNumber": "test_67507bac86dd",
"homeTelephone": "test_a09b85892bc2",
"birthDay": "test_9f05f7e481bb"
},
"address": {
"countryCode": "test_096475ce74d7",
"state": "test_c2113a8b18c9",
"stateCode": "test_2b8d522f55fa",
"city": "test_d0a6b9b780ca",
"district": "test_95a9222ca449",
"street": "test_a423b3d71c5e",
"street2": "test_9fb2013867b3",
"street3": "test_86d526908645",
"postcode": "test_09ffe0b8cf1b"
},
"shippingMethod": "test_7796822bf919",
"carrier": "test_17327dbfb7ce"
},
"products": [
{
"id": "test_fb4ef47a1a0f",
"name": "test_260a61ca16a8",
"sku": "test_5f883d1deab3",
"desc": "test_d0cbf7004770",
"quantity": 38,
"unitPrice": {
"value": 54,
"currency": "test_17c30bdc32b3"
}
}
],
"amountBreakdown": {
"productAmount": 67,
"discount": 99,
"productTax": 49,
"shippingAmount": 10,
"shippingTax": 5,
"other": 94
},
"merchant": {
"storeWebsite": "test_b085e7df3518",
"configData": {}
},
"card": {
"cardNo": "4444444444444444",
"expirationMonth": "11",
"expirationYear": "24",
"cvv": "123",
"holderName": "test"
},
"client": {
"ip": "test_b556bd9ff25a",
"deviceType": "test_8baf6c506ef8",
"deviceId": "test_5a6951dcc93c",
"javaScriptEnabled": true,
"javaEnabled": false,
"colorDepth": "test_8f35331e86f5",
"screenHeight": "test_e2c2f73f00bf",
"screenWidth": "test_a0b636ab9ef2",
"timeZoneOffset": "test_f65b530dfe9c",
"userAgent": "test_743313c383b4",
"language": "test_0231f84d3825",
"transactionWebSite": "test_c991d72e506c",
"accept": "test_7b30ef6c583c"
}
}
FieldTypeIs it requiredDescription
orderTransactionIdstringYesPayment transaction serial number, unique identification of payment request
referenceOrderIdstringYesBusiness order number, such as e-commerce order number
amountintegerYesAmount of the transaction
currencystringYesTransaction Amount Currency
redirectUrlstringYesPayment completed redirection URL
cancelUrlstringYesRedirect URL when user cancels payment
notifyUrlstringYesNotification URL for asynchronous results
billingobjectNoBilling
|─personalInfoobjectYesPersonal Information
|─firstNamestringNoFirst name
|─lastNamestringYesLast Name
|─emailstringNoEmail
|─identityTypestringNoIdentification type
|─identityNumberstringNoID Number
|─genderstringNoGender
|─phoneNumberstringNoPhone number
|─homeTelephonestringNoHome Telephone
|─birthDaystringNoBirthday (format as YYYY-MM-DD)
|─addressobjectYesAddress
|─countryCodestringYesCountry Code
|─statestringNoState
|─stateCodestringNoState code
|─citystringNoCity
|─districtstringNoDistrict
|─streetstringNoStreet
|─street2stringNoStreet2
|─street3stringNoStreet3
|─postcodestringNoPostcode
shippingobjectNoLogistic information
|─personalInfoobjectYesPersonal Information
|─firstNamestringNoFirst name
|─lastNamestringYesLast name
|─emailstringNoEmail
|─identityTypestringNoIdentification type
|─identityNumberstringNoID number
|─genderstringNoGender
|─phoneNumberstringNoPhone number
|─homeTelephonestringNoHome telephone
|─birthDaystringNoBirthday (format as YYYY-MM-DD)
|─addressobjectYesAddress information
|─countryCodestringYesCountry code
|─statestringNoState
|─stateCodestringNoState code
|─citystringNocity
|─districtstringNoDistrict
|─streetstringNoStreet
|─street2stringNoStreet2
|─street3stringNoStreet3
|─postcodestringNoPostcode
|─shippingMethodstringYesLogistics methods, such as express delivery to residences
|─carrierstringNoTransportation channels, such as SF Express, YTO
productsarrayYesProduct list
|─objectYes
|─idstringYesProduct ID
|─namestringYesProduct name
|─skustringNoProduct SKU
|─descstringNoDescription
|─quantityintegerYesProduct quantity, non-item item data is 1
|─unitPriceobjectYesUnit price
|─valueintegerYesValue
|─currencystringYesCurrency
amountBreakdownobjectYesAmount break down
|─productAmountintegerYesTotal product amound
|─discountintegerYesDiscount
|─productTaxintegerYesProduct Tax
|─shippingAmountintegerYesShipping fee
|─shippingTaxintegerYesShipping tax
|─otherintegerYesOther fee
merchantobjectYesMerchant information
|─storeWebsitestringYesStore Website
|─configDataobjectNoThe merchant's onboard information is transparently transmitted to the channel, and only in the SHOPLINE binding mode will the value be transmitted
cardobjectNoThe embedded schema will pass
|-cardNostringYEScard number
|-expirationMonthstringYESValid month
|-expirationYearstringYESValid year
|-cvvstringYESCard CVV verification code
|-holderNamestringNoCardholder's Name
clientobjectYesCustomer information
|─ipstringYesCustomer IP
|─deviceTypestringNoDevice type
|─deviceIdstringNoDevice ID
|─javaScriptEnabledbooleanNoDoes the browser support javascript
|─javaEnabledbooleanNoDoes the browser support java
|─colorDepthstringNoBrowser monitor color depth
|─screenHeightstringNoCardholder Browser Screen Height
|─screenWidthstringNoCardholder Browser Screen Width
|─timeZoneOffsetstringNoBrowser local time zone
|─userAgentstringNoBrowser User-Agent
|─languagestringNoBrowser language
|─transactionWebSitestringNoTransaction URL
|─acceptstringNoThe browser accepts the message type

Response header example

SHOPLINE must receive the expected result before it considers the call to be successful. If the expected result is not returned, SHOPLINE will consider that the payment request failed due to unknown reasons, and will give the user a prompt on the settlement page;

Corresponds to Http Response Header

pay-api-signature: SIGNSIGNSIGN
FieldIs it requiredDescription
pay-api-signatureYessignature value

Response body example

Corresponds to Http Response Body

{
"orderTransactionId": "test_6f047f6db6e3",
"channelOrderTransactionId": "test_0a9991a24e73",
"paymentUrl": "test_6b84f55b3972",
"returnCode": "test_6d7c098e15ff",
"returnMessage": "test_0b9d14bd55c3",
"returnMessageId": "test_c02c42012682"
}
FieldTypeIs it requiredDescription
orderTransactionIdstringYesPayment transaction serial number, unique identification of payment request
channelOrderTransactionIdstringYesChannel transaction ID, the unique identification of this payment on your side
paymentUrlstringNoRedirect the payment page url of the payment app
returnCodestringYes
  • Interface response status code SUCCESS: The request is successful.
  • Only when SUCCESS is returned, we will consider that the request has been successfully processed; for other values, we will consider the request to have failed;
  • returnMessagestringNoFailure Reasons
    returnMessageIdstringNoChannel response identifier UUID, such as traceId

    For embedded mode:

    1. If the payment requires 3DS verification, please return the 3DS verification address in paymentUrl, and we will redirect the buyer to this page;
    2. if 3DS verification is not required, please return the redirectUrl passed as an input parameter in paymentUrl, The buyer will wait for the payment result on this page;

    Synchronize payment results

    After the customer successfully completes the payment process, you can synchronize the payment result to SHOPLINE in the following two ways, and SHOPLINE recommends that you provide both:

    1. Payment query URL, then SHOPLINE will initiate an HTTP call through the payment query URL at a certain frequency after calling the payment URL, and try to get the result of the payment until the final status is obtained or the final timeout (usually 24 hours) ;
    2. Actively call our payment notification Webhook interface until a correct response is returned;

    Payment query request header example

    Corresponding to Http Request Header

    pay-api-version: 1.0.0
    pay-api-idempotency-key: TESTKEYKEYKEY
    pay-api-signature: SIGNSIGNSIGN
    pay-api-timestamp: 1665632758606000
    FieldIs it required?Description
    pay-api-versionYesThe API VERSION you filled in when configuring the payment app extension
    pay-api-idempotency-keyYesidempotent key
    pay-api-signatureYessignature value
    pay-api-timestampYesTimestamp when the request was initiated

    Example Payment Query Request Parameters

    Corresponding to Http Request Query orderTransactionId=SLASDJK12312131

    FieldIs it required?Description
    orderTransactionIdYesPayment transaction serial number, unique identification of payment request

    Payment Query Response Header Example

    Corresponding to Http Response Header pay-api-signature: SIGNSIGNSIGN

    FieldIs it required?Description
    pay-api-signatureYesSignature value

    Example Payment Query Response Body

    Corresponding to Http Response Header Body

    FieldTypeIs it required?Description
    orderTransactionIdstringYesPayment transaction serial number, unique identification of payment request
    channelOrderTransactionIdstringYesChannel flow
    paymentStatusstringYesPayment Status
  • PROCESSING
  • AUTHORIZED
  • SUCCEEDED
  • FAILED
  • CANCELLED
  • EXPIRED
  • Payment status flow and enumeration
  • amountintegerYesAmount of the transaction
    currencystringYesTransaction Amount Currency
    failCodestringNofailure error code
    failMessagestringNofailure reason
    returnCodestringYesinterface status code
    SUCCESS
    returnMessagestringNoFailure reasons
    returnMessageIdstringNoChannel response identifier UUID, such as traceId

    Proactively notify SHOPLINE of the payment result

    You can actively notify SHOPLINE of the payment result by calling the OpenApi interface of the payment result notification; After receiving the notification, SHOPLINE will obtain the payment result through the payment query interface, and will not directly trust the notification result;

    Appendix:

    Country Code

    Country codes use the ISO 3166 international standard.

    English NameTwo-digit codeArea codeISO 3166-2
    AfghanistanAFISO 3166-2
    Åland IslandsAXISO 3166-2
    AlbaniaALISO 3166-2
    AlgeriaDZISO 3166-2
    American SamoaASISO 3166-2
    AndorraADISO 3166-2
    AngolaAOISO 3166-2
    AnguillaAIISO 3166-2
    AntarcticaAQISO 3166-2
    Antigua and BarbudaAGISO 3166-2
    ArgentinaARISO 3166-2
    ArmeniaAMISO 3166-2
    ArubaAWISO 3166-2
    AustraliaAUISO 3166-2
    AustriaATISO 3166-2
    AzerbaijanAZISO 3166-2
    BahamasBSISO 3166-2
    BahrainBHISO 3166-2
    BangladeshBDISO 3166-2
    BarbadosBBISO 3166-2
    BelarusBYISO 3166-2
    BelgiumBEISO 3166-2
    BelizeBZISO 3166-2
    BeninBJISO 3166-2
    BermudaBMISO 3166-2
    BhutanBTISO 3166-2
    Bolivia (Plurinational State of)BOISO 3166-2
    Bonaire, Sint Eustatius and SabaBQISO 3166-2
    Bosnia and HerzegovinaBAISO 3166-2
    BotswanaBWISO 3166-2
    Bouvet IslandBVISO 3166-2
    BrazilBRISO 3166-2
    British Indian Ocean TerritoryIOISO 3166-2
    Brunei DarussalamBNISO 3166-2
    BulgariaBGISO 3166-2
    Burkina FasoBFISO 3166-2
    BurundiBIISO 3166-2
    Cabo VerdeCVISO 3166-2
    CambodiaKHISO 3166-2
    CameroonCMISO 3166-2
    CanadaCAISO 3166-2
    Cayman IslandsKYISO 3166-2
    Central African RepublicCFISO 3166-2
    ChadTDISO 3166-2
    ChileCLISO 3166-2
    ChinaCNISO 3166-2
    Christmas IslandCXISO 3166-2
    Cocos (Keeling) IslandsCCISO 3166-2
    ColombiaCOISO 3166-2
    ComorosKMISO 3166-2
    CongoCGISO 3166-2
    Congo (Democratic Republic of the)CDISO 3166-2
    Cook IslandsCKISO 3166-2
    Costa RicaCRISO 3166-2
    Côte d'IvoireCIISO 3166-2
    CroatiaHRISO 3166-2
    CubaCUISO 3166-2
    CuraçaoCWISO 3166-2
    CyprusCYISO 3166-2
    CzechiaCZISO 3166-2
    DenmarkDKISO 3166-2
    DjiboutiDJISO 3166-2
    DominicaDMISO 3166-2
    Dominican RepublicDOISO 3166-2
    EcuadorECISO 3166-2
    EgyptEGISO 3166-2
    El SalvadorSVISO 3166-2
    Equatorial GuineaGQISO 3166-2
    EritreaERISO 3166-2
    EstoniaEEISO 3166-2
    EswatiniSZISO 3166-2
    EthiopiaETISO 3166-2
    Falkland Islands (Malvinas)FKISO 3166-2
    Faroe IslandsFOISO 3166-2
    FijiFJISO 3166-2
    FinlandFIISO 3166-2
    FranceFRISO 3166-2
    French GuianaGFISO 3166-2
    French PolynesiaPFISO 3166-2
    French Southern TerritoriesTFISO 3166-2
    GabonGAISO 3166-2
    GambiaGMISO 3166-2
    GeorgiaGEISO 3166-2
    GermanyDEISO 3166-2
    GhanaGHISO 3166-2
    GibraltarGIISO 3166-2
    GreeceGRISO 3166-2
    GreenlandGLISO 3166-2
    GrenadaGDISO 3166-2
    GuadeloupeGPISO 3166-2
    GuamGUISO 3166-2
    GuatemalaGTISO 3166-2
    GuernseyGGISO 3166-2
    GuineaGNISO 3166-2
    Guinea-BissauGWISO 3166-2
    GuyanaGYISO 3166-2
    HaitiHTISO 3166-2
    Heard Island and McDonald IslandsHMISO 3166-2
    Holy SeeVAISO 3166-2
    HondurasHNISO 3166-2
    Hong KongHKISO 3166-2
    HungaryHUISO 3166-2
    IcelandISISO 3166-2
    IndiaINISO 3166-2
    IndonesiaIDISO 3166-2
    Iran (Islamic Republic of)IRISO 3166-2
    IraqIQISO 3166-2
    IrelandIEISO 3166-2
    Isle of ManIMISO 3166-2
    IsraelILISO 3166-2
    ItalyITISO 3166-2
    JamaicaJMISO 3166-2
    JapanJPISO 3166-2
    JerseyJEISO 3166-2
    JordanJOISO 3166-2
    KazakhstanKZISO 3166-2
    KenyaKEISO 3166-2
    KiribatiKIISO 3166-2
    Korea (Democratic People's Republic of)KPISO 3166-2
    Korea (Republic of)KRISO 3166-2
    KuwaitKWISO 3166-2
    KyrgyzstanKGISO 3166-2
    Lao People's Democratic RepublicLAISO 3166-2
    LatviaLVISO 3166-2
    LebanonLBISO 3166-2
    LesothoLSISO 3166-2
    LiberiaLRISO 3166-2
    LibyaLYISO 3166-2
    LiechtensteinLIISO 3166-2
    LithuaniaLTISO 3166-2
    LuxembourgLUISO 3166-2
    MacaoMOISO 3166-2
    MadagascarMGISO 3166-2
    MalawiMWISO 3166-2
    MalaysiaMYISO 3166-2
    MaldivesMVISO 3166-2
    MaliMLISO 3166-2
    MaltaMTISO 3166-2
    Marshall IslandsMHISO 3166-2
    MartiniqueMQISO 3166-2
    MauritaniaMRISO 3166-2
    MauritiusMUISO 3166-2
    MayotteYTISO 3166-2
    MexicoMXISO 3166-2
    Micronesia (Federated States of)FMISO 3166-2
    Moldova (Republic of)MDISO 3166-2
    MonacoMCISO 3166-2
    MongoliaMNISO 3166-2
    MontenegroMEISO 3166-2
    MontserratMSISO 3166-2
    MoroccoMAISO 3166-2
    MozambiqueMZISO 3166-2
    MyanmarMMISO 3166-2
    NamibiaNAISO 3166-2
    NauruNRISO 3166-2
    NepalNPISO 3166-2
    NetherlandsNLISO 3166-2
    New CaledoniaNCISO 3166-2
    New ZealandNZISO 3166-2
    NicaraguaNIISO 3166-2
    NigerNEISO 3166-2
    NigeriaNGISO 3166-2
    NiueNUISO 3166-2
    Norfolk IslandNFISO 3166-2
    North MacedoniaMKISO 3166-2
    Northern Mariana IslandsMPISO 3166-2
    NorwayNOISO 3166-2
    OmanOMISO 3166-2
    PakistanPKISO 3166-2
    PalauPWISO 3166-2
    Palestine, State ofPSISO 3166-2
    PanamaPAISO 3166-2
    Papua New GuineaPGISO 3166-2
    ParaguayPYISO 3166-2
    PeruPEISO 3166-2
    PhilippinesPHISO 3166-2
    PitcairnPNISO 3166-2
    PolandPLISO 3166-2
    PortugalPTISO 3166-2
    Puerto RicoPRISO 3166-2
    QatarQAISO 3166-2
    RéunionREISO 3166-2
    RomaniaROISO 3166-2
    Russian FederationRUISO 3166-2
    RwandaRWISO 3166-2
    Saint BarthélemyBLISO 3166-2
    Saint Helena, Ascension and Tristan da CunhaSHISO 3166-2
    Saint Kitts and NevisKNISO 3166-2
    Saint LuciaLCISO 3166-2
    Saint Martin (French part)MFISO 3166-2
    Saint Pierre and MiquelonPMISO 3166-2
    Saint Vincent and the GrenadinesVCISO 3166-2
    SamoaWSISO 3166-2
    San MarinoSMISO 3166-2
    Sao Tome and PrincipeSTISO 3166-2
    Saudi ArabiaSAISO 3166-2
    SenegalSNISO 3166-2
    SerbiaRSISO 3166-2
    SeychellesSCISO 3166-2
    Sierra LeoneSLISO 3166-2
    SingaporeSGISO 3166-2
    Sint Maarten (Dutch part)SXISO 3166-2
    SlovakiaSKISO 3166-2
    SloveniaSIISO 3166-2
    Solomon IslandsSBISO 3166-2
    SomaliaSOISO 3166-2
    South AfricaZAISO 3166-2
    South Georgia and the South Sandwich IslandsGSISO 3166-2
    South SudanSSISO 3166-2
    SpainESISO 3166-2
    Sri LankaLKISO 3166-2
    SudanSDISO 3166-2
    SurinameSRISO 3166-2
    Svalbard and Jan MayenSJISO 3166-2
    SwedenSEISO 3166-2
    SwitzerlandCHISO 3166-2
    Syrian Arab RepublicSYISO 3166-2
    Taiwan, Province of ChinaTWISO 3166-2
    TajikistanTJISO 3166-2
    Tanzania, United Republic ofTZISO 3166-2
    ThailandTHISO 3166-2
    Timor-LesteTLISO 3166-2
    TogoTGISO 3166-2
    TokelauTKISO 3166-2
    TongaTOISO 3166-2
    Trinidad and TobagoTTISO 3166-2
    TunisiaTNISO 3166-2
    TurkeyTRISO 3166-2
    TurkmenistanTMISO 3166-2
    Turks and Caicos IslandsTCISO 3166-2
    TuvaluTVISO 3166-2
    UgandaUGISO 3166-2
    UkraineUAISO 3166-2
    United Arab EmiratesAEISO 3166-2
    United Kingdom of Great Britain and Northern IrelandGBISO 3166-2
    United States of AmericaUSISO 3166-2
    United States Minor Outlying IslandsUMISO 3166-2
    UruguayUYISO 3166-2
    UzbekistanUZISO 3166-2
    VanuatuVUISO 3166-2
    Venezuela (Bolivarian Republic of)VEISO 3166-2
    Viet NamVNISO 3166-2
    Virgin Islands (British)VGISO 3166-2
    Virgin Islands (U.S.)VIISO 3166-2
    Wallis and FutunaWFISO 3166-2
    Western SaharaEHISO 3166-2
    YemenYEISO 3166-2
    ZambiaZMISO 3166-2
    ZimbabweZWISO 3166-2

    [Currency and Precision Definition]

    CountryCurrency NameCurrency CodeCurrency precisionMinimum payment amountAmount parameter
    United Arab EmiratesUAE DirhamAEDtwo decimal places0.1x100
    AfghanistanAfghan AfghaniAFNtwo decimal places0.1x100
    ArmeniaArmenian DramAMDtwo decimal places0.1x100
    Curaçao and Sint MaartenNetherlands Antillian GuilderANGtwo decimal places0.1x100
    AngolaKwanzaAOAtwo decimal places0.1x100
    ArgentinaArgentine PesoARStwo decimal places0.1x100
    AustraliaAustralian DollarAUDtwo decimal places0.1x100
    ArubaAruban FlorinAWGtwo decimal places0.1x100
    AzerbaijanAzerbaijanian ManatAZNtwo decimal places0.1x100
    AlbaniaLekALLtwo decimal places0.1x100
    Bosnia and HerzegovinaConvertible MarksBAMtwo decimal places0.1x100
    BarbadosBarbados DollarBBDtwo decimal places0.1x100
    People's Republic of BangladeshTakaBDTtwo decimal places0.1x100
    BulgariaBulgarian LevBGNtwo decimal places0.1x100
    BahrainBahraini DinarBHDthree decimal places0.1x1000,and the last digit must be zero
    BurundiBurundi FrancBIFWhole number1x1,whole integer
    BermudaBermudian DollarBMDtwo decimal places0.1x100
    BruneiBrunei DollarBNDtwo decimal places0.1x100
    BoliviaBolivianoBOBtwo decimal places0.1x100
    BrazilBrazilian RealBRLtwo decimal places0.1x100
    BahamasBahamian DollarBSDtwo decimal places0.1x100
    Kingdom of BhutanNgultrumBTNtwo decimal places0.1x100
    BotswanaPulaBWPtwo decimal places0.1x100
    BelarusBelarussian RubleBYNtwo decimal places0.1x100
    BelizeBelize DollarBZDtwo decimal places0.1x100
    CanadaCanadian DollarCADtwo decimal places0.1x100
    Democratic Republic of the CongoCongolese FranceCDFtwo decimal places0.1x100
    Switzerland and LiechtensteinSwiss FrancCHFtwo decimal places0.1x100
    ChileUnidad de FomentoCLFWhole number1x1,whole integer
    ChileChilean PesoCLPtwo decimal places0.1x100,and the last digit must be zero
    People's Republic of ChinaYuan RenminbiCNYtwo decimal places0.1x100
    ColombiaColombian PesoCOPtwo decimal places0.1x100
    Costa RicaCosta Rican ColonCRCtwo decimal places0.1x100
    CubaCuban PesoCUPtwo decimal places0.1x100
    CubaCuban Convertible PesoCUCtwo decimal places0.1x100
    Cape VerdeCape Verde EscudoCVEtwo decimal places0.1x100
    Czech RepublicCzech KorunaCZKtwo decimal places0.1x100
    DjiboutiDjibouti FrancDJFWhole number1x1,whole integer
    DenmarkDanish KroneDKKtwo decimal places0.1x100
    Dominican RepublicDominican PesoDOPtwo decimal places0.1x100
    AlgeriaAlgerian DinarDZDtwo decimal places0.1x100
    EstoniaKroonEEKtwo decimal places0.1x100
    EgyptEgyptian PoundEGPtwo decimal places0.1x100
    EritreaNakfaERNtwo decimal places0.1x100
    EthiopiaEthiopian BirrETBtwo decimal places0.1x100
    EurozoneEuroEURtwo decimal places0.1x100
    FijiFiji DollarFJDtwo decimal places0.1x100
    Falkland IslandsFalkland Islands PoundFKPtwo decimal places0.1x100
    United Kingdom, Jersey, Guernsey, the Isle of Man, South Georgia and the South Sandwich Islands, the British Antarctic Territory, Tristan da CunhaPound SterlingGBPtwo decimal places0.1x100
    GeorgiaLariGELtwo decimal places0.1x100
    GhanaCediGHStwo decimal places0.1x100
    GibraltarGibraltar PoundGIPtwo decimal places0.1x100
    GambiaDalasiGMDtwo decimal places0.1x100
    GuineaGuinea FrancGNFWhole number1x1,whole integer
    GuatemalaQuetzalGTQtwo decimal places0.1x100
    GuyanaGuyana DollarGYDtwo decimal places0.1x100
    Hong KongHong Kong DollarHKDtwo decimal places0.1x100
    HondurasLempiraHNLtwo decimal places0.1x100
    CroatiaCroatian KunaHRKtwo decimal places0.1x100
    HaitiGourdeHTGtwo decimal places0.1x100
    HungaryForintHUFtwo decimal places0.1x100
    IndonesiaRupiahIDRtwo decimal places0.1x100
    IsraelNew Israeli SheqelILStwo decimal places0.1x100
    IndiaIndian RupeeINRtwo decimal places0.1x100
    IraqIraqi DinarIQDthree decimal places0.1x 1000,and the last digit must be zero
    IranIranian RialIRRtwo decimal places0.1x100
    IcelandIceland KronaISKWhole point1x1,whole integer
    JamaicaJamaican DollarJMDtwo decimal places0.1x100
    JordanJordanian DinarJODthree decimal places0.1x1000,and the last digit must be zero
    JapanYenJPYWhole number1x1,whole integer
    KenyaKenyan ShillingKEStwo decimal places0.1x100
    Kyrgyz RepublicSomKGStwo decimal places0.1x100
    CambodiaRielKHRtwo decimal places0.1x100
    ComorosComoro FrancKMFWhole number1x 1,whole integer
    North KoreaNorth Korean WonKPWtwo decimal places0.1x100
    South KoreaWonKRWWhole number1x1,whole integer
    KuwaitKuwaiti DinarKWDthree decimal places0.1x1000,and the last digit must be zero
    Cayman IslandsCayman Islands DollarKYDtwo decimal places0.1x100
    KazakhstanTengeKZTtwo decimal places0.1x100
    LaosKipLAKtwo decimal places0.1x100
    LebanonLebanese PoundLBPtwo decimal places0.1x100
    Sri LankaSri Lanka RupeeLKRtwo decimal places0.1x100
    LiberiaLiberian DollarLRDtwo decimal places0.1x100
    LesothoLotiLSLtwo decimal places0.1x100
    LithuaniaLithuanian LitasLTLtwo decimal places0.1x100
    LatviaLatvian LatsLVLtwo decimal places0.1x100
    LibyaLibyan DinarLYDthree decimal places0.1x1000,and the last digit must be zero
    MoroccoMoroccan DirhamMADtwo decimal places0.1x100
    MoldovaMoldovan LeuMDLtwo decimal places0.1x100
    MadagascarMalagasy AriaryMGAtwo decimal places0.1x100
    North MacedoniaDenarMKDtwo decimal places0.1x100
    MyanmarKyatMMKtwo decimal places0.1x100
    MongoliaTugrikMNTtwo decimal places0.1x100
    MacauPatacaMOPtwo decimal places0.1x100
    MauritaniaOuguiyaMRUtwo decimal places0.1x100
    MauritiusMauritius RupeeMURtwo decimal places0.1x100
    MaldivesRufiyaaMVRtwo decimal places0.1x100
    MalawiKwachaMWKtwo decimal places0.1x100
    MexicoMexican PesoMXNtwo decimal places0.1x100
    MexicoMexican Unidad de InversionMXVtwo decimal places0.1x100
    MalaysiaMalaysian RinggitMYRtwo decimal places0.1x100
    MozambiqueMeticalMZNtwo decimal places0.1x100
    NamibiaNamibia DollarNADtwo decimal places0.1x100
    NigeriaNairaNGNtwo decimal places0.1x100
    NicaraguaCordoba OroNIOtwo decimal places0.1x100
    NorwayNorwegian KroneNOKtwo decimal places0.1x100
    NepalNepalese RupeeNPRtwo decimal places0.1x100
    New ZealandNew Zealand DollarNZDtwo decimal places0.1x100
    OmanRial OmaniOMRthree decimal places0.1x1000,and the last digit must be zero
    PanamaBalboaPABtwo decimal places0.1x100
    PeruNuevo SolPENtwo decimal places0.1x100
    Papua New GuineaKinaPGKtwo decimal places0.1x100
    PhilippinesPhilippine PesoPHPtwo decimal places0.1x100
    PakistanPakistan RupeePKRtwo decimal places0.1x100
    PolandZlotyPLNtwo decimal places0.1x100
    ParaguayGuaraniPYGWhole number1x1,whole integer
    State of QatarQatari RialQARtwo decimal places0.1x100
    RomaniaNew LeyRONtwo decimal places0.1x100
    SerbiaNew Serbian DinarRSDtwo decimal places0.1x100
    RussiaRussian RubleRUBtwo decimal places0.1x100
    RwandaRwanda FrancRWFWhole number1x1,whole integer
    Saudi ArabiaSaudi RiyalSARtwo decimal places0.1x100
    Solomon IslandsSolomon Islans DollarSBDtwo decimal places0.1x100
    SeychellesSeychelles RupeeSCRtwo decimal places0.1x100
    Republic of the SudanNew Sudanese PoundSDGtwo decimal places0.1x100
    Republic of South SudanSouth Sudanese poundSSPtwo decimal places0.1x100
    SwedenSwedish KronaSEKtwo decimal places0.1x100
    SingaporeSingapore DollarSGDtwo decimal places0.1x100
    Saint Helena and AscensionSaint Helena PoundSHPtwo decimal places0.1x100
    Sierra LeoneLeoneSLLtwo decimal places0.1x100
    SomaliaSomali ShillingSOStwo decimal places0.1x100
    SurinameSurinamese DollarSRDtwo decimal places0.1x100
    São Tomé and PríncipeDobraSTNtwo decimal places0.1x100
    El SalvadorEl Salvador ColonSVCtwo decimal places0.1x100
    SyriaSyrian PoundSYPtwo decimal places0.1x100
    EswatiniLilangeniSZLtwo decimal places0.1x100
    ThailandBahtTHBtwo decimal places0.1x100
    TajikistanSomoniTJStwo decimal places0.1x100
    TurkmenistanManatTMTtwo decimal places0.1x100
    TunisiaTunisian DinarTNDthree decimal places0.1x1000,and the last digit must be zero
    TongaPaangaTOPtwo decimal places0.1x100
    TurkeyTurkish LiraTRYtwo decimal places0.1x100
    Trinidad and TobagoTrinidad and Tobago DollarTTDtwo decimal places0.1x100
    Republic of China (Taiwan)New Taiwan DollarTWDtwo decimal places0.1x100
    TanzaniaTanzanian ShillingTZStwo decimal places0.1x100
    UkraineHryvniaUAHtwo decimal places0.1x100
    UgandaUganda ShillingUGXWhole number1x1,whole integer
    United StatesUS DollarUSDtwo decimal places0.1x100
    UruguayPeso UruguayoUYUtwo decimal places0.1x100
    UzbekistanUzbekistan SumUZStwo decimal places0.1x100
    BolivarBolivar FuerteVEStwo decimal places0.1x100
    BolivarVenezuela Bolivar FuerteVEFtwo decimal places0.1x100
    VietnamDongVNDWhole number1x1,whole integer
    VanuatuVatuVUVWhole number1x1,whole integer
    SamoaTalaWSTtwo decimal places0.1x100
    Cameroon, Central African Republic, Chad, Republic of the Congo, Equatorial Guinea, GabonCFA Franc BEACXAFWhole number1x1,whole integer
    East CaribbeanEast Caribbean DollarXCDtwo decimal places0.1x100
    Benin, Burkina Faso, Guinea-Bissau, Ivory Coast, Mali, Niger, Senegal, TogoCFA Franc BCEAOXOFWhole number1x1,whole integer
    French Polynesia, New Caledonia, Wallis and FutunaCFP FrancXPFWhole number1x1,whole integer
    YemenYemeni RialYERtwo decimal places0.1x100
    South AfricaRandZARtwo decimal places0.1x100
    ZambiaZambian KwachaZMWtwo decimal places0.1x100
    ZimbabweZimbabwe DollarZWLtwo decimal places0.1x100
    Was this article helpful to you?