Support for multi price and currency
Pages 89
- Home
- A Payments Initiation Architecture for the Web
- Adoption2017
- Agenda 12th November 2015 at 1700 UTC
- Agenda 17th December 2015 at 1700 UTC
- Agenda 19th November 2015 at 1700 UTC
- Agenda 20160107
- Agenda 20160121
- Agenda 20160128
- Agenda 20160204
- Agenda 20160211
- Agenda 20160310
- Agenda 20160317
- Agenda 20160331
- Agenda 20160407
- Agenda 20160414
- Agenda 20160421
- Agenda 20160428
- Agenda 20160505
- Agenda 20160512
- Agenda 20160519
- Agenda 20160526
- Agenda 20160602
- Agenda 20160609
- Agenda 20160616
- Agenda 20160623
- Agenda 20160728
- Agenda 20160804
- Agenda 20160811
- Agenda 20160818
- Agenda 20160825
- Agenda 20160901
- Agenda 20160908
- Agenda 20160915
- Agenda 20161006
- Agenda 20161020
- Agenda 20161027
- Agenda 20161103
- Agenda 20161110
- Agenda 20161117
- Agenda 20161201
- Agenda 20161208
- Agenda 20161215
- Agenda 20170105
- Agenda 20170112
- Agenda 20170119
- Agenda 20170126
- Agenda 20170202
- Agenda 20170209
- Agenda 20170216
- Agenda 20170223
- Agenda 20170302
- Agenda 3rd December 2015 at 1700 UTC
- Agenda for 3rd March telco
- All in the Browser
- Browser with remote Payment Apps
- Call for Consensus FPWD
- CFC_20140412
- Checkout API
- Components
- DeploymentExamples
- Extensibility_Notes
- F2F Agenda
- FTF March2017
- FTF Sep2016
- How it Works
- How the Working Group works
- Issue Summary
- MagWebinar
- Meeting Proposal 20161128
- Meetings
- Mobile Platform
- Networks List
- PaymentApp_Notes
- PaymentRequestFAQ
- PMI_Notes
- Proposed F2F Day 2 agenda
- RegistrationTypes
- Security and Privacy Considerations
- Spec_Notes
- Support for multi price and currency
- Synchronizing Github Issues with W3C Mailing Lists
- TestSuite
- TPAC 2015 issues list
- Web Payment Deployment Examples
- Web Payments Working Group FTF Meeting (July 2016)
- Web Payments Working Group Plan
- WPWG FTF Feb 2016
- WPWG FTF Feb 2016 Requirements
- Show 74 more pages…
Mailing list archives
Issues
- General
- Payment Request API
- Payment Method Identifiers
- Basic Card Payment
- Payment Apps API
- HTTP API and Messages
Tests
Adoption
Previous Topics
Clone this wiki locally
These notes reflect discussion among Jason Normore, Andre Lyver, Rouslan Solomakhin, and Ian Jacobs about Web Payments WG issue 3, issue 4, issue 178, issue 29.
Design principles
- Keep the simple case of one total simple.
- Support the communication of data from the merchant, but allow the mediator and payment apps to manage display and user interaction.
- Allow merchants, payment methods, and payment apps to handle most currency issues.
Proposal
Changes to Payment Request API
- In addition to “total” in PaymentDetails, add [optional] “total” to PaymentMethodData.
- Add an event “PaymentMethodsChange” so that the merchant can update the payment request based on user selection of payment method.
- Add a statement that the mediator MAY display different totals when displaying payment method information.
- Add a statement that the merchant SHOULD verify that the total in the payment response matches the merchant’s expectations.
Changes to (future) Payment App Spec
- Add a statement that the payment app MAY display different totals when displaying payment method information.
Leave Out of Scope ("for v1")
- API support for more than one total per payment method.
- Dynamic Currency Conversion (DCC).
- See the Background below for more explanation on forms of currency conversion that can be done.
For discussion: This proposal does not include firing PaymentMethodsChange when the user changes payment method in a third party payment app. Is that necessary? Is it desirable? Is it possible?
User Experience on Payment Method Change
- As with Shipping Address, the idea of PaymentMethodsChange is to update the payment request. The proposal does not imply that the merchant receives notification of payment app selection, just payment method selection.
- Imagine different user experiences:
- In the case where the user selects a payment app, we anticipate control being handed to the payment app and thus PaymentMethodsChange would not fire. The next paymentRequest API activity would involve the payment response.
- In the case where the user instead selects (a payment instrument for) a given payment method directly --whether offered natively by the browser or via a third party payment app-- if the user's experience is to "immediately request authorization" upon selection of the instrument, then it does not make sense for PaymentMethodsChange to fire.
- On the other hand, if the user's experience is to "select that payment instrument for additional interaction" then it does make sense for PaymentMethodsChange to fire (to update the total) before the user authorizes payment.
For discussion: What user experience do we anticipate or want to encourage regarding payment method/instrument selection? Should payment app registration (and updates) include the (optional) ability for the app to share information about specific instruments, which would enable the mediator to improve the user experience before handing control to the third party payment app?
Different ways to handle multicurrency
"Standard" Multiple Currency Options
The merchant operates separate merchant accounts for each currency. The list of currencies accepted by the merchant is limited based on the acquirer's ability to settle funds in these currencies. A user typically pre-selects a preferred currency (or, sometimes, country) before starting to shop, or shops (after redirection) on the merchant's country-specific site. The transaction is authorized in the user's preferred currency, and settlement happens in the same currency.
Multi-Currency Processing (MCP)
In this scenario, the merchant typically only needs one merchant account with a PSP in their preferred settlement currency, and is provided with a feed or API of exchange rates which they can use to convert all their prices so that customers can shop in the user's preferred currency. As in the "standard" case, the user can select a preferred currency (or country). Unlike the "standard" case, the supported currency list can now be much more extensive and complete, rather than limited to a handful of merchant settlement currencies. At checkout time, the user is authorized and charged in the user's preferred currency, but the funds settle in the merchant's account in the merchant's preferred currency.
Dynamic Currency Conversion (DCC)
With DCC, the currency conversion takes place a checkout time. The issuing bank/country of the cardholder is determined when the card number is provided. If the card currency differs from the merchant's preferred currency, the cardholder is presented with an option to pay in their native currency, or in the merchant's currency. In this situation, the price of the goods are converted from the merchant's settlement currency to the cardholder's native currency, with an fx markup that is typically shared between the merchant and the acquirer, and/or DCC provider.
Observations about Support for these Options
- The Payment Request API supports the Standard and MCP options, since the currency was already preselected by the user while browsing. The merchant creates the PaymentRequest with the total amount in that currency.
- Furthermore, payment apps and merchants can engage in back-channel discussions to confirm currency options.
- DCC can be done by (third party) payment apps.
- If we want to call this out, we should address the issue of which data appears in the payment response: the merchant's specified amount/currency, the converted amount/currency, or both? Given that the merchant may have a revenue share of the f/x, it can be assumed that there is already reporting in place between the merchant and the payment app for this, but for the sake of completeness, Payment Request should be able to include the details of the f/x that took place.
- Note that if the merchant does not wish to support a converted currency, they can reject the payment response and relaunch dialog with the user.
For discussion: Should we call out in the future payment app spec that payment apps MAY do DCC, should we discourage it, or should we remain silent?