Partner-Hosted MasterPassTM API Integration Guide Version 6.0

Notices

Proprietary Rights

The information contained in this document is proprietary and confidential to MasterCard International Incorporated, one or more of its affiliated entities (collectively "MasterCard"), or both. This material may not be duplicated, published, or disclosed, in whole or in part, without the prior written permission of MasterCard.

Trademarks

Trademark notices and symbols used in this document reflect the registration status of MasterCard trademarks in the United States. Please consult with the Customer Operations Services team or the MasterCard Law Department for the registration status of particular product, program, or service names outside the United States. All third-party product and service names are trademarks or registered trademarks of their respective owners.

Billing

For printed documents, MasterCard will bill principal members. Please refer to the appropriate MasterCard Consolidated Billing System (MCBS) document for billing-related information.

Content Disclaimer

No assurances are given that the information provided herein is error-free. You acknowledge and agree that inaccuracies may be present. The information is provided to you on an "AS IS"; basis for use at your own risk. MasterCard will not be responsible for any action you take as a result of this document. MasterCard will not be responsible for any action you take as a result of this document, or any inaccuracies, inconsistencies, formatting errors, or omissions.

Translation

A translation of any MasterCard manual, bulletin, release, or other MasterCard document into a language other than English is intended solely as a convenience to MasterCard members and other customers. MasterCard provides any translated document to its members and other customers "AS IS" and makes no representations or warranties of any kind with respect to the translated document, including, but not limited to, its accuracy or reliability. In no event shall MasterCard be liable for any damages resulting from members' and other customers' reliance on any translated document. The English version of any MasterCard document will take precedence over any translated version in any legal proceeding.

Publication Code

MWMI

Platform Integration Overview

MasterCard has developed a suite of digital wallet services that form the foundation for delivering 1) our proprietary reference MasterPassTM by MasterCard® wallet product, 2) a customizable version of our proprietary product and 3) a discrete bundle of authentication and connection services that Partners can incorporate into their own user interfaces to enable those Partner products to utilize the MasterPass Acceptance Network.

This document provides instructions for Partners to integrate with the MasterPass APIs.Partners choosing this integration strategy must implement their own user interface for the MasterPass Partner- hosted wallet workflows. The MasterPass Selector within the widget allows users to select which MasterPass wallet they would like to use for a particular transaction (consumers may wish to use different wallets for different purposes). The Shopping Cart within the widget provides a summary of the checkout that is in progress. The wallet provider should integrate with the guidelines for the Lightbox user interface. It will manage display of the wallet selector and shopping cart functionality (previously handled by the Flyout Widget for legacy wallets). Dimensions along with screen areas will be discussed later in this guide.

As an option, the Partner-hosted wallet also allows Partners to implement their own wallet user interface, and gives them the option to store and manage card, address and related data for their consumers or utilize the MasterPass Wallet Storage API's. There may be circumstances where a Partner would not want to store specific wallet data because of infrastructure resource limitations or compliance implications. MasterPass offers the ability for Partners to store data such as Card and Billing information, Shipping addresses and Loyalty program details. This data can be fully managed by the Partner. The Wallet Storage APIs include four services. These are REST services with full CRUD (Create, Read, Update, and Delete) operations. Individual entities can be maintained through the Card, Shipping Address and Loyalty Program services. The Wallet service must be called first in order to obtain a Wallet identity and it can also be used later on to retrieve the individual entities as a complete set. The specific service interfaces are covered within the later sections of this guide.

Product Design - How to build a Partner-hosted wallet

This section will help the partners build and design their wallets.

Versioning

All partners will need to comply with legacy implementations that merchants can have. For this version, this means that partners will need to make sure that their implementation works with v1 through v6.

Migration for existing Wallet providers and Newly Issued wallet expectations

To comply with the new sets of requirements and upgrade, partners will be expected to build:

- In-app experiences (see pairing, un-pairing, Connect and Express). These sections are marked with 'New for v6' annotation.

- Upgrade to fit with the lightbox experience (see section below) for both lightbox (shown for merchants that have upgraded to v6) and full screen lightbox (shown for merchants using v1 to v5 APIs)

Note: Before an upgrade, a partner wallet will show a fallback User Experience (similar to the current experience already built) for all merchants between v1 and v5 and the Standard checkout for v6. Wallets will be grayed out of the request calls and experiences that they can't manage prior to an upgrade (pairing, un-pairing, Connect and Express) MasterPass User Experiences.

There are a number of experiences that the partners will need to offer:

Registration

From partner's properties

The intent of that experience is to offer a means for consumers to register for the wallet and get fully setup in the wallet. The registration form would collect the necessary information from consumers to setup a wallet for them. Those details may differ per implementation but would at least end with the partner to have collected names, shipping and billing addresses, emails and phone numbers, security parameters (for instance, Security Questions if they are used), an explicit consent to accept Terms & Conditions and Privacy Policies. Those details can be either collected manually or provisioned if the partner can facilitate the User Experience by reducing the data collected.

The cards that consumers want to use would also need to be collected

Loyalty card details can also be collected during registration (optional).

During checkout

The intent for that experience is to offer a way for consumers to get setup and fully registered for the wallet when they started their interactions by shopping online and clicking on the MasterPass button. The details collected would be the same as the above registration but would need to be displayed in a checkout screen and the Optimized Experience screen

Add card and authentication

All cards added to the wallets must be authenticated with card issuers (with the exception of Private label cards). This authentication can take many forms and at least one needs to be completed. Note: requirements for Maestro are specific to that card type.

- Provisioning: Partners may decide to get the card information (16-digit numbers, expiry date and CVC/CVV2 details) directly from the card issuer as a source (either partial or the totally can be provisioned). If a partial provisioning is used, consumers will be asked for the remaining data fields.

-ASI, $0 or small amount authentication using a Payment Gateway: partners can also authenticate cards by sending an Auth message through Payment Gateway. This message can be an ASI, $0 or of a small local currency denomination.

-For Maestro cards (optional)

If the partner wants to enabled Maestro card,

  • The cardholder has successfully passed a 3DS authentication check (typically with a zero or with a token value in the amount field of the 3DS payer authentication request, PAREQ), or
  • The cardholder has provided MasterPass with the valid activation code given to him/her by the Maestro card issuer (or by another entity working on the issuer's behalf) for this purpose.  Note that this is the approach typically used when the card issuer pre-provisions its cards on MasterPass.
  • The cardholder has successfully completed another type of verification mechanism which the issuer has explicitly agreed to use.  Note that any wallet provider wishing to use this verification method must be capable of producing written evidence of explicit issuer agreement for it (for all issuers concerned by this option).
  • There can also be country specific authentication methods to certain countries. If you have any doubts please, contact your MasterCard representative.

Pairing

Pairing is a product introduced with our API version 6 which allows a simplified experience tailored for Merchant mobile applications or in-app experience. The experience takes place in 2 stages, the first time that a user goes through a checkout that can be paired; they will be asked for consent to share their details with that merchant. The second time the consumer will go through that experience, they will be benefiting from the simpler experience.

We also have introduced a distinction between 2 types of implementation of that same paired experience:

-"Connect" will allow all merchants to have a simplified experience that still requires an authentication and login by the consumer.

-"Express" will allow approved-by-MasterCard merchants to have an even simplified experience requiring no authentication and login by the consumer. Those merchants will require a separate Security approval and a different legal construct than the Connect merchants.

Connect Pairing during a non-checkout (New for v6)

The intent of that experience is to allow a merchant using Connect to pair the consumer with their wallet. This pairing will usually include: a login and consent for consumers to agree to share their details with the merchant.

Express Pairing during a non-checkout (New for v6)

The intent of that experience is to allow a merchant using Express to pair the consumer with their wallet. This pairing will usually include: a login, consent for consumers to agree to share their details with the merchant and consent to skip login when using that merchant's checkout.

Checkouts

Standard

Standard checkout is the main User Experience enabled for MasterPass. This would enable users to select and/or verify the payment information they want to use for that transaction: payment card, Shipping address if merchants requires it and loyalty details if merchant require it (optional))

Checkout including a new pairing for Connect (New for v6)

This checkout experience allows consumers to complete transaction and enable a new pairing of their wallet with merchants using Connect

Note: this flow will require the partner to maintain an open session for consumers during the whole flow. For this to work, the partner will not be able to use token as a base to their session management logic.

Checkout including a new pairing for Express (New for v6)

This checkout experience allows consumers to complete transaction and enable a new pairing of their wallet with merchants using Connect.

Note: this flow will require the partner to maintain an open session for consumers during the whole flow. For this to work, the partner will not be able to use token as a base to their session management logic.

Connect checkout (New for v6)

This checkout experience allows consumers to complete transaction and enable a pairing of their wallet with merchants using Connect

Express checkout (New for v6)

This checkout experience allows consumers to complete transaction and enable a pairing of their wallet with merchants using Express.

Authentication

Partners will also need to insure the integrity and security of their data and interface. Authentication is required at different points in the experiences:

  • Login
    • This would allow the user's session management. This should pertain to a multi-factor authentication mechanism (see certification requirements for details)
  • Any new card added
    • This would validate the card and allow only existing and validated by card issuer's cards to be added to the wallet.
  • Step up (MasterCard can operate an on-behalf service for all Partner's implementations)
    • This would allow to fulfil an incremental validation of the card during checkout and for a specific transaction which should allow for liability shift to be provided to merchants when they require it.

Account management

All account management functionalities below can be enabled through existing user Experience and partner's existing assets. We strongly encourage them to also be easily accessible during a checkout where it makes sense.

Manage profile

The intent of the experience will be to allow consumers to change their details selected during registration (Examples: name, password, security questions).

Manage cards and billing address.This experience allows consumers to manage their cards. They should be able to add a new card and billing address, edit card details (where applicable) and delete cards.

We mandate that consumers can add at least one card during checkout without getting away from the main checkout flow.

We recommend attaching one Billing address to each new card added and not requiring billing addresses to be selected during each transaction.

All new cards need to be authenticated (please see requirement table in the section below.

Manage shipping addresses

This experience allows consumers to manage (add/edit/delete) their cards. We mandate that consumers can add at least one shipping address during checkout without getting away from the main checkout flow.

We recommend validating the addresses where systems exist to do so (for example: AVS in US).

Manage loyalty cards (Optional)

This experience allows consumers to manage their loyalty card and numbers. They should be able to add/edit/delete loyalty numbers for each merchant existing loyalty program.

Manage paired / unpairing (New for v6)

This experience allows consumers to manage and unpair their Connected relationships with merchants.

Process

In order to implement your wallet, we recommend you to follow the following process:

  1. Register on Dev Zone
  2. Complete Risk Assessment and Security Due Diligence with your MasterCard representative
  3. Develop your wallet
  4. Request setup on Sandbox
  5. Test your wallet, complete Self-certification and get it approved by MasterCard
  6. Make sure that all necessary services are in place (Customer Support)
  7. Request production keys
  8. Schedule setup in Production
  9. Test your wallet again when it is in Production
  10. Commercialize your wallet through Marketing

Certification requirements

When your wallet is finalized, it will need to be self-certified. Most of the requirements are written to provide guidance as to what is expected that the wallet would do, give specific guidance as to what would be mandatory and what would be useful best practices. At the end of the day, the partners are responsible for their user experience and implementation but MasterCard would like to ensure consistency of some parts of the experience and security.

How Does a Partner-Hosted Wallet Work?

A partner hosted wallet interfaces with MasterPass to manage customer data in a variety of checkout scenarios and account management.It can use MasterPass to store customer data with the wallet storage APIs.It can supply user data during a standard checkout.It can pair with a merchant for a streamlined checkout experience.It can enable express checkout to allow a 1-click checkout experience for the user to approved merchants.

A Note on Optional Parameters

There are several parameters in the OpenAPI services that are listed as optional but may be required based on the partner's configuration or the consumer's country of residence.It is expected that the partner understands these fields and provides values when they are expected to avoid errors.MasterPass will send the list of fields to be returned in a HTTPS post to the wallet. This integration document will describe those scenarios where they are expected.If you have any questions regarding a particular conditional field, please post it to the Partner Hosted Wallet Forum on the Developer Zone. https://developer.mastercard.com.

The following diagram details a flow of a checkout transaction using a Partner-hosted wallet. The Partner site is first engaged after the user selects a Partner-hosted wallet in step 8/Ph3. MasterPass will execute the Checkout Initialization exchange with the Partner-hosted wallet in order to start the sign in process. The Partner must present an interface to the user for logging in, selecting payment method and a shipping address (if applicable) and confirming the order. The Shipping Address Verification exchange can be used near step PH6 to confirm that the Merchant is willing to ship to each shipping address. Step PH9 involves the Partner site sending consumer selected card details and shipping information back to MasterPass by executing the Checkout Authorization exchange.

The below sequence diagram provides a different view of the transactions. The "Select MasterPass wallet" step is where MasterPass will redirect the browser to the Checkout Initialization URL. Shipping Address Verification would most likely be used at some point during the Partner-defined user experience.

The Checkout Authorization exchange is then executed in the "AuthorizeOrder" step. The Partner must then respond with a browser redirect in order to send control back to the merchant through the MerchantCallbackURL.

Standard Checkout

Pairing during non-checkout (Connect and Express) Flow

Connect Pairing during checkout flow

Express pairing during checkout flow

Connect Checkout flow

Express Checkout Flow

Un-pairing

Definitions

  1. Partner - A bank or other MasterCard Partner (Partners do not have to issue cards) providing its users with access to MasterPass capabilities.
  2. Partner-Hosted Wallet - A wallet solution hosted by a Partner that is integrated with MasterPass.
  3. OAuth - An industry standard security model that allows third party sites to share user data without requiring additional credentials. A Partner-hosted wallet uses this method for securing exchanges with MasterPass.
  4. OpenAPI - An industry standard for enabling services to be easily shared across third party providers. A Partner-hosted wallet uses this standard to connect MasterPass with Partner services.
  5. ISO 3166 - A standard definition of countries and country subdivisions as maintained by the International Organization for Standardization. MasterPass uses this standard for defining countries and country subdivisions that can be entered into addresses.
  6. Country Subdivision - Most countries are separated by internal boundaries such as the states of the United States or the provinces of Canada. These subdivisions are defined by ISO 3166-2 and MasterPass uses these for defining the subdivisions that can be entered into addresses.
  7. Personally identifiable information (PII) - User data, such as cards, shipping addresses and loyalty programs that can be stored securely within the MasterPass databases
  8. Wallet Storage APIs - The set of OpenAPI transactions for storing a partner consumer's PII data within MasterPass databases

MasterPass User Interface

The MasterPass user interface introduced an optimized User Experience for v6, or Lightbox, floats the MasterPass wallet interface on top of the Merchant's web page through illuminated overlays, and backgrounds dimmed to 0.7 opacity. This modern method allows a consumer to interact with their MasterPass digital wallet without having to leave the merchant's page. MasterPass Lightbox is built in a responsive design style allowing it to respond dynamically to the various screen sizes and orientations.

MasterPass supports the following displays:

  • Standard Lightbox display
  • Standard full screen display

Legacy User Interface or Fall-back

If a merchant is not yet upgraded and the partner is v6 enabled or the current browser being used is outdated the legacy user interface will be shown as a full screen lightbox.

If a partner requires to build a v1 to v5 wallets, they would need to refer to the respective API Integration guide specs. If need of help to locate such document, please contact your MasterCard representative.

Standard "Lightbox Display" (desktop view)

At full screen, where the browser is set to 100% height and width, the overall Lightbox dimensions are 740 pixels (height) by 700 pixels (width). This is inclusive of the Lightbox header and footer. The interior Lightbox dimensions are 590 pixels (height) by 680 pixels (width). The interior Lightbox dimensions specify the content area within which the Partner can design (see screenshot below).

If the height of the browser is reduced so that the entire Lightbox has a height of 740 pixels and the width is maintained, the content container has the following dimensions: 530 pixels (height) by 680 pixels (width).

If the browser is set to 100% maximum width, but is less than 530 pixels in height (for the content container), vertical scrolling will appear.

If the browser is set to less than 680 pixels in width the Lightbox layout will change to accommodate small screen formats (i.e. phone, smaller tablets). There is a 320 pixel width threshold for the content container.

Standard Mobile Display (.mobi)

Within the .mobi experience, the header and footer are approximately 70 pixels high except for the iPhone 5/5S, which has a header and footer which are approximately 30 pixels high. The interior content area for mobile devices is content dependent. The initial view of content is based on the overall screen sizes. Content that does not fit within the initial view of content can be accessed by scrolling. There will not be a landscape view for mobile; only portrait will be supported.

Standard Full Screen Display

Under certain conditions, such as when the merchant has not yet made coding changes to invoke the Lightbox display, or if the URL requesting the Lightbox display is different from the merchant specified origin URL, then MasterPass will render the wallet experience in full screen. This full screen wallet experience supports all functionality and design as that of the Lightbox display.

Browser Support

Desktop browsers:

* Safari - 7 and higher

* IE 8 and higher

* Firefox (current and previous 2 versions)

* Chrome (current and previous 2 versions)

Mobile browsers:

* Safari on iOS

* Android browser

* Opera mini

* Chrome

Android Applications:

Ideally would not be device specific but include:

* ICS, JB, and KK (4.0.3 to 4.4)

* The 4 dpi levels in the Android best practice guide (small, normal, larger, x-large)

Developer Registration and Setup

Developers invited to integrate MasterPass on behalf of a Partner wallet provider will manage their integration activities through the MasterCard Developer Zone.

MasterCard Developer Zone Account

MasterCard Developer Zone is the repository of all the technical resources necessary for MasterPass Partner-hosted wallet integration. From the Developer Zone, developers will be able to:

  1. View MasterPass Partner-hosted wallet API documentation
  2. Generate the API keys necessary to integrate with the MasterPass

To create a Developer Zone account, follow the URL in the developer invitation email or visit MasterCard Developer Zone (developer.mastercard.com) and click Create Account. After completing the account creation form, be sure to activate your account by following the instructions in the confirmation e-mail.

Generate Sandbox and Production API Keys

After creating your account, you will need to generate two sets of API keys (one each for the sandbox and production environments).

To create a Sandbox key, click My Account, then My Dashboard. On the My Dashboard page, click Get an API Key button, complete the form and click Submit

On the My Dashboard page, click My Keys button and then click on Add a Key button.

In order to get an API Key,you need to supply a PEM encoded Certificate Request File. You may use a tool of your choice, such as "openssl" or Java's "keytool" to generate this CSR, or you may use the CSR generation tool on the developer zone portal.

Complete the form, select Sandbox for Environment, and click Submit.

You will have Sandbox Key ID at this point as seen below.

You will now need to create an "App" so that a consumer key can be generated. You can do this multiple ways but one way is to simply click on the "My Apps" tab and click "Add an App".

Fill out the information as below and select the Sandbox Key you just created, click Submit.

You now will have a consumer key generated to use when accessing the MasterPass API's. (See below image).

To create a Production API key, return to My Dashboard and click on My Keys. Then click on Add a Key and make sure you select Production environment. Complete the form and click Submit. Please note, Production keys require approval and will only be approved once the wallet has been created and certified in the Sandbox environment. It is therefore suggested to wait until you are close to moving to production before requesting.

After you create the Production Key as noted, you will need to grant it access to the Production Wallet API's. To do this, navigate to the Wallet Application under "My Apps" that you created in the earlier steps. (You should still see your sandbox consumer key there). Once in your App, click on "Add Prod Service". "Selects "MasterPass Provider" as the Service, select the Production Key you generated in the dropdown and then click Next. 

 

You will get a confirmation message and then the image below which shows your Production Consumer key as pending. Once certified, keys can be approved by MasterCard and you then will receive an email, the pending message will disappear and the consumer key will have access to the production API's.

MasterCard OpenAPI

MasterPass APIs are hosted on the MasterCard OpenAPI platform. The MasterCard OpenAPI has authentication requirements designed to maintain the security of the MasterCard network and to ensure the safety of your customers' financial transactions.It depends on the OAuth 1.0a specification - an open standard that provides a process for users to authorize third-party access to their server resources without sharing their credentials.

As part of our OAuth implementation, MasterCard OpenAPI uses an RSA private key, and a corresponding public key delivered to MasterCard via a Certificate Signing Request. For requests that have a request body, we also utilize the Google body-hash extension for OAuth (see oauth_body_hash below).

You can create or access this certificate signing request by accessing My Dashboard (within Developer Zone). You register once per service you plan to utilize. You will be asked to generate a private-public key pair and a certificate signing request (CSR). You should receive a consumer key and signed certificate via email after registering. Please note that the signed certificate will not be used by you in generating the authorization, as covered below. Only the private key you generate and the consumer key we provide is used in generating the authorization elements.

You must keep the private key you generated to sign your requests. We recommend keeping your private key in a password-protected or hardware key store.

OAuth Header

All HTTP Requests to OpenAPI need to add an Authorization Header. As you work through generating your Authorization header following the steps below, you may refer to this document to validate your implementation.

Following the OAuth 1.0a specification, the Authorization Header looks like this (No New Lines or Carriage Returns): The "OAuth<space>" is required:

oauth_consumer_key="AajmNcCn9oINP3qTATeAvS5relCzeex09tuqe8RT6e2690d9",

oauth_nonce="25400540855611",oauth_timestamp="1286917726",

oauth_version="1.0",oauth_body_hash="8CDsKsBpvFyMVMIdkZHi7ADckFA%3D",oauth_signature_method="RSA-SHA1",

oauth_signature="J20bH3rKwCDOsj6Rn4Q8XhYrFgNVfInpLm3zSQFM7awCn%2B%2BDIuu4TBRC3%2F1eTGqLPgWwKDNbNUAQ0ZTLuRTsliQNVTRyXAn6N6w2Vmv%2BC3xQR9Clvpjyzb0FKmwXOQrqMaX7QxP4hywoZG6idZsVCcyrEGffVm39jJ1%2B9AK59s8%3D"

Let's break this down item by item:

  • oauth_consumer_key - The sandbox or production API key you generated in previous steps.
  • oauth_nonce - A random string generated per request in order to protect against replay attacks.
  • oauth_timestamp - An integer value which represents the number of seconds since 1970.
  • oauth_version - Specification version of OAuth header; currently "1.0" is the only supported value
  • oauth_body_hash - This is a Google extension to OAuth, which contains a SHA-1 hash of the actual request body that is Base64 encoded. It should only be present on POST requests that contain a body. It guarantees that the body has not been tampered with during transport.
  • oauth_signature_method - The method you will have used create the oauth_signature value. MasterCard OpenAPI only supports "RSA-SHA1". Any other signature method will fail.
  • oauth_signature - This is a signature that the server can use to confirm the OAuth header hasn't been modified during transport.

OAuth Signature

After all parts of the OAuth header have been generated, other than the oauth_signature parameter itself (but including the oauth_signature_format), you must generate the signature. Generating the signature is a two-step process:

  1. Generate a "signature base string" following the format defined in the OAuth 1.0a specification.
  2. Sign the "signature base string" using your RSA private key.

Generating the Signature Base String

The "signature base string" is the string that you will sign to prove your identity to MasterCard. The format is defined by the OAuth 1.0a specification, section 9.

Building the signature base string involves placing all the items that make up a request into a specific order. This order is extremely important, and is mandated explicitly by the specification. Since the MasterCard API gateway follows this order exactly, and then generates a signature, if you do not follow the order perfectly, your signature will not validate. Getting it correct can be difficult and tedious, and we encourage you to use an OAuth library if possible, as it will completely automate this time-consuming process.

The signature base string is made up of three major parts, delimited by an ampersand ("&"). The three sections are:

  1. The HTTP Method. For our API: "GET" or "POST"
  2. The URL. This is the URL up to (and not including) the "?" when there is a query string.
  3. The parameters (both OAuth and query string). See below for details.

As mentioned, each of these sections should have an ampersand ("&") delimiter between them. The OAuth parameters and query string parameters should be URI encoded, so their ampersands become %26. In other words, the signature base string should have at most two ampersands ("&") in total.

Signature Base String in Detail

Here's more detail on each of the three sections of the signature base string.

  1. First, the HTTP method is added. For the MasterCard API, this will be GET or POST, as appropriate. Please refer to the documentation for the API you are using, as this will tell you whether to use a GET or a POST for that API under the subheading "HTTP Methods".
  2. The URL prior to the query string (and not including the question mark) is added. The port should be excluded (for instance, exclude :443 for https requests). The URL should be in all lowercase, regardless of the case of the request.
  3. The oauth and query string parameters are sorted by name, using lexicographical byte value ordering. If two or more parameters share the same name, they are sorted by their value. For example:

a=1,c=hi%20there,f=25,f=50,f=a,z=p,z=t

This sorting should happen after URI encoding.

Signing the Signature Base String

At this point you should have the proper signature base string.

Your client code now needs to generate an RSA signature for this string using the private key you created when building the Certificate Signing Request when you registered your application on My Dashboard. Most development languages offer built in methods for generating an RSA signature.

Encoding the RSA Signature

You should now have an RSA signature that corresponds to your signature base string.

  1. This signature needs to be Base64 encoded.
  2. This Base64 encoded signature then needs to be URL encoded using UTF-8.
  3. This Base64 URL encoded signature from the previous step needs to have the following replacements made:
  • replace "+" with "%20"
  • replace "*" with "%2A"
  • replace "%7E" with "~"

Adding Your Encoded Signature to the Authorization Header

As the final step, you take this resulting encoded signature and add it to your Authorization header as the "oauth_signature". After this OAuth string is generated, it should be set as the "Authorization" header for the HTTP request to the service.

Refer to this document to validate your implementation, as well as the appendix to view sample requests and responses.

New v6 URLs

New v6 URL: Pairing URL This URL is used to send a request for pairing  Require
New v6 URL: Pre-checkout URL This URL is used to send a request for pre-checkout data  Require
New v6 URL: checkout URL This URL is used to send a request of a Basic checkout, a Connected checkout and a checkout including a new pairing  Require
New v6 URL: Logout URL This URL is used by MasterCard to send to the URL including the session token so that partners know that a session is over Require 
New v6 URL: Failed step-up URL This URL is used when step-up has been required and failed. Partners should link back to a page where consumers have other options (select another card).  Require
New v6 URL: WalletProvider URL This URL is used if any of the other URL fails.  Require

Note: These URLs are necessary for all v6 wallets to be appropriately setup although they do not require to be distinct depending on the partner's setup.

ExtensionPoint Elements

Starting with API v6, all schema container elements contain a new optional element named "ExtensionPoint".  These elements are intended to provide expandability of the API without requiring a new major version.  These elements are defined to contain a sequence of "xs:any", meaning that any XML content can be contained within the element.  In order to ensure future expandability, all integrators must not perform any validation of elements received inside an ExtensionPoint element, beyond any that may be defined by MasterPass in the future with a separate schema.  Any such extensions will be optional.  Further, only authorized schemas will be allowed inside ExtensionPoint elements, and any unknown elements will be dropped by MasterPass.

ExtensionPoint -Sample
  <ExtensionPoint>
      <s:SampleExtension xmlns:s="https://www.masterpass.com/location/of/example/ns">
        <s:SampleField>Sample Value</s:SampleField>
      </s:SampleExtension>
      <f:AnotherExampleExtension xmlns:f="https://www.masterpass.com/location/of/example2/ns>
          <f:SampleContainer>
             <f:AnotherSampleField>Sample Value</f:AnotherSampleField>
          </f:SampleContainer>
      </f:AnotherExampleExtension>
  </ExtensionPoint>

Checkout

The checkout process starts when a shopper clicks the MasterPass checkout button on a merchant site. This begins a set of exchanges that will bring the shopper through MasterPass, to the Partner site and back out to the merchant again.The checkout has a 15 minute timeout, so if the merchant does not come back to pick up the checkout data within that time limit, the checkout will need to be restarted.

Checkout Initialization

Shoppers will be directed to the Partner site via a checkout initialization URL. Partners must inform MasterCard of this URL as part of the integration process in order for this flow to be configured. MasterPass will execute this URL when the user selects the Partner-hosted wallet. MasterPass will append the following parameters to the request based on which version of MasterPass the merchant has implemented:

MasterPass 3.0

  • flow
    This will define the process that merchant is requesting. It is important if the Partner uses the same URL for Pairing, Checkout, Account Maintenance, etc.
  • locale
    This defines the desired locale to be used when displaying pages
  • targetOrigin
    This is the origin URL of the request.
  • checkout_identifier
    This is a unique value to identify the merchant.
  • allowedLoyaltyPrograms
    This optional parameter indicates which loyalty programs the merchant will in the Checkout Authorization call.The partner application should only allow users to select a loyalty program for this checkout if the merchant accepts it.This parameter is only valid for merchants using v4 or later of the Merchant Checkout API and then only sent if the Merchant accepts the loyalty program for the transaction.
  • pairingRequestToken
    This is OAuth Request Token acquired by the merchant for this pairing attempt. This is the primary identifier for the pairing and it will expire in 15 minutes.This is a required parameter if pairing.
  • requestedDataTypes
    This field indicates the data fields a connected merchant would like access to. It is a required parameter if pairing is requested.The following are valid data types: ADDRESS, CARD, PROFILE, REWARD_PROGRAM.
  • requestPairing
    This field indicates that the merchant would like to connect to a user's wallet.
  • requestExpressCheckout
    This field indicates that the merchant would like enable express checkout with a consumer.
  • cardId
    This field indicates the Id of the card data to return during a connected checkout.The merchant receives this value when they request precheckout data.
  • shippingId
    This field indicates the Id of the shipping data to return during a connected checkout.The merchant receives this value when they request precheckout data.
  • loyaltyId
    This field indicates the Id of the loyalty program to return during a connected checkout.The merchant receives this value when they request precheckout data.
  • precheckoutTransactionId
    This field uniquely identifies the during a connected checkout.The merchant receives this value when they request precheckout data.
  • walletId
    This field uniquely identifies the partner hosted wallet.
  • silentPairing
    This field indicates that a Silent Pairing enabled merchant is requesting pairing.This parameter will only be used by MasterCard for MasterCard innovative products at this stage.
  • merchantSuppressSignup
    This field indicates that a merchant is requesting a checkout experience without showing any sign up options.It may be used by merchants that have a shorter checkout timeout and want an expedited experience.
  • oauth_token
    This is OAuth Request Token acquired by the merchant for this checkout transaction.This is the primary identifier for the checkout and it will expire in 15 minutes.This is a required parameter.
  • checkout_version
    This is the checkout version the merchant supports.This is a required parameter and is an extremely important parameter in the Checkout Authorization Service.The value provided here will be used to generate the Checkout Authorization endpoint URL, and as noted below, will influence the data sent back to MasterPass. Example 6, 5, 4, etc.
  • The partner may need to adjust the data sent to the Checkout Authorization service based on the value of this parameter.See additional notes below.

  • acceptable_cards
    This parameter indicates card types accepted by the merchant. It is a comma separated list of card types. The following are valid card types: master, visa, amex, discover, maestro, diners. Card types in the list are case insensitive. For example VISA, MASTER and visa, MASTER are all valid. This is an optional parameter; all cards are accepted if not passed in.
  •      Partner must only display MasterPass-supported cards for the consumer to choose from during a MasterPass transaction.
  • suppress_shipping_address
    This flag indicates whether shipping address should be suppressed for the checkout. This is an optional parameter, defaulted to false if not passed. Valid values are: true, false. The value is case insensitive.  This parameter is only valid for merchants using v2 or later of the Merchant Checkout API.
  • merchant_return_url
    This is the merchant URL to return to when the consumer clicks the "Return to Merchant" link in the header. Partner must display the "Return to Merchant" link in the header. This is a required parameter.
  • merchant_name
    This parameter provides the merchant name. This is a required parameter.
  • merchant_logo_url
    This parameter provides the image URL of the merchant's logo. This is an optional parameter. Partner must display the merchant logo as part of the "Return to Merchant" link in the header of the checkout flow if this parameter is provided; otherwise, merchant name must be displayed.
  • accept_reward_program
    This optional parameter indicates if the merchant will accept a reward or loyalty program in the Checkout Authorization call The partner application should only allow users to select a loyalty program for this checkout if the value of this parameter is 'true'.The default value is 'false'.This parameter is only valid for merchants using v4 or later of the Merchant Checkout API and then only sent if the Merchant accepts the loyalty program for the transaction.
  • shipping_location_profile
    This parameter identifies the merchant's shipping location profile, which identifies the locations that this checkout can be shipped to.  This optional parameter will only be provided if the merchant specifies a non-default shipping location profile.  It must be passed in to the Shipping Address Verification Service call.  This parameter is only valid for merchants using v4 or later of the Merchant Checkout API and then only sent if the Merchant requires specific shipping restrictions for the transaction.
  •  auth_options
    This parameter contains the card brands for which 3DS should be performed for this merchant.  It is a comma-separated list of card types. The following are valid card types: master, maestro, visa, amex, discover, diners. If this parameter is NO_3DS, no 3DS should be performed.  This parameter is only valid for merchants using v3 or later of the Merchant Checkout API. Partners would be allowed to disable 3DS from occurring as part of the services of the lightbox, to do it, they will need to get explicit approval from card issuers and pass agreed upon cAVV and ECIflag  values that the card issuer can recognize to provide liability shift.
  •  cardinal_merchant_id
    This is the ID by which Cardinal will recognize the merchant. If 3DS authentication needs to be run, the Partner must pass this value in the <MerchantId> field on the Lookup call to Cardinal. This parameter is only valid for merchants using v3 or later of the Merchant Checkout API.
  • amount
    This is the subtotal of the transaction. If 3DS authentication needs to be run, the Partner must pass this value in the <Amount> field on the Lookup call to Cardinal. This parameter is only valid for merchants using v3 or later of the Merchant Checkout API.
  • currency
    This is the currency of the transaction in 3-digit numeric ISO format. If 3DS authentication needs to be run, the Partner must pass this value in the <CurrencyCode> field on the Lookup call to Cardinal. This parameter is only valid for merchants using v3 or later of the Merchant Checkout.
  • order_number
    The "Order Number" value is the timestamp (in milliseconds) at the time the Checkout Initialization URL is requested. If 3DS authentication needs to be run, the Partner must pass this value in the <OrderNumber> field on the Lookup call to Cardinal. This parameter is only valid for merchants using v3 or later of the Merchant Checkout API.
  • merchantSuppressSignup
  • This optional parameter indicates that no signup screens should be shown during the flow. A merchant might request this if they have a shorter timeout for this experience.
Element Description Type Min-Max
oauth_token oauth_token is sent in the signature base string, authorization header and redirect URL; required alphanumeric 40
checkout_version 1-6; Required string -
acceptable_cards master, visa, amex, discover, maestro, diners; optional - all cards accepted if not passed string -
suppress_shipping_address Optional; v2 or later boolean -
merchant_return_url Return to merchant link; required string -
merchant_name Merchant name; required string -
merchant_logo_url Image url of merchant logo; Optional - merchant name will be displayed otherwise string -
accept_reward_program Merchant accepts reward programs; Optional; v4 or later boolean -
shipping_location_profile Identifies allowed shipping locations; Optional; v4 or later string -
auth_options master, maestro, visa, amex, discover, diners, NO_3DS; v3 or later alpha -
cardinal_merchant_id v3 or later string -
amount Subtotal of transaction numeric -
currency Currency of the transaction in 3-digit ISO format. For example, USD=840, EUR=978 numeric 3
order_number Timestamp at the time the checkout initialization URL is requested; v3 or later numeric 1-50

A partner must implement a checkout initialization page that takes the above request parameters and stores them for later usage, and then starts the checkout flow.

Checkout Authorization

After the consumer selects card and shipping information using a Partner-hosted wallet and clicks the "Review Your Order" button, the Partner must invoke the MasterCard Checkout Authorization Service, via OpenAPI, to authorize the checkout. See below for details on this service.

MasterCard Checkout Authorization Service

This is the service a Partner must use to authorize the merchant to access a consumer's checkout data. This is a REST service exposed on MasterCard OpenAPI infrastructure.  We are currently up to version 6 of this service (supported merchant versions are v1,v2, v3, v4, v5, and v6) and there have been minor adjustments with each version along the way that impact the functionality that is supported by Merchants.  The partner is required to use the Checkout Authorization Service schema version based on the version value provided by the merchant in the Checkout Initialization call parameter "checkout_version"(for V1-V5) and "version"(for V6). The currently supported V6 Checkout Authorization service schemas are identified below.

It is also expected that the service will continue to evolve as new capabilities are introduced. Partners must anticipate receiving a value of 'V7' in the future.  It is required for partners to support the latest version of the API within 6 months of launch. As soon as new specifications are available, the partner will be contacted with the updates.

Note: as required by local law, some of those fields are enabled solely where there is a local law requirement (Date of Birth, National ID, Gender). Please speak to your local MasterCard Representative or ask on the Developer Zone forum if those fields would work in your country.

Resource URL

V1-V5

api.mastercard.com/online/partner/<version>/checkout Note: Replace the <version> tag in this URL with the version supplied in the Checkout Initialization call parameter "checkout_version". Then also use the appropriate version schema below to provide the checkout data to MasterPass.

V6

api.mastercard.com/masterpass/partner/<version>/checkout Note: Replace the <version> tag in this URL with the version supplied in the Checkout Initialization call parameter "version". Then also use the appropriate version schema below to provide the checkout data to MasterPass.

Resource Method

POST

Data Format

XML

Request V6

Here is XML Schema for both the request and response:

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
    <xs:element name="AuthorizeCheckoutRequest" type="AuthorizeCheckoutRequest"/>
    <xs:element name="AuthorizeCheckoutResponse" type="AuthorizeCheckoutResponse"/>
    <xs:element name="Errors" type="Errors"/>
    <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
  <xs:complexType name="ExtensionPoint">
    <xs:sequence>
    <xs:any maxOccurs="unbounded" processContents="lax" namespace="##any"/>
    </xs:sequence>
  <xs:anyAttribute/>
  </xs:complexType>

  <xs:complexType name="Address">
    <xs:sequence>
      <xs:element name="City" type="NonEmptyString"/>
      <xs:element name="Country" type="Country"/>
      <xs:element name="CountrySubdivision" type="NonEmptyString" minOccurs="0"/>
      <xs:element name="Line1" type="NonEmptyString"/>
      <xs:element name="Line2" type="NonEmptyString" minOccurs="0"/>
      <xs:element name="Line3" type="NonEmptyString" minOccurs="0"/>
      <xs:element name="PostalCode" type="NonEmptyString" minOccurs="0"/>
      <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AuthenticationOptions">
    <xs:sequence>
      <xs:element name="AuthenticateMethod" type="xs:string" minOccurs="0"/>
      <xs:element name="CardEnrollmentMethod" type="xs:string" minOccurs="0"/>
      <xs:element name="CAvv" type="xs:string" minOccurs="0"/>
      <xs:element name="EciFlag" type="xs:string" minOccurs="0"/>
      <xs:element name="MasterCardAssignedID" type="xs:string" minOccurs="0"/>
      <xs:element name="PaResStatus" type="xs:string" minOccurs="0"/>
      <xs:element name="SCEnrollmentStatus" type="xs:string" minOccurs="0"/>
      <xs:element name="SignatureVerification" type="xs:string" minOccurs="0"/>
      <xs:element name="Xid" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AuthorizeCheckoutRequest">
    <xs:sequence>
    <xs:element name="OAuthToken" type="xs:string"/>
    <xs:element name="AuthorizedCheckout" type="AuthorizedCheckout"/>
    <xs:element name="Errors" type="Errors" minOccurs="0"/>
    <xs:element name="PreCheckoutTransactionId" type="xs:string" minOccurs="0"/>
    <xs:element name="MerchantParameterId" type="xs:string" minOccurs="0"/>
    <xs:element name="DeviceType" minOccurs="0">
  <xs:simpleType>
  <xs:restriction base="xs:string">
  <xs:enumeration value="DESKTOP"/>
  <xs:enumeration value="MOBILE"/>
  </xs:restriction>
  </xs:simpleType>
  </xs:element>

  <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
  </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AuthorizedCheckout">
    <xs:sequence>
      <xs:element name="Card" type="Card"/>
      <xs:element name="Contact" type="Contact"/>
      <xs:element name="ShippingAddress" type="ShippingAddress" minOccurs="0"/>
      <xs:element name="AuthenticationOptions" type="AuthenticationOptions" minOccurs="0"/>
      <xs:element name="RewardProgram" type="RewardProgram" minOccurs="0"/>
      <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Card">
    <xs:sequence>
      <xs:element name="BrandId" type="NonEmptyString"/>
      <xs:element name="BrandName" type="NonEmptyString"/>
      <xs:element name="AccountNumber" type="NonEmptyString"/>
      <xs:element name="BillingAddress" type="Address"/>
      <xs:element name="CardHolderName" type="NonEmptyString"/>
      <xs:element name="ExpiryMonth" type="Month" minOccurs="0"/>
      <xs:element name="ExpiryYear" type="Year" minOccurs="0"/>
      <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Contact">
    <xs:sequence>
    <xs:element name="FirstName" type="NonEmptyString"/>
    <xs:element name="MiddleName" minOccurs="0">
      <xs:simpleType>
        <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="150"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:element name="LastName" type="NonEmptyString"/>
    <xs:element name="Gender" type="Gender" minOccurs="0"/>
    <xs:element name="DateOfBirth" type="DateOfBirth" minOccurs="0"/>
    <xs:element name="NationalID" minOccurs="0">
      <xs:simpleType>
        <xs:restriction base="xs:string">
        <xs:minLength value="1"/>
        <xs:maxLength value="150"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:element name="Country" type="Country"/>
    <xs:element name="EmailAddress" type="EmailAddress"/>
    <xs:element name="PhoneNumber" type="xs:string"/>
    <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DateOfBirth">
    <xs:sequence>
    <xs:element name="Year">
      <xs:simpleType>
        <xs:restriction base="xs:int">
        <xs:minInclusive value="1900"/>
        <xs:pattern value="\d{4}"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:element name="Month" type="Month"/>
    <xs:element name="Day">
      <xs:simpleType>
        <xs:restriction base="xs:int">
        <xs:minInclusive value="1"/>
        <xs:maxInclusive value="31"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
    <xs:complexType name="ShippingAddress">
      <xs:complexContent>
        <xs:extension base="Address">
        <xs:sequence>
        <xs:element name="RecipientName" type="NonEmptyString"/>
        <xs:element name="RecipientPhoneNumber" type="xs:string"/>
        </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  <xs:complexType name="RewardProgram">
    <xs:sequence>
      <xs:element name="RewardNumber" type="xs:string"/>
      <xs:element name="RewardId" type="xs:string"/>
      <xs:element name="RewardName" type="xs:string" minOccurs="0"/>
      <xs:element name="ExpiryMonth" type="Month" minOccurs="0"/>
      <xs:element name="ExpiryYear" type="Year" minOccurs="0"/>
      <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
    <xs:simpleType name="NonEmptyString">
      <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:whiteSpace value="collapse"/>
      </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Country">
      <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z]{2}"/>
      </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Language">
      <xs:restriction base="xs:string">
      <xs:pattern value="[a-z]{2}"/>
      </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Month">
    <xs:restriction base="xs:int">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="12"/>
    </xs:restriction>
    </xs:simpleType>
  <xs:simpleType name="Year">
    <xs:restriction base="xs:int">
    <xs:minInclusive value="2013"/>
    <xs:pattern value="\d{4}"/>
  </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="EmailAddress">
    <xs:restriction base="xs:string">
    <xs:pattern value="[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*@[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*"/>
    </xs:restriction>
  </xs:simpleType>
    <xs:simpleType name="Gender">
    <xs:restriction base="xs:token">
    <xs:enumeration value="M"/>
    <xs:enumeration value="F"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="AuthorizeCheckoutResponse">
  <xs:sequence>
  <xs:element name="MerchantCallbackURL" type="xs:string"/>
  <xs:element name="StepupPending" type="xs:boolean"/>
  <xs:element name="OAuthVerifier" type="xs:string" minOccurs="0"/>
  <xs:element name="PreCheckoutTransactionId" type="xs:string" minOccurs="0"/>
  <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
  </xs:sequence>
  </xs:complexType>
<xs:complexType name="Error">
  <xs:sequence>
  <xs:element name="Description" type="xs:string" minOccurs="0"/>
  <xs:element name="ReasonCode" type="xs:string"/>
  <xs:element name="Recoverable" type="xs:boolean"/>
  <xs:element name="Source" type="xs:string"/>
  <xs:element name="Details" type="Details" minOccurs="0" maxOccurs="1"/>
  </xs:sequence>
</xs:complexType>
  <xs:complexType name="Errors">
  <xs:sequence>
   <xs:element name="Error" type="Error" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
  <xs:complexType name="Details">
    <xs:sequence>
     <xs:element name="Detail" type="Detail" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
<xs:complexType name="Detail">
  <xs:sequence>
    <xs:element name="Name" type="xs:string"/>
    <xs:element name="Value" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
</xs:schema>
Request V5

Here is XML Schema for both the request and response:

 <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AuthorizeCheckoutResponse" type="AuthorizeCheckoutResponse"/>
  <xs:complexType name="AuthorizeCheckoutResponse">
    <xs:sequence>
    <xs:element name="MerchantCallbackURL" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
<xs:element name="AuthorizeCheckoutRequest" type="AuthorizeCheckoutRequest"/>
  <xs:complexType name="AuthorizeCheckoutRequest">
    <xs:sequence>
    <xs:element name="OAuthToken" type="xs:string"/>
    <xs:element name="AuthorizedCheckout" type="AuthorizedCheckout"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AuthorizedCheckout">
    <xs:sequence>
      <xs:element name="Card" type="Card"/>
      <xs:element name="Contact" type="Contact"/>
      <xs:element name="ShippingAddress" type="ShippingAddress"minOccurs="0"/>
      <xs:element name="AuthenticationOptions" type="AuthenticationOptions"minOccurs="0"/>
      <xs:element name="RewardProgram" type="RewardProgram"minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
<xs:complexType name="Card">
  <xs:sequence>
  <xs:element name="BrandId" type="xs:string"/>
  <xs:element name="BrandName" type="xs:string"/>
  <xs:element name="AccountNumber" type="xs:string"/>
  <xs:element name="BillingAddress" type="Address"/>
  <xs:element name="CardHolderName" type="xs:string"/>
  <xs:element name="ExpiryMonth" type="xs:string"minOccurs="0"/>
  <xs:element name="ExpiryYear" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="Contact">
  <xs:sequence>
    <xs:element name="FirstName" type="xs:string"/>
    <xs:element name="MiddleName" type="xs:string"minOccurs="0"/>
    <xs:element name="LastName" type="xs:string"/>
    <xs:element name="Gender" type="Gender"minOccurs="0"/>
    <xs:element name="DateOfBirth" type="DateOfBirth"minOccurs="0"/>
    <xs:element name="NationalID" type="xs:string"minOccurs="0"/>
    <xs:element name="Country" type="xs:string"minOccurs="0"/>
    <xs:element name="EmailAddress" type="xs:string"/>
    <xs:element name="PhoneNumber" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="DateOfBirth">
  <xs:sequence>
    <xs:element name="Year" type="xs:long"/>
    <xs:element name="Month" type="xs:long"/>
    <xs:element name="Day" type="xs:long"/>
  </xs:sequence>
</xs:complexType>
  <xs:simpleType name="Gender">
    <xs:restriction base="xs:string">
      <xs:enumeration value="M"/>
      <xs:enumeration value="F"/>
    </xs:restriction>
  </xs:simpleType>
<xs:complexType name="ShippingAddress">
  <xs:complexContent>
  <xs:extension base="Address">
    <xs:sequence>
      <xs:element name="RecipientName" type="xs:string"/>
      <xs:element name="RecipientPhoneNumber" type="xs:string"/>
    </xs:sequence>
  </xs:extension>
  </xs:complexContent>
</xs:complexType>
<xs:complexType name="Address">
  <xs:sequence>
    <xs:element name="City" type="xs:string"/>
    <xs:element name="Country" type="xs:string"/>
    <xs:element name="CountrySubdivision" type="xs:string"minOccurs="0"/>
    <xs:element name="Line1" type="xs:string"/>
    <xs:element name="Line2" type="xs:string"minOccurs="0"/>
    <xs:element name="Line3" type="xs:string"minOccurs="0"/>
    <xs:element name="PostalCode" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="AuthenticationOptions">
  <xs:sequence>
    <xs:element name="AuthenticateMethod" type="xs:string"minOccurs="0"/>
    <xs:element name="CardEnrollmentMethod" type="xs:string"minOccurs="0"/>
    <xs:element name="CAvv" type="xs:string"minOccurs="0"/>
    <xs:element name="EciFlag" type="xs:string"minOccurs="0"/>
    <xs:element name="MasterCardAssignedID" type="xs:string"minOccurs="0"/>
    <xs:element name="PaResStatus" type="xs:string"minOccurs="0"/>
    <xs:element name="SCEnrollmentStatus" type="xs:string"minOccurs="0"/>
    <xs:element name="SignatureVerification" type="xs:string"minOccurs="0"/>
    <xs:element name="Xid" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="RewardProgram">
  <xs:sequence>
    <xs:element name="RewardNumber" type="xs:string"/>
    <xs:element name="RewardId" type="xs:string"/>
    <xs:element name="RewardName" type="xs:string"/>
    <xs:element name="ExpiryMonth" type="xs:string"minOccurs="0"/>
    <xs:element name="ExpiryYear" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>
</xs:schema>
Request V4

Here is XML Schema for both the request and response:

<?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="AuthorizeCheckoutResponse" type="AuthorizeCheckoutResponse"/>
<xs:complexType name="AuthorizeCheckoutResponse">
  <xs:sequence>
  <xs:element name="MerchantCallbackURL" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="AuthorizeCheckoutRequest" type="AuthorizeCheckoutRequest"/>
<xs:complexType name="AuthorizeCheckoutRequest">
  <xs:sequence>
  <xs:element name="OAuthToken" type="xs:string"/>
  <xs:element name="AuthorizedCheckout" type="AuthorizedCheckout"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="AuthorizedCheckout">
  <xs:sequence>
  <xs:element name="Card" type="Card"/>
  <xs:element name="Contact" type="Contact"/>
  <xs:element name="ShippingAddress" type="ShippingAddress"minOccurs="0"/>
  <xs:element name="AuthenticationOptions" type="AuthenticationOptions"minOccurs="0"/>
  <xs:element name="RewardProgram" type="RewardProgram"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="Card">
  <xs:sequence>
  <xs:element name="BrandId" type="xs:string"/>
  <xs:element name="BrandName" type="xs:string"/>
  <xs:element name="AccountNumber" type="xs:string"/>
  <xs:element name="BillingAddress" type="Address"/>
  <xs:element name="CardHolderName" type="xs:string"/>
  <xs:element name="ExpiryMonth" type="xs:string"minOccurs="0"/>
  <xs:element name="ExpiryYear" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="Contact">
  <xs:sequence>
  <xs:element name="EmailAddress" type="xs:string"/>
  <xs:element name="FirstName" type="xs:string"/>
  <xs:element name="LastName" type="xs:string"/>
  <xs:element name="MiddleInitial" type="xs:string"minOccurs="0"/>
  <xs:element name="PhoneNumber" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="ShippingAddress">
  <xs:complexContent>
  <xs:extension base="Address">
    <xs:sequence>
    <xs:element name="RecipientName" type="xs:string"/>
    <xs:element name="RecipientPhoneNumber" type="xs:string"/>
    </xs:sequence>
  </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="Address">
  <xs:sequence>
    <xs:element name="City" type="xs:string"/>
    <xs:element name="Country" type="xs:string"/>
    <xs:element name="CountrySubdivision" type="xs:string"minOccurs="0"/>
    <xs:element name="Line1" type="xs:string"/>
    <xs:element name="Line2" type="xs:string"minOccurs="0"/>
    <xs:element name="Line3" type="xs:string"minOccurs="0"/>
    <xs:element name="PostalCode" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="AuthenticationOptions">
  <xs:sequence>
    <xs:element name="AuthenticateMethod" type="xs:string"minOccurs="0"/>
    <xs:element name="CardEnrollmentMethod" type="xs:string"minOccurs="0"/>
    <xs:element name="CAvv" type="xs:string"minOccurs="0"/>
    <xs:element name="EciFlag" type="xs:string"minOccurs="0"/>
    <xs:element name="MasterCardAssignedID" type="xs:string"minOccurs="0"/>
    <xs:element name="PaResStatus" type="xs:string"minOccurs="0"/>
    <xs:element name="SCEnrollmentStatus" type="xs:string"minOccurs="0"/>
    <xs:element name="SignatureVerification" type="xs:string"minOccurs="0"/>
    <xs:element name="Xid" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="RewardProgram">
  <xs:sequence>
    <xs:element name="RewardNumber" type="xs:string"/>
    <xs:element name="RewardId" type="xs:string"/>
    <xs:element name="RewardName" type="xs:string"/>
    <xs:element name="ExpiryMonth" type="xs:string"minOccurs="0"/>
    <xs:element name="ExpiryYear" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

</xs:schema>
Request V3

Here is XML Schema for both the request and response:

  
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="AuthorizeCheckoutResponse" type="AuthorizeCheckoutResponse"/>
  <xs:complexType name="AuthorizeCheckoutResponse">
    <xs:sequence>
    <xs:element name="MerchantCallbackURL" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="AuthorizeCheckoutRequest" type="AuthorizeCheckoutRequest"/>
  <xs:complexType name="AuthorizeCheckoutRequest">
    <xs:sequence>
      <xs:element name="OAuthToken" type="xs:string"/>
      <xs:element name="AuthorizedCheckout" type="AuthorizedCheckout"/>
    </xs:sequence>
</xs:complexType>

<xs:complexType name="AuthorizedCheckout">
  <xs:sequence>
    <xs:element name="Card" type="Card"/>
    <xs:element name="Contact" type="Contact"/>
    <xs:element name="ShippingAddress" type="ShippingAddress"minOccurs="0"/>
    <xs:element name="AuthenticationOptions" type="AuthenticationOptions"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="Card">
  <xs:sequence>
    <xs:element name="BrandId" type="xs:string"/>
    <xs:element name="BrandName" type="xs:string"/>
    <xs:element name="AccountNumber" type="xs:string"/>
    <xs:element name="BillingAddress" type="Address"/>
    <xs:element name="CardHolderName" type="xs:string"/>
    <xs:element name="ExpiryMonth" type="xs:string"minOccurs="0"/>
    <xs:element name="ExpiryYear" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="Contact">
  <xs:sequence>
    <xs:element name="EmailAddress" type="xs:string"/>
    <xs:element name="FirstName" type="xs:string"/>
    <xs:element name="LastName" type="xs:string"/>
    <xs:element name="MiddleInitial" type="xs:string"minOccurs="0"/>
    <xs:element name="PhoneNumber" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="ShippingAddress">
  <xs:complexContent>
    <xs:extension base="Address">
      <xs:sequence>
        <xs:element name="RecipientName" type="xs:string"/>
        <xs:element name="RecipientPhoneNumber" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

<xs:complexType name="Address">
  <xs:sequence>
    <xs:element name="City" type="xs:string"/>
    <xs:element name="Country" type="xs:string"/>
    <xs:element name="CountrySubdivision" type="xs:string"minOccurs="0"/>
    <xs:element name="Line1" type="xs:string"/>
    <xs:element name="Line2" type="xs:string"minOccurs="0"/>
    <xs:element name="Line3" type="xs:string"minOccurs="0"/>
    <xs:element name="PostalCode" type="xs:string"minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="AuthenticationOptions">
  <xs:sequence>
    <xs:element name="AuthenticateMethod" type="xs:string"minOccurs="0"/>
    <xs:element name="CardEnrollmentMethod" type="xs:string"minOccurs="0"/>
    <xs:element name="CAvv" type="xs:string"minOccurs="0"/>
    <xs:element name="EciFlag" type="xs:string"minOccurs="0"/>
    <xs:element name="MasterCardAssignedID" type="xs:string"minOccurs="0"/>
    <xs:element name="PaResStatus" type="xs:string"minOccurs="0"/>
    <xs:element name="SCEnrollmentStatus" type="xs:string"minOccurs="0"/>
    <xs:element name="SignatureVerification" type="xs:string"minOccurs="0"/>
    <xs:element name="Xid" type="xs:string"minOccurs="0"/>
    </xs:sequence>
</xs:complexType>
</xs:schema>
Request V1 & V2

Here is XML Schema for both the request and response:

  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="AuthorizeCheckoutResponse" type="AuthorizeCheckoutResponse"/>
  <xs:complexType name="AuthorizeCheckoutResponse">
    <xs:sequence>
    <xs:element name="MerchantCallbackURL" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AuthorizeCheckoutRequest" type="AuthorizeCheckoutRequest"/>
  <xs:complexType name="AuthorizeCheckoutRequest">
    <xs:sequence>
    <xs:element name="OAuthToken" type="xs:string"/>
    <xs:element name="AuthorizedCheckout" type="AuthorizedCheckout"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AuthorizedCheckout">
    <xs:sequence>
    <xs:element name="Card" type="Card"/>
    <xs:element name="Contact" type="Contact"/>
    <xs:element name="ShippingAddress" type="ShippingAddress"minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Card">
    <xs:sequence>
      <xs:element name="AccountNumber" type="xs:string"/>
      <xs:element name="BillingAddress" type="Address"/>
      <xs:element name="CardHolderName" type="xs:string"/>
      <xs:element name="ExpiryMonth" type="xs:string"minOccurs="0"/>
      <xs:element name="ExpiryYear" type="xs:string"minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Contact">
    <xs:sequence>
      <xs:element name="EmailAddress" type="xs:string"/>
      <xs:element name="FirstName" type="xs:string"/>
      <xs:element name="LastName" type="xs:string"/>
      <xs:element name="MiddleInitial" type="xs:string"minOccurs="0"/>
      <xs:element name="PhoneNumber" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ShippingAddress">
    <xs:complexContent>
      <xs:extension base="Address">
        <xs:sequence>
          <xs:element name="RecipientName" type="xs:string"/>
          <xs:element name="RecipientPhoneNumber" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Address">
    <xs:sequence>
      <xs:element name="City" type="xs:string"/>
      <xs:element name="Country" type="xs:string"/>
      <xs:element name="CountrySubdivision" type="xs:string"minOccurs="0"/>
      <xs:element name="Line1" type="xs:string"/>
      <xs:element name="Line2" type="xs:string"minOccurs="0"/>
      <xs:element name="Line3" type="xs:string"minOccurs="0"/>
      <xs:element name="PostalCode" type="xs:string"minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  </xs:schema>

Element Overview Matrix:

ELEMENT
APPLICABLE VERSION
AuthorizeCheckoutRequest.OAuthToken

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BrandID

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BrandName

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.AccountNumber

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.CardHolderName

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.ExpiryMonth

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.ExpiryYear

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.Line1

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.Line1

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.Line2

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.Line2

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.Line3

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.Line3

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.City

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.City

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.Country,

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.Country

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.CountrySubdivision

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.CountrySubdivision

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.PostalCode

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.PostalCode

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.RecipientName

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.RecipientPhoneNumber

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.FirstName

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.MiddleName

V5 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.MiddleInitial

V4 and earlier

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.LastName

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.Gender

V5 and later where law requires

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.DateOfBirth.Year

V5 and later where law requires

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.DateOfBirth.Month

V5 and later where law requires

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.DateOfBirth.Day

V5 and later where law requires

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.DateOfBirth.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.NationalID

V5 and later where law requires

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.Country

V5 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.EmailAddress

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.PhoneNumber

All Versions

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.AuthenticateMethod

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.CardEnrollmentMethod

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.CAvv

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.EciFlag

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.MasterCardAssignedID

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.PaResStatus

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.SCEnrollmentStatus

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.SignatureVerification

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.Xid

V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.RewardNumber

V4 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.RewardId

V4 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.RewardName

V4 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.ExpiryMonth

V4 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.ExpiryYear

V4 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.PreCheckoutTransactionId

V6 and later

AuthorizeCheckoutRequest.MerchantParameterId

V6 and later

AuthorizeCheckoutRequest.DeviceType

V6 and later

AuthorizeCheckoutResponse.MerchantCallbackURL

All Versions

AuthorizeCheckoutResponse.OAuthVerifier

V6 and later

AuthorizeCheckoutResponse.StepupPending

V6 and later

AuthorizeCheckoutResponse.PreCheckoutTransactionId

V6 and later

AuthorizeCheckoutResponse.ExtensionPoint

V6 and later

AuthorizeCheckoutRequest.Errors

V6 and later

Element Descriptions:

AuthorizeCheckoutResponse.MerchantCallbackURL

Description: This is the merchant callback URL that is returned from this service. This URL embeds all the information needed by the merchant to proceed with the checkout as request parameters. The partner must redirect the browser to this URL, after it is returned.

The following steps should be taken to ensure all parameters within the callback URL retain proper encoding:

  1. HTML decodes the entire MerchantCallbackURL.
  2. URL Decode the entire MerchantCallbackURL.
  3. URL encodes the oauth_token, oauth_verifier, and checkout_resource_url parameter values.
  4. Send the URL to the user as a redirect to the browser.

Steps 2 and 3 look redundant since the result of step 3 looks just like step 1, but these steps are needed in case the merchant adds another URL to their callback URL as a parameter.

Example

Original MerchantCallbackURL:

https://www.examplemerchant.com/checkout/mp_callback/22467?oauth_token=093be2d6066cdf809c724d3f2d919f91&amp;oauth_verifier=7f407eebffcdbefa30e5d2bf36900022&amp;checkout_resource_url=https%3A%2F%2Fapi.mastercard.com%2Fonline%2Fv4%2Fcheckout%2F3020426%3Fwallet%3Dphw

HTML Decoded:

https://www.tasteaway.com/checkout/mp_callback/22467?oauth_token=093be2d6066cdf809c724d3f2d919f91&oauth_verifier=7f407eebffcdbefa30e5d2bf36900022&checkout_resource_url=https%3A%2F%2Fapi.mastercard.com%2Fonline%2Fv4%2Fcheckout%2F3020426%3Fwallet%3Dphw

URL Decoded:

https://www.tasteaway.com/checkout/mp_callback/22467?oauth_token=093be2d6066cdf809c724d3f2d919f91&oauth_verifier=7f407eebffcdbefa30e5d2bf36900022&checkout_resource_url=https://api.mastercard.com/online/v4/checkout/3020426?wallet=phw

URL Encoded oauth_token, oauth_verifier, and checkout_resource_url parameter values

https://www.tasteaway.com/checkout/mp_callback/22467?oauth_token=093be2d6066cdf809c724d3f2d919f91&oauth_verifier=7f407eebffcdbefa30e5d2bf36900022&checkout_resource_url=https%3A%2F%2Fapi.mastercard.com%2Fonline%2Fv4%2Fcheckout%2F3020426%3Fwallet%3Dphw

AuthorizeCheckoutResponse.OAuthVerifier

Description: Verifier that the merchant we use to retrieve their access token
Details: Optional, string

AuthorizeCheckoutResponse.StepupPending

Description: True if 3DS is required for a card being passed in the checkout data
Details: Required, Boolean

AuthorizeCheckoutResponse.PreCheckoutTransactionId

Description: Partner will append this as a parameter to their redirect URL in the case of a connected checkout.
Details: Optional, string

AuthorizeCheckoutRequest.OAuthToken

Description: This is oauth_token request parameter passed in during Checkout Initialization phase.
Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout

Description: This is checkout data including payment method, shipping address and consumer's contact information. These data elements will be stored in a temporary store once it is received by MasterPass and will be purged either when the checkout session expires (assuming it was not retrieved) or after data is accessed by the merchant.
Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BrandID

Description: The code that identifies the card as being a MasterCard, American Express, Visa, etc.  The value must be obtained from the Card Brands Service as the CardBrand.Id.

Details: Required for versions V3 and later

NOTE: The BrandID and BrandName parameters should not be included if checkout_version parameter to Checkout Initialization is set to v1 or v2

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BrandName

Description: The display name of the card brand, such as MasterCard, American Express, Visa, etc.  The value must be obtained from the Card Brands Service as the CardBrand.Name

Details: Required for versions V3 and later

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.AccountNumber

Description: This is the primary account number (PAN) printed on the card.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.CardHolderName

Description: This is the cardholder's name as printed on the card.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.ExpiryMonth

Description: Month in which the card will expire as printed on the card.

Details: Required, unless CardBrand.ExpDateRequired indicates otherwise

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.ExpiryYear

Description: Year in which the card will expire as printed on the card.

Details: Required, unless CardBrand.ExpDateRequired indicates otherwise

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress

Description: This is the billing address of the cardholder.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.Line1, AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.Line1

Description: Primary street address of the cardholder/customer.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.Line2, AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.Line2

Description: Optional second line of the street address of the cardholder/customer.

Details: Optional

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.Line3, AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.Line3

Description: Optional third line of the street address of the cardholder/customer.

Details: Optional

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.City, AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.City

Description: City associated with the address of the cardholder/customer.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.Country, AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.Country

Description: Country element must be set to standard 2-letters country code as defined in ISO 3166-2 (http://en.wikipedia.org/wiki/ISO_3166-2), such as US, GB etc.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.CountrySubdivision, AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.CountrySubdivision

Description: CountrySubdivision element must always be set to an ISO 3166-2 code for the following countries: Australia, Canada, Japan and the United States.  It is also recommended that ISO 3166-2 codes be used for subdivisions within other countries as well, although these will not be validated by the service and any free text value or a blank value is acceptable.  As a reference, US subdivision codes are defined here: http://en.wikipedia.org/wiki/ISO_3166-2:US; examples: US-VA, US-MO.

Details: Required for certain countries, recommended, but optional for others

AuthorizeCheckoutRequest.AuthorizedCheckout.Card.BillingAddress.PostalCode, AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.PostalCode

Description: Mail post office postal code (a.k.a. zip code) associated with the address of the cardholder/customer.  This is currently required for US, CA, GB, JP, DE, and AU although the list may change over time.

Details: Required conditionally by country

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.RecipientName

Description: Name of the person that the package should be delivered to.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.ShippingAddress.RecipientPhoneNumber

Description: Phone contact for the person that the package should be delivered to.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.FirstName

Description: First name (given name) of the customer making the purchase.

Details: Required

NOTE: The order of elements within the Contact node has changed in v5 of the schema.  The elements must be alphabetical for v4 and earlier (EmailAddress, FirstName, LastName, MiddleInitial, PhoneNumber).  The elements are provided in a logical order starting in v5 (FirstName, MiddleName, LastName, Gender, DateOfBirth, NationalID, Country, EmailAddress, PhoneNumber).

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.MiddleName

Description: Middle name of the customer making the purchase.  It is required for certain countries and should not be specified for other countries.

Details: Required for certain countries

NOTE: This field was introduced in v5 and it may be required based on the consumer's country of residence.

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.LastName

Description: Last name (family name or surname) of the customer making the purchase.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.MiddleInitial

Description: Middle initial of the customer making the purchase.

Details: Optional

NOTE: This field was removed in v5 (replaced with MiddleName).

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.Gender

Description: This is the consumer's gender, either 'F' for female or 'M' for male.  It is required for certain countries and should not be specified for other countries.

Details: Available in certain countries only, as required by local law

NOTE: This field was introduced in v5 and it may be required based on the consumer's country of residence.

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.DateOfBirth.Year

Description: This is the year of the consumer's date of birth.  It is required for certain countries and should not be specified for other countries.

Details: Available in certain countries only, as required by local law

NOTE: This field was introduced in v5 and it may be required based on the consumer's country of residence.

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.DateOfBirth.Month

Description: This is the month of the consumer's date of birth.  It is required for certain countries and should not be specified for other countries.

Details: Available in certain countries only, as required by local law

NOTE: This field was introduced in v5 and it may be required based on the consumer's country of residence.

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.DateOfBirth.Day

Description: This is the day of the consumer's date of birth.  It is required for certain countries and should not be specified for other countries.

Details: Available in certain countries only, as required by local law

NOTE: This field was introduced in v5 and it may be required based on the consumer's country of residence.

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.NationalID

Description: This is the consumer's national id.  It is required for certain countries and should not be specified for other countries.

Details: Available in certain countries only, as required by local law

NOTE: This field was introduced in v5 and it may be required based on the consumer's country of residence.

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.Country

Description: This is the consumer's country of residence.  It is required whenever NationalID is provided.

Details: Available in certain countries only, as required by local law

NOTE: This field was introduced in v5.

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.EmailAddress

Description: Email address of the customer making the purchase.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.Contact.PhoneNumber

Description: Phone number of the customer making the purchase.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.AuthenticateMethod

Description: The method of authentication used during Checkout, if any.

Details: Optional

NOTE: The AuthenticationOptions elements can only be included if the checkout_version parameter in Checkout Initialization is set to 'v3' or later.

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.CardEnrollmentMethod

Description: Indicates the method by which the card was added to the Partner wallet.  Acceptable values are the following:

  • Manual: The card was manually added to the Wallet by the user.
  • 3DS Manual: The card was manually added by the user, and 3DS authentication was performed at time of add.
  • Direct Provisioned: The card was directly provisioned into the Wallet by an Issuer partner.

Details: Optional

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.CAvv

Description: The <Cavv> value received on the Authenticate response from Cardinal.

Details: Optional (Required if received from Cardinal)

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.EciFlag

Description: The <EciFlag> value received on the Authenticate response from Cardinal.

Details: Optional (Required if received from Cardinal)

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.MasterCardAssignedID

Description: This field is part of the Maestro "MARP" program and does not need to be populated by the Partner.

Details: Optional

NOTE: The MasterCardAssignedID can only be included if the checkout_version parameter in Checkout Initialization is set to 'v4' or later.

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.PaResStatus

Description: The <PAResStatus> value received on the Authenticate response from Cardinal.

Details: Optional (Required if received from Cardinal)

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.SCEnrollmentStatus

Description: The <Enrolled> value received on the Lookup response from Cardinal.

Details: Optional (Required if received from Cardinal)

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.SignatureVerification

Description:  The <SignatureVerification> value received on the Authenticate response from Cardinal.

Details: Optional (Required if received from Cardinal)

AuthorizeCheckoutRequest.AuthorizedCheckout.AuthenticationOptions.Xid

Description: The <Xid> value received on the Authenticate response from Cardinal.

Details: Optional (Required if received from Cardinal)

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.Number

Description: This is the account number printed on the card.

Details: Required

NOTE: This and the other RewardProgram fields can only be included if the accept_reward_program parameter to Checkout Initialization is set to 'true'

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.RewardID

Description: Identifies the reward program offering that this entity is part of.  The value must be obtained from the Reward Program Offering Service as the RewardProgramOffering.Id.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.RewardName

Description: Identifies the reward program offering that this entity is part of.  The value must be obtained from the Reward Program Offering Service as the RewardProgramOffering.Name.

Details: Required

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.ExpiryMonth

Description: Month in which the reward program will expire as printed on the card.

Details: Required for reward program offerings that include an expiration date

AuthorizeCheckoutRequest.AuthorizedCheckout.RewardProgram.ExpiryYear

Description: Year in which the reward program will expire as printed on the card.

Details: Required for reward program offerings that include an expiration date

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

AuthorizeCheckoutRequest.AuthorizedCheckout.PreCheckoutTransactionId

Description: Unique ID of the precheckout transaction Id

Details: Optional

AuthorizeCheckoutRequest.AuthorizedCheckout.MerchantParameterId

Description: Unique ID of the merchant parameter Id

Details: Optional

Request Schema
            <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<AuthorizeCheckoutRequest>
  <OAuthToken>4sj4x12dxmw0bhwdt9h7q1hwduiisp1k3</OAuthToken>
  <AuthorizedCheckout>
      <Card>
         <BrandId>master</BrandId>
         <BrandName>MasterCard</BrandName>
         <AccountNumber>5215111111111111</AccountNumber>
         <BillingAddress>
             <City>Ofallon</City>
             <Country>US</Country>
             <CountrySubdivision>US-AR</CountrySubdivision>
             <Line1>123 Fake St</Line1>
             <Line2></Line2>
             <Line3></Line3>
             <PostalCode>32154</PostalCode>
         </BillingAddress>
         <CardHolderName>Lee M Cardholder</CardHolderName>
         <ExpiryMonth>3</ExpiryMonth>
         <ExpiryYear>2016</ExpiryYear>
      </Card>
      <Contact>
         <FirstName>Lee</FirstName>
         <MiddleName>Marvin</MiddleName>
         <LastName>CardHolder</LastName>
         <Gender>F</Gender>
         <DateOfBirth>
             <Year>1980</Year>
             <Month>2</Month>
             <Day>20</Day>
         </DateOfBirth>
         <Country>US</Country>
         <EmailAddress>test6@mc.com</EmailAddress>
         <PhoneNumber>6345644485</PhoneNumber>
      </Contact>
      <ShippingAddress>
         <City>Beverly Hills</City>
         <Country>US</Country>
         <CountrySubdivision>US-CA</CountrySubdivision>
         <Line1>123 Nowhere Street</Line1>
         <Line2></Line2>
         <Line3></Line3>
         <PostalCode>90210</PostalCode>
         <RecipientName>Lee Cardholder</RecipientName>
         <RecipientPhoneNumber>555-555-5555</RecipientPhoneNumber>
      </ShippingAddress>
      <AuthenticationOptions>
         <AuthenticateMethod>3DS</AuthenticateMethod>
         <CardEnrollmentMethod>Manual</CardEnrollmentMethod>
         <CAvv>jELUbgG+Tfj0AREACMLdCae+oIs=</CAvv>
         <EciFlag>02</EciFlag>
         <MasterCardAssignedID></MasterCardAssignedID>
         <PaResStatus>Y</PaResStatus>
         <SCEnrollmentStatus>Y</SCEnrollmentStatus>
         <SignatureVerification>Y</SignatureVerification>
         <Xid>akFUTFNhTkk1dlduWjBWeUVncjA=</Xid>
      </AuthenticationOptions>
      <RewardProgram>
         <RewardNumber>123728172</RewardNumber>
         <RewardId>123XYZ</RewardId>
         <RewardName>MyStarzReward</RewardName>
         <ExpiryMonth>12</ExpiryMonth>
         <ExpiryYear>2014</ExpiryYear>
      </RewardProgram>
  </AuthorizedCheckout>
  <PreCheckoutTransactionId>4sj4x12-dxmw0b-hwdt9h7q-1-hwdupih3-1ol</PreCheckoutTransactionId>
  <DeviceType>DESKTOP</DeviceType>
</AuthorizeCheckoutRequest>
Response Example
<?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <AuthorizeCheckoutResponse>
    <MerchantCallbackURL>http://www.masterpass.com/lightbox/Switch/callback.html?oauth_token=208a4feeda18917adffd22c23641ff67&oauth_verifier=367w4feeda18917adffd22c23641f321&checkout_resource_url=http%3A%2F%2Fapi.mastercard.com%3A8080%2Fonline%2Fmasterpass%2Fv6%2Fcheckout%2F423%3Fwallet%3Dphw&checkoutId=423</MerchantCallbackURL>

    <StepupPending>false</StepupPending>
    <OAuthVerifier>367w4feeda18917adffd22c23641f321</OAuthVerifier>
    <PreCheckoutTransactionId>4sj4x12-dxmw0b-hwdt9h7q-1-hwdupih3-1ol</PreCheckoutTransactionId>
  </AuthorizeCheckoutResponse>

In case an error occurs, Errors will be returned back as described in in Appendix: REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

Request XML

INVALID_INPUT_VALUE

Request xml doesn't pass service's schema validation

false

Card

INVALID_INPUT_LENGTH

Card expired

false

PostalCode

INVALID_INPUT_LENGTH

PostalCode length is invalid

false

ExpiryMonth

INVALID_INPUT_VALUE

ExpiryMonth is required

false

ExpiryYear

INVALID_INPUT_VALUE

ExpiryYear is required

false

PhoneNumber

INVALID_INPUT_LENGTH

PhoneNumber length is invalid

false

CountrySubdivision

INVALID_INPUT_VALUE

CountrySubdivision in invalid

false

Shipping Address Verification

The Partner must invoke the MasterPass Shipping Address Verification Service on legacy checkouts (v1 to v5) to determine if the merchant is able to ship to a given set of shipping addresses for the wallet user. Multiple shipping addresses can be provided in one call and the service will inspect each address independently so that some of them may be accepted and some rejected. The response from the service will insert an 'Accepted' status next to each of the address locations. An 'Accepted' value of 'true' indicates that the merchant will ship to that address. An 'Accepted' value of 'false' means that the address is outside of the merchant's supported shipping locations.

If an address is not accepted by the merchant then the user should not be allowed to choose that shipping address as part of the checkout.

It is recommended to cache the Shipping Address Verification Service response to avoid unnecessary duplicate calls to the service within a single checkout transaction. However, if there are any changes or additions to the shipping addresses, then the cached response should be cleared and the service should be called again.

Shipping Address Verification Service

This service allows the Partner to verify during checkout whether shipping addresses of the consumer are accepted by the merchant. The Service only checks whether the Country and Country Subdivision are acceptable, not a specific address. This is a REST service exposed on MasterCard OpenAPI infrastructure.

Here is the interface specification:

Resource URL

https://api.mastercard.com/masterpass/partner/v6/verify-shipping-address

Resource Method

POST

Data Format

XML

Request Schema
            <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ShippingAddressVerificationRequest"type="ShippingAddressVerificationRequest"/>
  <xs:complexType name="ShippingAddressVerificationRequest">
      <xs:sequence>
         <xs:element name="OAuthToken" type="xs:string"/>
         <xs:element name="VerifiableAddresses" type="VerifiableAddresses"/>
         <xs:element name="ShippingLocationProfileName"type="xs:string"minOccurs="0"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="VerifiableAddresses">
      <xs:sequence>
         <xs:element name="VerifiableAddress" type="VerifiableAddress"nillable="false" maxOccurs="unbounded"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:complexType type="VerifiableAddress">
      <xs:sequence>
         <xs:element name="Country" type="xs:string"/>
         <xs:element name="CountrySubdivision" type="xs:string"minOccurs="0"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ExtensionPoint">
      <xs:sequence>
         <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
      </xs:sequence>
      <xs:anyAttribute />
  </xs:complexType>
</xs:schema>
Element Descriptions:

ShippingAddressVerificationRequest.OAuthToken

Description: This is oauth_token request parameter passed in during Checkout Initialization phase.

ShippingAddressVerificationRequest.VerifiableAddresses

Description: This is the list of verifiable addresses that need to be verified. Each verifiable address consists of two fields, Country and CountrySubdivision.

Country element MUST be set to standard 2-letter country code as defined in ISO 3166-2 (en.wikipedia.org/wiki/ISO_3166-2), such as US, GB etc.

CountrySubdivision element must always be set to an ISO 3166-2 code for the following countries: Australia, Canada, Japan and the United States. It is also recommended that ISO 3166-2 codes be used for subdivisions within other countries as well, although these will not be validated by the service and any free text value or a blank value is acceptable. As a reference, US subdivision codes are defined here: en.wikipedia.org/wiki/ISO_3166-2:US; examples: US-VA, US-MO.

ShippingAddressVerificationRequest.ShippingLocationProfileName

Description: This is an optional parameter that should be obtained from the value of the shipping_location_profile parameter in the Checkout Initialization call. While this parameter is listed as optional, it is required if you receive this parameter from the merchant in the Checkout Initialization URL. Without this parameter, if provided by the merchant, you could get a false positive/negative on the shipping address.

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example
  <ShippingAddressVerificationRequest>
  <OAuthToken>12342-ab212-aef23f-3223dd</OAuthToken>
  <VerifiableAddresses>
      <VerifiableAddress>
         <Country>US</Country>
         <CountrySubdivision>US-VA</CountrySubdivision>
      </VerifiableAddress>
      <VerifiableAddress>
         <Country>US</Country>
         <CountrySubdivision>US-MD</CountrySubdivision>
      </VerifiableAddress>
  </VerifiableAddresses>
</ShippingAddressVerificationRequest>
Response Schema
            <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ShippingAddressVerificationResponse" type="ShippingAddressVerificationResponse"/>
  <xs:complexType name="ShippingAddressVerificationResponse">
      <xs:sequence>
         <xs:element name="OAuthToken" type="xs:string"/>
         <xs:element name="VerificationResults" type="VerificationResults"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="VerificationResults">
      <xs:sequence>
         <xs:element name="VerificationResult" type="VerificationResult"nillable="false" maxOccurs="unbounded"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="VerificationResult">
      <xs:sequence>
         <xs:element name="Country" type="xs:string"/>
         <xs:element name="CountrySubdivision" type="xs:string"minOccurs="0"/>
         <xs:element name="Accepted" type="xs:boolean"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ExtensionPoint">
      <xs:sequence>
         <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any"/>
      </xs:sequence>
      <xs:anyAttribute/>
  </xs:complexType>
</xs:schema>
Element Descriptions

ShippingAddressVerificationResponse.VerificationResults

Descriptions: This is the list of verification results. Each verification result consists of Country, CountrySubdivision and Accepted elements. Accepted element is of Boolean type and indicates where a combination of Country and CountrySubdivision is accepted by the merchant for current checkout.

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example
<ShippingAddressVerificationResponse>
  <VerificationResults>
      <VerificationResult>
         <Country>US</Country>
         <CountrySubdivision>US-VA</CountrySubdivision>
         <Accepted>true</Accepted>
      </VerificationResult>
      <VerificationResult>
         <Country>US</Country>
         <CountrySubdivision>US-MD</CountrySubdivision>
         <Accepted>false</Accepted>
      </VerificationResult>
  </VerificationResults>
</ShippingAddressVerificationResponse>

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Country

MISSING_REQUIRED_INPUT

Country is required

false

Card Brands Service

Users are able to add cards from various brands to their wallet. Major credit card brands are accepted for checkouts. It is also possible for users to complete checkouts with certain store brand cards. The full list of supported card brands will continue to evolve. Partners must invoke the MasterPass Card Brands Service to get the most up to date list.

This service will work together with the acceptable_cards parameter in the checkout initialization URL, but the two will likely have different lists. The acceptable_cards parameter provides the list of card brands that are accepted by a particular merchant for a particular checkout. The Card Brands service provides a superset of that same list - the full list of all possible cards that may be accepted by a merchant within the specified country. This list also includes any Private Label Cards (Retail Store Cards) that are accepted within that country. The acceptable_cards list includes only the card id whereas the Card Brands Service also includes more detail about each of the brands.

The service will only return card brands that are available for the provided country. The display names of the cards will be translated into the provided locale (language + country) if applicable.

It is recommended to cache the response from the Card Brands Service to avoid unnecessary duplicate calls. However, the data should be cleared within 1 hour so that changes to the list are propagated quickly.

Card Brands Service Interface

This service allows the Partner to obtain the latest list of card brands that are supported for checkout. This is a REST service exposed on MasterCard OpenAPI infrastructure.

Resource URL

api.mastercard.com/masterpass/partner/v6/card-brands?language=<language>&country=<country>

Resource Method

GET

Data Format

XML

Query string Parameters

language
Description: The user's language
Details: Required
Example: en (for en_US locale)

country
Description: The user's country in ISO 3166-2 format
Details: Required
Example: US (for en_US locale)

Sample Request

api.mastercard.com/masterpass/partner/v6/card-brands?language=fr&country=CA

Response Schema
<?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="CardBrandsResponse" type="CardBrandsResponse"/>
  <xs:complexType name="CardBrandsResponse">
      <xs:sequence>
         <xs:element name="CardBrands" type="CardBrands"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"
         minOccurs="0" />
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="CardBrands">
      <xs:sequence>
         <xs:element name="CardBrand" type="CardBrand"maxOccurs="unbounded"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"
         minOccurs="0" />
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="CardBrand">
      <xs:sequence>
         <xs:element name="CvvRequired" type="xs:boolean"/>
         <xs:element name="DisplayName" type="xs:string"/>
         <xs:element name="ExpDateRequired" type="xs:boolean"/>
         <xs:element name="Id" type="xs:string"/>
         <xs:element name="logoUrl" type="xs:string"minOccurs="0"/>
         <xs:element name="PrivateLabelCard" type="xs:boolean"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
  <xs:complexType name="ExtensionPoint">
      <xs:sequence>
         <xs:any processContents="lax"namespace="##any" minOccurs="0"
         maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute />
  </xs:complexType>
</xs:schema>
Element Descriptions

CardBrand.DisplayName

Description: Friendly display name for the card. Users should see this display name when choosing which brand of card they are adding. The display name will be translated into the provided locale (language + country) if applicable. It must be provided along with checkout authorization in order to pass the friendly display name on to the merchant.

CardBrand.Id

Description: The code that uniquely identifies the card brand. This id can be up to 8 alphanumeric. It must be provided along with checkout authorization to identify the brand of card that is being used for the checkout.

CardBrand.logoURL

Description: This is not used currently. In the future it will be a URL to an image for the logo of the brand.

CardBrand.CvvRequired

Description: Indicates if the card security code must be provided along with the card data when cards of this brand are added to a wallet. The card security code, or card verification value (CVV) is the additional 3 or 4 digit code printed on the card. If required, a field must be enabled to collect the code along with the rest of the card data.

CardBrand.ExpDateRequired

Description: Indicates if the card expiration date must be provided along with the card data when cards of this brand are added to a wallet. All credit cards have an expiration date but some private label cards do not expire. If required, fields must be enabled to collect the month and year of expiration along with the rest of the card data.

CardBrand.PrivateLabelCard

Description: Indicates that the card is a private label card (for instance, a store brand card). For the most part these cards will behave identical to network-branded cards. However, for usability the private label cards should be grouped together for users when presenting the list of supported card brands to the user.

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example
  <CardBrandsResponse>
  <CardBrands>
    <CardBrand>
      <CvvRequired>true</CvvRequired>
      <Name>MasterCard</Name>
      <ExpDateRequired>true</ExpDateRequired>
      <Id>master</Id>
      <PrivateLabelCard>false</PrivateLabelCard>
    </CardBrand>
    <CardBrand>
      <CvvRequired>true</CvvRequired>
      <Name>Visa</Name>
      <ExpDateRequired>true</ExpDateRequired>
      <Id>visa</Id>
      <PrivateLabelCard>false</PrivateLabelCard>
    </CardBrand>
    <CardBrand>
      <CvvRequired>true</CvvRequired>
      <Name>American Express</Name>
      <ExpDateRequired>true</ExpDateRequired>
      <Id>amex</Id>
      <PrivateLabelCard>false</PrivateLabelCard>
    </CardBrand>
    <CardBrand>
      <CvvRequired>true</CvvRequired>
      <Name>Discover</Name>
      <ExpDateRequired>true</ExpDateRequired>
      <Id>discover</Id>
      <PrivateLabelCard>false</PrivateLabelCard>
    </CardBrand>
    <CardBrand>
      <CvvRequired>true</CvvRequired>
      <Name>Maestro</Name>
      <ExpDateRequired>true</ExpDateRequired>
      <Id>maestro</Id>
      <PrivateLabelCard>false</PrivateLabelCard>
      284050.1
      80
      MasterPassTM API Integration Guide
      1.4
    </CardBrand>
    <CardBrand>
      <CvvRequired>true</CvvRequired>
      <Name>Diner's Club</Name>
      <ExpDateRequired>true</ExpDateRequired>
      <Id>diners</Id>
      <PrivateLabelCard>false</PrivateLabelCard>
    </CardBrand>
    <CardBrand>
      <CvvRequired>true</CvvRequired>
      <Name>Carte du Monde</Name>
      <ExpDateRequired>true</ExpDateRequired>
      <Id>monde</Id>
      <logoUrl>http://…/logoUrl>
      <PrivateLabelCard>true</PrivateLabelCard>
    </CardBrand>
    <CardBrand>
      <CvvRequired>true</CvvRequired>
      <Name>Récompenses génériques</Name>
      <ExpDateRequired>false</ExpDateRequired>
      <Id>generic</Id>
      <logoUrl>http:/…/logoUrl>
      <PrivateLabelCard>true</PrivateLabelCard>
    </CardBrand>
  </CardBrands>
  </CardBrandsResponse>

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Country

INVALID_INPUT_VALUE

Country is required

false

Language

INVALID_INPUT_VALUE

Language is required

false

Pairing Initialization (New for v6)

The pairing process starts when a shopper clicks the Connect with MasterPass button on a merchant site. This begins a set of exchanges that will bring the shopper through MasterPass, to the Partner site and back out to the merchant again. If the shopper agrees to pair their wallet with the merchant, the shopper's checkout data will be available pre-checkout going forward. Below are the query string parameters attached to the pairing URL, hosted by the wallet, during a pairing flow.

  • flow
    This will define the process that merchant is requesting. It is important if the Partner uses the same URL for Pairing, Checkout, Account Maintenance, etc.
  • merchant_return_url
    This is the merchant URL to return to when the consumer clicks the "Return to Merchant" link in the header. Partner must display the "Return to Merchant" link in the header. This is a required parameter.
  • locale
    This defines the desired locale to be used when displaying pages
  • targetOrigin
    This is the origin URL of the request.
  • merchantCheckoutId
    This is a unique value to identify the merchant.
  • version
    This is the checkout version the merchant supports. This is a required parameter and is an extremely important parameter in the Checkout Authorization Service. The value provided here will be used to generate the Checkout Authorization endpoint URL, and as noted below, will influence the data sent back to MasterPass. Example v6, v5, etc.
  • requireShippingDestination
    This flag indicates whether shipping address is required for the checkout. This is an optional parameter, defaulted to true if not passed. Valid values are: true, false. The value is case insensitive. 
  • loyaltyEnabled
    This optional parameter indicates if the merchant will accept a reward or loyalty program in the Checkout Authorization call.  The partner application should only allow users to select a loyalty program for this checkout if the value of this parameter is 'true'.  The default value is 'false'.  This parameter is only valid for merchants using v4 or later of the Merchant Checkout API and then only sent if the Merchant accepts the loyalty program for the transaction.
  • allowedCardTypes
    This parameter indicates card types accepted by the merchant. It is a comma separated list of card types. The following are valid card types: master, visa, amex, discover, maestro, diners, jcb. Card types in the list are case insensitive. For example VISA, MASTER and visa, MASTER are all valid. This is an optional parameter; all cards are accepted if not passed in.
  • Partner must only display MasterPass-supported cards for the consumer to choose from during a MasterPass transaction.

  • pairingRequestToken
    This is OAuth Request Token acquired by the merchant for this pairing attempt. This is the primary identifier for the pairing and it will expire in 15 minutes. This is a required parameter if pairing.
  • requestedDataTypes
    This field indicates the data fields a connected merchant would like access to. It is a required parameter if pairing is requested. The following are valid data types: ADDRESS, CARD, PROFILE, REWARD_PROGRAM.
  • requestPairing
    This field indicates that the merchant would like to connect to a user's wallet.
  • requestExpressCheckout
    This field indicates that the merchant would like enable express checkout  with a consumer.
  • walletId
    This field uniquely identifies the partner hosted wallet.
  • precheckoutTransactionId
    This field uniquely identifies the during a connected checkout. The merchant receives this value when they request precheckout data.
  • silentPairing
    This field indicates that a Silent Pairing enabled merchant is requesting pairing. This parameter will only be used by MasterCard for MasterCard innovative products at this stage.
  • merchantSuppressSignup

    This optional parameter indicates that no signup screens should be shown during the flow. A merchant might request this if they have a shorter timeout for this experience.

Authorize Pairing (New for v6)

Users have the ability to pair their wallet with merchants to share card aliases, addresses, loyalty program, and profiles. The wallet will make this call after a user has consented to share their data with a merchant.

Authorize Pairing Interface

This service allows the Partner to establish a wallet pairing with a merchant. This is a REST service exposed on MasterCard OpenAPI infrastructure.

Resource URL

api.mastercard.com/masterpass/partner/v6/pairing

Resource Method

POST

Data Format

XML

Request Schema
<?xml version="1.0" encoding="UTF-8"standalone="yes"?>
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="AuthorizePairingRequest" type="AuthorizePairingRequest"/>
  <xs:complexType name="AuthorizePairingRequest">
      <xs:sequence>
         <xs:element name="PairingDataTypes" type="PairingDataTypes"/>
         <xs:element name="OAuthToken" type="xs:string"/>
         <xs:element name="MerchantCheckoutId" type="xs:string"/>
         <xs:element name="ConsumerWalletId" type="xs:string"/>
         <xs:element name="WalletId" type="xs:string"/>
         <xs:element name="ExpressCheckout" type="xs:boolean"/>
         <xs:element name="ConsumerCountry" type="Country"/>
         <xs:element name="SilentPairing" type="xs:boolean"minOccurs="0" maxOccurs="1"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:element name="PairingDataTypes" type="PairingDataTypes"/>
  <xs:complexType name="PairingDataTypes">
      <xs:sequence>
         <xs:element name="PairingDataType" type="PairingDataType"minOccurs="1" maxOccurs="unbounded"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"
         minOccurs="0" />
      </xs:sequence>
  </xs:complexType>
  <xs:element name="PairingDataType" type="PairingDataType"/>
  <xs:complexType name="PairingDataType">
      <xs:sequence>
         <xs:element name="Type">
             <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="CARD"/>
                    <xs:enumeration value="ADDRESS"/>
                    <xs:enumeration value="REWARD_PROGRAM"/>
                    <xs:enumeration value="PROFILE"/>
                </xs:restriction>
             </xs:simpleType>
         </xs:element>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
      <xs:element name="Country" type="Country"/>
      <xs:complexType name="Country">
         <xs:sequence>
             <xs:element name="Code">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                       <xs:pattern value="[A-Z]{3}"/>
                    </xs:restriction>
                </xs:simpleType>
             </xs:element>
             <xs:element name="Name" type="xs:string"/>
             <xs:element name="CallingCode" type="xs:string"/>
             <xs:element name="Locale" type="Locale"minOccurs="0" maxOccurs="unbounded"/>
             <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
      </xs:complexType>
      <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
      <xs:complexType name="ExtensionPoint">
         <xs:sequence>
             <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any">
             </xs:sequence>
             <xs:anyAttribute/>
         </xs:complexType>
         <xs:element name="Locale" type="Locale"/>
         <xs:complexType name="Locale">
             <xs:sequence>
                <xs:element name="Locale" type="xs:string"minOccurs="0"/>
                <xs:element name="Language" type="xs:string"minOccurs="0"/>
                <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
             </xs:sequence>
         </xs:complexType>
      </xs:schema>
            
Element Descriptions:

AuthorizePairingRequest.PairingDataTypes

Description: These are the types of data that the wallet and consumer have agreed to share with the merchants.
Details: Required
Example: Card, ShippingAddress, RewardProgram, Profile

AuthorizePairingRequest.OAuthToken

Description: This is oauth_token request parameter passed in during Checkout Initialization phase.
Details: Required

AuthorizePairingRequest.MerchantCheckoutId

Description: Unique identifier for the Merchant that wishes to pair. This is received in the pairing initialization redirect.
Details: Required
Example: a4d6x3165n12thw1gpy151hw2jqjmy4s5

AuthorizePairingRequest.ConsumerWalletId

Description: A unique identifier for the consumer's wallet. This is up to the wallet partner to provide
Details: Required

AuthorizePairingRequest.WalletId

Description: Partition name MasterPass uses to identify the wallet. This is received in the pairing initialization redirect.
Details: Required
Example: a4d6x3165n12thw1gpy151hw2jqjmy4s5

AuthorizePairingRequest.ExpressCheckout

Description: True if the consumer has agreed to allow express checkout with the merchant.
Details: Required, boolean
Example: true, false

AuthorizePairingRequest.ConsumerCountry

Description: Consumer wallet country code. Certain countries have strict laws about sharing user data. This is required to verify that pairing should be allowed.

AuthorizePairingRequest.ConsumerCountry.Code

Description: Shorthand code to identify the country
Details: 3 character alpha string indicating the country
Example: USA

AuthorizePairingRequest.ConsumerCountry.CallingCode

Description: Calling code for the consumer's country
Details: String, required
Example: 011

AuthorizePairingRequest.ConsumerCountry.Locale

Description: The locale of the user
Details: Optional

AuthorizePairingRequest.ConsumerCountry.Locale.Locale

Description: The user's locale
Details: String, Optional
Example: United States

AuthorizePairingRequest.ConsumerCountry.Locale.Language

Description: The user's language
Details: String, Optional
Example: English

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Request Example
<AuthorizePairingRequest>
  <PairingDataTypes>
      <PairingDataType>
         <Type>ADDRESS</Type>
      </PairingDataType>
      <PairingDataType>
         <Type>PROFILE</Type>
      </PairingDataType>
      <PairingDataType>
         <Type>CARD</Type>
      </PairingDataType>
  </PairingDataTypes>
  <OAuthToken>3b66050f9fdf83a95f2c83c19b3ea4b5c7743367</OAuthToken>
  <MerchantCheckoutId>a4d6x3165n12thw1gpy151hw2jqjmy4s5</MerchantCheckoutId>
  <ConsumerWalletId>42</ConsumerWalletId>
  <WalletId>PHWallet</WalletId>
  <ConsumerCountry>
      <Code>USA</Code>
      <Name>United States</Name>
      <CallingCode>011</CallingCode>
  </ConsumerCountry>
</AuthorizePairingRequest>

Response Schema

<?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="AuthorizePairingResponse" type="AuthorizePairingResponse"/>
  <xs:complexType name="AuthorizePairingResponse">
      <xs:sequence>
         <xs:element name="MerchantCallbackURL" type="xs:string"/>
         <xs:element name="VerifierToken" type="xs:string"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ExtensionPoint">
      <xs:sequence>
         <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
      </xs:sequence>
      <xs:anyAttribute />
  </xs:complexType>
</xs:schema>
Element Descriptions

AuthorizePairingResponse.VerifierToken

Description: This is the verifier token response parameter received during the authorize pairing phase.  You will take this verifier and the value from the merchant_return_url and use them to construct a redirect to MasterPass to complete the pairing flow.
Details: String

Example: 473d2fc4f476a5b8a556eb074afe8eb789d1bfd7

Sandbox redirect URL: https://sandbox.masterpass.com/lightbox/Switch/callback.html?pairingVerifier=0fea976639aa76adc296490a056eb181cf7148e7

Production redirect URL: https://masterpass.com/lightbox/Switch/callback.html?pairingVerifier=473d2fc4f476a5b8a556eb074afe8eb789d1bfd7

AuthorizePairingResponse.MerchantCallbackURL

Description: The merchant callback URL embeds all the information needed by the merchant to proceed with the checkout as request parameters. The partner must redirect the browser to this URL, after it is returned.

The following steps should be taken to ensure all parameters within the callback URL retain proper encoding:

  1. HTML decodes the entire MerchantCallbackURL.
  2. URL Decode the entire MerchantCallbackURL.
  3. URL encodes the oauth_token, oauth_verifier, and checkout_resource_url liarameter values.
  4. Send the URL to the user as a redirect to the browser.

Steps 2 and 3 look redundant since the result of step 3 looks just like step 1, but these steps are needed in case the merchant adds another URL to their callback URL as a parameter.

Example

Original MerchantCallbackURL:

https://www.examplemerchant.com/checkout/mp_callback/22467?oauth_token=093be2d6066cdf809c724d3f2d919f91&amp;oauth_verifier=7f407eebffcdbefa30e5d2bf36900022&amp;checkout_resource_url=https%3A%2F%2Fapi.mastercard.com%2Fonline%2Fv4%2Fcheckout%2F3020426%3Fwallet%3Dphw

HTML Decoded:

https://www.tasteaway.com/checkout/mp_callback/22467?oauth_token=093be2d6066cdf809c724d3f2d919f91&oauth_verifier=7f407eebffcdbefa30e5d2bf36900022&checkout_resource_url=https%3A%2F%2Fapi.mastercard.com%2Fonline%2Fv4%2Fcheckout%2F3020426%3Fwallet%3Dphw

URL Decoded:

https://www.tasteaway.com/checkout/mp_callback/22467?oauth_token=093be2d6066cdf809c724d3f2d919f91&oauth_verifier=7f407eebffcdbefa30e5d2bf36900022&checkout_resource_url=https://api.mastercard.com/online/v4/checkout/3020426?wallet=phw

URL Encoded oauth_token, oauth_verifier, and checkout_resource_url parameter values

https://www.tasteaway.com/checkout/mp_callback/22467?oauth_token=093be2d6066cdf809c724d3f2d919f91&oauth_verifier=7f407eebffcdbefa30e5d2bf36900022&checkout_resource_url=https%3A%2F%2Fapi.mastercard.com%2Fonline%2Fv4%2Fcheckout%2F3020426%3Fwallet%3Dphw

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example
  <?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>
  <AuthorizePairingResponse>
    <VerifierToken>b17cd261ad9e34007ea8e3dd118c3c667e820a70</VerifierToken>
    <MerchantCallbackURL>http://www.masterpass.com/lightbox/Switch/callback.html?oauth_token= 208a4feeda18917adffd22c23641ff67&oauth_verifier= 367w4feeda18917adffd22c23641f321&checkout_resource_url=http%3A%2F%2Fapi.mastercard.com%3A8080%2Fonline%2Fmasterpass%2Fv6%2Fcheckout%2F423%3Fwallet%3Dphw&checkoutId=423</MerchantCallbackURL>
  </AuthorizePairingResponse>

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Country

INVALID_INPUT_VALUE

Country is required

false

Request Get Merchant Data Service Interface (New for v6)

This service is used by a wallet provider to get merchant data from the MasterPass database.

Why would I need to use this resource?

It is to be used for presenting a customer the name and logo of a merchant on the consent screens for pairing and express checkout requests.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/merchant/{merchantcheckoutid}

Resource Method

GET

Data Format

XML

Query string Parameters

MerchantCheckoutId

Description: Checkout identifier of Merchant that was provided in URL to wallet.
Details: Required

Sample Request

https://api.mastercard.com/masterpass/partner/v6/merchant/a4d6x6ruudmtchre1ri831hre34f3lwa

Response Schema
<?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Merchant" type="Merchant"/>
  <xs:complexType name="Merchant">
      <xs:sequence>
         <xs:element name="Name" type="xs:string"/>
         <xs:element name="DisplayName" type="xs:string"minOccurs="0"/>
         <xs:element name="MerchantType" type="xs:string"minOccurs="0"/>
         <xs:element name="ProductionUrl" type="xs:string"/>
         <xs:element name="CardinalMerchantId" type="xs:string"/>
         <xs:element name="AuthOptions" type="xs:string"/>
         <xs:element name="SandboxUrl" type="xs:string"/>
         <xs:element name="MerchantCheckoutId" type="xs:string"/>
         <xs:element name="Logo" type="Logo"minOccurs="0"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:element name="Logo" type="Logo"/>
  <xs:complexType name="Logo">
      <xs:sequence>
         <xs:element name="Ref" type="xs:string"/>
         <xs:element name="Height" type="xs:string"minOccurs="0"/>
         <xs:element name="Width" type="xs:string"minOccurs="0"/>
         <xs:element name="BackgroundColor" type="xs:string"minOccurs="0"/>
         <xs:element name="Url" type="xs:anyURI"minOccurs="0"/>
         <xs:element name="LongDescription" type="xs:string"minOccurs="0"/>
         <xs:element name="AlternateText" type="xs:string"minOccurs="0"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
  </xs:complexType>
  <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
  <xs:complexType name="ExtensionPoint">
      <xs:sequence>
         <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any"/>
      </xs:sequence>
      <xs:anyAttribute/>
  </xs:complexType>
</xs:schema>
Element Descriptions

Merchant.Name

Description: Name of the merchant.
Details: String

Merchant.Name.DisplayName

Description: Name the merchant wants displayed.
Details: Date

Merchant.Name.ProductionUrl

Description: Production URL of the merchant.
Details: String

Merchant.Name.SandboxUrl

Description: Sandbox URL of the merchant.
Details: String

Merchant.MerchantCheckoutId

Description: This is the MasterPass identifier of the merchant checkout project.  A single merchant can have multiple checkout IDs.

Details: StringMerchant.Logo.Ref
Description: The merchant logo for display.
Details: Required
Merchant.Logo.Height
Description: The height of the merchant logo.
Details: Optional
Merchant.Logo.Width
Description: The width of the merchant logo.
Details: Optional
Merchant.Logo.BackgroundColor
Description: The background color of the merchant logo.
Details: Optional
Merchant.Logo.Url
Description: The merchant logo URL.
Details: Optional
Merchant.Logo.LongDescription
Description: The description of the merchant logo.
Details: Optional
Merchant.Logo.AlternateText
Description: The alternate text of the merchant logo.
Details: Optional

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example
  <Merchant>
    <Name>Fmjtmy Qmvkrqe Uaaexk Iimjyiym Eqqwms</Name>
    <DisplayName>Ockbkso Yqrotx Npmhuednip Lxtymnwzxm Jqqnxlqgu</DisplayName>
    <ProductionUrl>https://wjikur.com</ProductionUrl>
    <SandboxUrl>https://mqpgxa.com</SandboxUrl>
    <Logo>    <Url>http://www.mastercard.us/_globalAssets/img/nav/navl_logo_mastercardcom.png</Url>
    </Logo>
  </Merchant>

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Request Connected Merchant History List Service Interface (New for v6)

This service is used by a wallet provider to get a list of the merchants they have paired and currently are paired with.

Why would I need to use this resource?

It is to be used for presenting a customer their connection history list.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/connectedmerchanthistorylist

Resource Method

POST

Data Format

XML

POST Schema

The POST method will take an XML object within the request payload.This object represents a consumer and the connection history to retrieve for a specific merchant. The following schema defines the object. Explanation of each of the individual fields follows that.

Sample Request

https://api.mastercard.com/masterpass/partner/v6/connectedmerchanthistorylist

Request Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ConnectedMerchantsRequest" type="ConnectedMerchantsRequest"/>
    <xs:complexType name="ConnectedMerchantsRequest">
      <xs:sequence>
        <xs:element name="ConsumerWalletId" type="xs:string"/>
        <xs:element name="WalletId" type="xs:string"/>
        <xs:element name="StartDate" type="xs:dateTime"/>
        <xs:element name="EndDate" type="xs:dateTime"/>
        <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
    <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
    <xs:complexType name="ExtensionPoint">
        <xs:sequence>
         <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
        </xs:sequence>
      <xs:anyAttribute />
    </xs:complexType>
  </xs:schema>
Element Descriptions

ConnectedMerchantsRequest.ConsumerWalletId

Description: The identification of the specific consumer. This ID is provided by the wallet.
Details: Required

ConnectedMerchantsRequest.WalletId

Description: ID that identifies the wallet that is making the request.
Details: Required

ConnectedMerchantsRequest.StartDate

Description: Date that will be used in query that will be used as the FROM date of activity history.
Details: Optional

ConnectedMerchantsRequest.EndDate

Description: Date that will be used in query that will be used as the FROM date of activity history.
Details: Optional

**.ExtensionPoint

Description: XSD type any reserved for future use.
Details: Optional

Request Example
<ConnectedMerchantsRequest>
  <ConsumerWalletId>8</ConsumerWalletId>
  <WalletId>Mobile</WalletId>
</ConnectedMerchantsRequest>
Response Schema
<?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ConnectedMerchantsResponse" type="ConnectedMerchantsResponse"/>
  <xs:complexType name="ConnectedMerchantsResponse">
    <xs:sequence>
      <xs:element name="Merchants" type="Merchant"minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Merchant" type="Merchant"/>
  <xs:complexType name="Merchant">
    <xs:sequence>
      <xs:element name="Name" type="xs:string"/>
      <xs:element name="DisplayName" type="xs:string"minOccurs="0" />
      <xs:element name="MerchantType" type="xs:string"minOccurs="0" />
      <xs:element name="ProductionUrl" type="xs:string"/>
      <xs:element name="CardinalMerchantId" type="xs:string"/>
      <xs:element name="AuthOptions" type="xs:string"/>
      <xs:element name="SandboxUrl" type="xs:string"/>
      <xs:element name="MerchantCheckoutId" type="xs:string"/>
      <xs:element name="Logo" type="Logo"minOccurs="0" />
      <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Logo" type="Logo"/>
  <xs:complexType name="Logo">
    <xs:sequence>
      <xs:element name="Ref" type="xs:string"/>
      <xs:element name="Height" type="xs:string"minOccurs="0" />
      <xs:element name="Width" type="xs:string"minOccurs="0" />
      <xs:element name="BackgroundColor" type="xs:string" minOccurs="0"/>
      <xs:element name="Url" type="xs:anyURI"minOccurs="0" />
      <xs:element name="LongDescription" type="xs:string" minOccurs="0"/>
      <xs:element name="AlternateText" type="xs:string" minOccurs="0"/>
      <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
  <xs:complexType name="ExtensionPoint">
    <xs:sequence>
      <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
    </xs:sequence>
  <xs:anyAttribute />
  </xs:complexType>
</xs:schema>
           
Element Descriptions

Merchants.Name

Description: Name of the merchant.
Details: String

Merchants.DisplayName

Description: Name the merchant wants displayed.
Details: String

Merchants.MerchantType

Description: Merchant type is a code that is used in the get connections service call.
Details: String

Merchants.ProductionUrl

Description: Production URL of the merchant.
Details: String

Merchants.CardinalMerchantId

Description: The identifier of the cardinal merchant.
Details: String

Merchants.AuthOptions

Description: Authenication options of the connected merchant.
Details: String

Merchants.SandboxUrl

Description: Sandbox URL of the merchant.
Details: String

Merchants.MerchantCheckoutId

Description: This is the MasterPass identifier of the merchant checkout project.  A single merchant can have multiple checkout IDs.
Details:
String

Merchants.Logo.Ref

Description: The merchant logo for display.  URL to logo
Details: Required

Merchants.Logo.Height

Description: The height of the merchant logo.
Details: Optional

Merchants.Logo.Width

Description: The width of the merchant logo.
Details: Optional

Merchants.Logo.BackgroundColor

Description: The background color of the merchant logo.
Details: Optional

Merchants.Logo.Url

Description: The merchant logo URL.
Details: Optional

Merchants.Logo.LongDescription

Description: The description of the merchant logo.
Details: Optional

Merchants.Logo.AlternateText

Description: The alternate text of the merchant logo.
Details: Optional

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Sample Response
  <ConnectedMerchantsResponse>
    <Merchants>
      <Name>Sample Merchant</Name>
      <ProductionUrl>https://samplemerchant.com</ProductionUrl>
      <SandboxUrl>https://test.samplemerchant.com</SandboxUrl>
      <MerchantCheckoutId>a4a6x3oy2gqz2hhdta4491hhe2t444o79</MerchantCheckoutId>
      <Logo/>
    </Merchants>
  </ConnectedMerchantsResponse>

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Request Connections History Service Interface (New for v6)

This service allows a partner to get data for specific connections of a merchant from the MasterPass database. It is to be used for presenting a customer a history of merchant connection activities.

Connection History List service will need to be used to get and display to the consumer a list of merchants existing connections and pairing activity so that consumers can manage their pairing and connections to merchants.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/connectedmerchanthistory

Resource Method

POST

Data Format

XML

POST Schema

The POST method will take an XML object within the request payload.This object represents a consumer and the connection history to retrieve for a specific merchant.The following schema defines the object.Explanation of each of the individual fields follows that.

Request Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
  <xs:element name="ConnectionHistoryRequest" type="ConnectionHistoryRequest"/>
  <xs:element name="ConnectionHistoryRequest"/>
    <xs:complexType name="ConnectionHistoryRequest">
      <xs:sequence>
        <xs:element name="MerchantCheckoutId" type="xs:string"/>
        <xs:element name="StartDate" type="xs:dateTime"/>
        <xs:element name="EndDate" type="xs:dateTime"/>
        <xs:element name="WalletId" type="xs:string"/>
        <xs:element name="ConsumerWalletId" type="xs:string"/>
        <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
    <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
    <xs:complexType name="ExtensionPoint">
      <xs:sequence>
        <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any"/>
      </xs:sequence>
    <xs:anyAttribute/>
    </xs:complexType>
  </xs:schema>
Element Descriptions

ConnectionHistoryRequest.MerchantCheckoutId

Description: This is an identifier of the merchant that the consumer selects.  The list of merchants to present to the consumer is provided by Connection History List service.
Details: Required

ConnectionHistoryRequest.StartDate

Description: Date that will be used in query that will be used as the FROM date of activity history.
Details: Required

ConnectionHistoryRequest.EndDate

Description: Date that will be used in query that will be used as the FROM date of activity history.
Details: Required

ConnectionHistoryRequest.WalletId

Description: Date that will be used in query that will be used as the TO date of activity history.
Details: Required

ConnectionHistoryRequest.WalletConsumerId

Description: The identification of the specific consumer.  This ID is provided by the wallet.
Details: Required

**.ExtensionPoint

Description: XSD type any reserved for future use.
Details: OptionalSample Request

https://api.mastercard.com/masterpass/partner/v6/connectedmerchanthistory

Example Request
  <ConnectionHistoryRequest> 
    <MerchantCheckoutId>654161</MerchantCheckoutId>
    <MerchantType>AAA</MerchantType>
    <StartDate></StartDate>
    <EndDate></EndDate>
    <WalletId>646198</WalletId>
    <WalletConsumerId>87564497</WalletConsumerId>
  </ConnectionHistoryRequest>
Response Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
     <xs:element name="ConnectionHistory" type="ConnectionHistory"/>
     <xs:complexType name="ConnectionHistory">
         <xs:sequence>
            <xs:element name="MerchantInfo" type="MerchantInfo"/>
            <xs:element name="TimeStamp" type="xs:dateTime"/>
            <xs:element name="activityString" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="MerchantInfo" type="MerchantInfo"/>
     <xs:complexType name="MerchantInfo">
         <xs:sequence>
            <xs:element name="Name" type="xs:string"/>
            <xs:element name="Id" type="xs:string"/>
            <xs:element name="Type" type="xs:string"/>
            <xs:element name="ActivityList" type="ActivityList"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ActivityList" type="ActivityList"/>
     <xs:complexType name="ActivityList">
         <xs:sequence>
            <xs:element name="Activity" type="Activity"minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="Activity" type="Activity"/>
     <xs:complexType name="Activity">
         <xs:sequence>
            <xs:element name="Date" type="xs:dateTime"/>
            <xs:element name="ExpressCheckout" type="xs:string"/>
            <xs:element name="Pairing" type="xs:string"/>
            <xs:element name="PairingDataType" type="PairingDataType"/>
            <xs:element name="PrecheckoutDataType" type="PairingDataType"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="PairingDataType" type="PairingDataType"/>
     <xs:complexType name="PairingDataType">
         <xs:sequence>
            <xs:element name="Type">
                <xs:simpleType>
                   <xs:restriction base="xs:string">
                       <xs:enumeration value="CARD"/>
                       <xs:enumeration value="ADDRESS"/>
                       <xs:enumeration value="REWARD_PROGRAM"/>
                       <xs:enumeration value="PROFILE"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any"/>
         </xs:sequence>
         <xs:anyAttribute />
     </xs:complexType>
  </xs:schema>
Element Descriptions

ConnectionHistory.MerchantInfo.Name

Description: Name of merchant.
Details: String

ConnectionHistory.MerchantInfo.Id

Description: This is an identifier of the merchant that the consumer selects.  The list of merchants to present to the consumer is provided by Connection History List service.
Details: String

ConnectionHistory.MerchantInfo.Type

Description: This is a code for the type of MasterPass merchant that the consumer selects.  The list of merchants to present to the consumer is provided by Connection History List service. The 2 fields that are not displayed but are used in the call to get the connection history are Merchant ID and Type.
Details: String

ConnectionHistory.MerchantInfo.ActivityList

Description: This is a code for the activity list type of MasterPass merchant that the consumer selects. 
Details: String

ConnectionHistory.ActivityList

Description: This is a code for the activity list of the connection history service. 
Details: String

ConnectionHistory.MerchantInfo.Activity.Date

Description: The date of the activity. All activity for a merchant in a single day is rolled into one record.
Details: Date

ConnectionHistory.MerchantInfo.Activity.ExpressCheckout

Description: If an express checkout was enabled and/or performed by the merchant that day.
Details: String.  Blank or will be ExpressCheckoutEnabled and/or ExpressCheckoutCompleted.

ConnectionHistory.MerchantInfo.Activity.Pairing

Description: If the consumer consented to allow the merchant to access pre-checkout data and/or if the merchant consumer deleted the connection that day.
Details: String.  Blank or will be PairingEnabled and/or PairingDeleted

ConnectionHistory.MerchantInfo.Activity.PairingDataType

Description: The types of data that the consumer consented to allow the merchant access to in the future.
Details: String. Items may be Card, ShippingAddress, RewardProgram, Profile

ConnectionHistory.MerchantInfo.Activity.PrecheckoutDataType

Description: The types of consumer data that the merchant requested that day.
Details: String. Items may be Card, ShippingAddress, RewardProgram, Profile.

ConnectionHistory.MerchantInfo.PairingDataType.Type.Card

Description: The types of cards that are shown for pairing data type.
Details: String

ConnectionHistory.MerchantInfo.PairingDataType.Type.ShippingAddress

Description: The shipping address shown for the pairing data type.
Details: String

ConnectionHistory.MerchantInfo.PairingDataType.Type.RewardProgram

Description: The reward program shown for the pairing data type.
Details: String

ConnectionHistory.MerchantInfo.PairingDataType.Type.Profile

Description: The type of profile shown for the pairing data type.
Details: String

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example
  <?xml version="1.0"encoding="UTF-8"?>
  <ConnectionHistory>
     <MerchantInfo>
         <Name>MerchantName</Name>
         <Id>12345</Id>
         <Type>MerchantType</Type>
         <ActivityList>
            <Activity>
                <Date>2001-12-31T12:00:00</Date>
                <ExpressCheckout>ExpressCheckout</ExpressCheckout>
                <Pairing>Pairing</Pairing>
                <PairingDataType>
                   <Type>CARD</Type>
                </PairingDataType>
                <PrecheckoutDataType>
                   <Type>PROFILE</Type>
                </PrecheckoutDataType>
            </Activity>
         </ActivityList>
     </MerchantInfo>
     <TimeStamp>2001-12-31T12:00:00</TimeStamp>
     <activityString>activityString</activityString>
  </ConnectionHistory>

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Pre-checkout Data Service Interface (New for v6)

This service is used by a MasterPass to notify/request a MasterPass consumer's pre-checkout data from a wallet provider.

Why would I need to use this resource?

To provide the consumer with their preferred options for a seamless checkout experience. Before the wallet provider responds to this call it should send the consumer's information via the AuthorizePreCheckout service (next section). MasterPass getting the response is notification to get the data from the MasterPass temporary database.

Resource URL

This URL will need to be supplied to MasterPass by the wallet.

https://www.anywallet.com/walletapi/wallet/v6/precheckout

Resource Method

POST

Data Format

XML

Sample Request

POST https://www.anywallet.com/walletapi/wallet/v6/precheckout

Request Schema
  <?xml version="1.0"encoding="UTF-8"?>
  <xs:element name="WalletPrecheckoutDataRequest"type="WalletPrecheckoutDataRequest"/>
  <xs:complexType name="WalletPrecheckoutDataRequest">
     <xs:sequence>
         <xs:element name="OauthToken" type="xs:string"/>
         <xs:element name="ConsumerWalletId" type="xs:string"/>
         <xs:element name="PrecheckoutTransactionId" type="xs:string"/>
         <xs:element name="PairingDataTypes" type="PairingDataTypes"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         <xs:element name="WalletId" type="xs:string"/>
     </xs:sequence>
  </xs:complexType>
  <xs:element name="PairingDataTypes"type="PairingDataTypes"/>
  <xs:complexType name="PairingDataTypes">
     <xs:sequence>
         <xs:element name="PairingDataType" type="PairingDataType"minOccurs="1" maxOccurs="unbounded"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"
         minOccurs="0" />
     </xs:sequence>
  </xs:complexType>
  <xs:element name="PairingDataType"type="PairingDataType"/>
  <xs:complexType name="PairingDataType">
     <xs:sequence>
         <xs:element name="Type">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                   <xs:enumeration value="CARD"/>
                   <xs:enumeration value="ADDRESS"/>
                   <xs:enumeration value="REWARD_PROGRAM"/>
                   <xs:enumeration value="PROFILE"/>
                </xs:restriction>
            </xs:simpleType>
         </xs:element>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
     </xs:sequence>
  </xs:complexType>
  <xs:element name="ExtensionPoint"type="ExtensionPoint"/>
  <xs:complexType name="ExtensionPoint">
     <xs:sequence>
         <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
     </xs:sequence>
     <xs:anyAttribute />
  </xs:complexType>
  </xs:schema>
Element Descriptions

WalletPrecheckoutDataRequest.OauthToken

Description: Verifier token that is associated with the consumer and merchant connection. This token was provided on the Authorize Pairing call that connected the consumer and merchant.
Details: Required; String

WalletPrecheckoutDataRequest.ConsumerWalletId

Description: Consumer Identifier that was provided by the wallet during the Authorize Pairing call.
Details: Required; Alpha Numeric

WalletPrecheckoutDataRequest.PrecheckoutTransactionId

Description: This is a transaction identifier that MasterPass generates and provides to a merchant when the merchant requests consumer data in a GetPreCheckoutData request. ID associated with the PreCheckout Transaction.
Details: Required; Alpha Numeric

WalletPrecheckoutDataRequest.PairingDataTypes

Description: Data types requested by merchant.
Details: Required, can include card, shipping, loyalty, profile.

WalletPrecheckoutDataRequest.WalletId

Description: Identifier provided by MasterPass for a specific wallet provider.
Details: String

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example

Return 200 code

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Authorize PreCheckout Request (New for v6)

Partner wallet is supplying partial data to the merchant.

Why would I need to use this resource?

To allow partial data to be sent to the merchant so the customer can easily choose their card aliases, shipping addresses, loyalty and profile data before the checkout process.

When will this be used?

When the wallet receives precheckout data service message at their supplied URL the wallet should respond with this call.

Authorize PreCheckout Interface

This service allows the customer to easily see a snippet of their card and shipping details.The customer will have to be signed into the merchant site.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/precheckout

Resource Method

POST

Data Format

XML

Request Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
     <xs:element name="AuthorizePrecheckoutRequest"type="AuthorizePrecheckoutRequest"/>
     <xs:complexType name="AuthorizePrecheckoutRequest">
         <xs:sequence>
            <xs:element name="PrecheckoutData" type="PrecheckoutData"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="PrecheckoutData" type="PrecheckoutData"/>
     <xs:complexType name="PrecheckoutData">
         <xs:sequence>
            <xs:element name="Cards" type="PrecheckoutCards"/>
            <xs:element name="Contact" type="Contact"minOccurs="0"/>
            <xs:element name="ShippingAddresses" type="PrecheckoutShippingAddresses"/>
            <xs:element name="RewardPrograms" type="PrecheckoutRewardPrograms"/>
            <xs:element name="WalletName" type="xs:string"minOccurs="1"/>
            <xs:element name="PrecheckoutTransactionId" type="xs:string"/>
            <xs:element name="ConsumerWalletId" type="xs:string"minOccurs="1"/>
            <xs:element name="Errors" type="Errors"minOccurs="0"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="PrecheckoutCards" type="PrecheckoutCards"/>
     <xs:complexType name="PrecheckoutCards">
         <xs:sequence>
            <xs:element name="Card" type="PrecheckoutCard"minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:element name="PrecheckoutCard" type="PrecheckoutCard"/>
     <xs:complexType name="PrecheckoutCard">
         <xs:sequence>
            <xs:element name="BrandId" type="xs:string"/>
            <xs:element name="BrandName" type="xs:string"/>
            <xs:element name="BillingAddress" type="Address"/>
            <xs:element name="CardHolderName" type="xs:string"/>
            <xs:element name="ExpiryMonth" type="Month"minOccurs="0"/>
            <xs:element name="ExpiryYear" type="Year"minOccurs="0"/>
            <xs:element name="CardId" type="xs:string"></xs:element>
            <xs:element name="LastFour" type="xs:string"/>
            <xs:element name="CardAlias" type="xs:string"/>
            <xs:element name="SelectedAsDefault" type="xs:boolean"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:element name="PrecheckoutShippingAddresses"type="PrecheckoutShippingAddresses"/>
     <xs:complexType name="PrecheckoutShippingAddresses">
         <xs:sequence>
            <xs:element name="ShippingAddress" type="PrecheckoutShippingAddress"minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:element name="PrecheckoutShippingAddress" type="PrecheckoutShippingAddress"/>
     <xs:complexType name="PrecheckoutShippingAddress">
         <xs:complexContent>
            <xs:extension base="Address">
                <xs:sequence>
                   <xs:element name="RecipientName" type="xs:string"/>
                   <xs:element name="RecipientPhoneNumber" type="xs:string"/>
                   <xs:element name="AddressId" type="xs:string"/>
                   <xs:element name="SelectedAsDefault" type="xs:boolean"/>
                   <xs:element name="ShippingAlias" type="xs:string"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
     </xs:complexType>
     <xs:element name="PrecheckoutRewardPrograms" type="PrecheckoutRewardPrograms"/>
     <xs:complexType name="PrecheckoutRewardPrograms">
         <xs:sequence>
            <xs:element name="RewardProgram" type="PrecheckoutRewardProgram"minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:element name="PrecheckoutRewardProgram" type="PrecheckoutRewardProgram"/>
     <xs:complexType name="PrecheckoutRewardProgram">
         <xs:sequence>
            <xs:element name="RewardNumber" type="xs:string"/>
            <xs:element name="RewardId" type="xs:string"/>
            <xs:element name="RewardName" type="xs:string"minOccurs="0"/>
            <xs:element name="ExpiryMonth" type="Month"minOccurs="0"/>
            <xs:element name="ExpiryYear" type="Year"minOccurs="0"/>
            <xs:element name="RewardProgramId" type="xs:string"/>
            <xs:element name="RewardLogoUrl" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Contact">
         <xs:sequence>
            <xs:element name="FirstName" type="NonEmptyString"/>
            <xs:element name="MiddleName" minOccurs="0">
                <xs:simpleType>
                   <xs:restriction base="xs:string">
                       <xs:minLength value="1"/>
                       <xs:maxLength value="150"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="LastName" type="NonEmptyString"/>
            <xs:element name="Gender" type="Gender"minOccurs="0"/>
            <xs:element name="DateOfBirth" type="DateOfBirth"minOccurs="0"/>
            <xs:element name="NationalID" minOccurs="0">
                <xs:simpleType>
                   <xs:restriction base="xs:string">
                       <xs:minLength value="1"/>
                       <xs:maxLength value="150"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Country" type="Country"/>
            <xs:element name="EmailAddress" type="EmailAddress"/>
            <xs:element name="PhoneNumber" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Address">
         <xs:sequence>
            <xs:element name="City" type="NonEmptyString"/>
            <xs:element name="Country" type="Country"/>
            <xs:element name="CountrySubdivision" type="NonEmptyString"minOccurs="0"/>
            <xs:element name="Line1" type="NonEmptyString"/>
            <xs:element name="Line2" type="NonEmptyString"minOccurs="0"/>
            <xs:element name="Line3" type="NonEmptyString"minOccurs="0"/>
            <xs:element name="PostalCode" type="NonEmptyString"minOccurs="0"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:simpleType name="NonEmptyString">
         <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:whiteSpace value="collapse"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:simpleType name="Country">
         <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{2}"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:simpleType name="EmailAddress">
         <xs:restriction base="xs:string">
            <xs:pattern value="[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*@[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:simpleType name="Gender">
         <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="F"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:complexType name="DateOfBirth">
         <xs:sequence>
            <xs:element name="Year">
                <xs:simpleType>
                   <xs:restriction base="xs:int">
                       <xs:minInclusive value="1900"/>
                       <xs:pattern value="\d{4}"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Month" type="Month"/>
            <xs:element name="Day">
                <xs:simpleType>
                   <xs:restriction base="xs:int">
                       <xs:minInclusive value="1"/>
                       <xs:maxInclusive value="31"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:simpleType name="Month">
         <xs:restriction base="xs:int">
            <xs:minInclusive value="1"/>
            <xs:maxInclusive value="12"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:simpleType name="Year">
         <xs:restriction base="xs:int">
            <xs:minInclusive value="2013"/>
            <xs:pattern value="\d{4}"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:complexType name="Error">
         <xs:sequence>
            <xs:element name="Description" type="xs:string"minOccurs="0"/>
            <xs:element name="ReasonCode" type="xs:string"/>
            <xs:element name="Recoverable" type="xs:boolean"/>
            <xs:element name="Source" type="xs:string"/>
            <xs:element name="Details" type="Details"minOccurs="0" maxOccurs="1"/>
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Errors">
         <xs:sequence>
            <xs:element name="Error" type="Error"minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Details">
         <xs:sequence>
            <xs:element name="Detail" type="Detail"minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Detail">
         <xs:sequence>
            <xs:element name="Name" type="xs:string"/>
            <xs:element name="Value" type="xs:string"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any"/>
         </xs:sequence>
         <xs:anyAttribute/>
     </xs:complexType>
  </xs:schema>
            
Element Descriptions

AuthorizePrecheckoutRequest.PreCheckoutData

Description: The precheckout data includes the last 4 digits of the customer's card, shipping information, etc.
Details: Required

AuthorizePrecheckoutRequest.PreCheckoutData.Cards

Description: The partial data cards.
Details: Required

AuthorizePrecheckoutRequest.PreCheckoutData.Contact

Description: Contact information of the customer making the purchase.
Details: Required

AuthorizePrecheckoutRequest.PreCheckoutData.ShippingAddresses

Description: Shipping addresses information of the customer making the purchase.
Details: Required where merchants requests it.

AuthorizePrecheckoutRequest.PreCheckoutData.RewardPrograms

Description: Shipping address information of the customer making the purchase.
Details: Required

AuthorizePrecheckoutRequest.PreCheckoutData.RewardPrograms

Description: The loyalty program of the checkout.
Details: Optional

AuthorizePrecheckoutRequest.PreCheckoutData.RewardPrograms.PreCheckoutTransactionID

Description: The unique id of the precheckout transaction.
Details: Required

AuthorizePrecheckoutRequest.PreCheckoutData.RewardPrograms.WalletPartnerLogoUrl

Description: Provides the image URL of the partner wallet's logo.
Details: Required

AuthorizePrecheckoutRequest.PreCheckoutData.RewardPrograms.WalletId

Description: The unique id of the wallet id attached to the reward program.
Details: Required

AuthorizePrecheckoutRequest.PreCheckoutData.RewardPrograms.ConsumerWalletId

Description: The unique id of the consumer wallet id attached to the reward program.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.CardId

Description: The unique id of the consumer's card
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.BrandId

Description: The unique id of the brand
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.BrandName

Description: The name of the brand
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.BillingAddress

Description: The billing address of the precheckout card.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.CardHolderName

Description: The cardholder name of the precheckout card.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.LastFour

Description: The last four digits of the precheckout card.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.CardAlias

Description: The alias of the precheckout card.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.ExpiryMonth

Description: The expiration month of the precheckout card.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.ExpiryYear

Description: The expiration year of the precheckout card.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutCard.SelectedAsDefault

Description: Selected default card.
Details: Boolean

AuthorizePrecheckoutRequest.Contact.FirstName

Description: First name (given name) of the customer making the purchase.
Details: Required

AuthorizePrecheckoutRequest.Contact.MiddleName

Description: Middle name of the customer making the purchase.
Details: Optional

AuthorizePrecheckoutRequest.Contact.LastName

Description: Last name (family name or surname) of the customer making the purchase.
Details: Required

AuthorizePrecheckoutRequest.Contact.Gender

Description: This is the consumer's gender, either 'F' for female or 'M' for male.
Details: Optional

AuthorizePrecheckoutRequest.Contact.DateOfBirth

Description: This is the date of birth of the consumer
Details: Optional

AuthorizePrecheckoutRequest.Contact.DateOfBirth.Year

Description: This is the year of the consumer's date of birth.
Details: Required

AuthorizePrecheckoutRequest.Contact.DateOfBirth.Month

Description: This is the month of the consumer's date of birth.
Details: Required

AuthorizePrecheckoutRequest.Contact.DateOfBirth.Day

Description: This is the day of the consumer's date of birth.
Details: Required

AuthorizePrecheckoutRequest.Contact.NationalID

Description: This is the consumer's national id.  It is required for certain countries and should not be specified for other countries.
Details: Optional

AuthorizePrecheckoutRequest.Contact.Country

Description: This is the consumer's country of residence.
Details: Optional

AuthorizePrecheckoutRequest.Contact.EmailAddress

Description: Email address of the customer making the purchase.
Details: Optional

AuthorizePrecheckoutRequest.Contact.PhoneNumber

Description: Phone number of the customer making the purchase.
Details: Optional

AuthorizePrecheckoutRequest.PrecheckoutShippingAddress.Address

Description: The shipping address details. Where the customer wants to ship their item to.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutShippingAddress.Address.AddressId

Description: The shipping address details to another saved shipping location.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutShippingAddress.Address.RecipientName

Description: The shipping address details to another saved shipping location.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutShippingAddress.Address.RecipientPhoneNumber

Description: The shipping address details to another saved shipping location.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutShippingAddress.Address.SelectedAsDefault

Description: The shipping address details to another saved shipping location.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutShippingAddress.Address.ShippingAlias

Description: The shipping address details to another saved shipping location.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutRewardProgram.RewardProgramId

Description: Identifies the loyalty program id that this entity is part of.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutRewardProgram.RewardNumber

Description: This is the account number printed on the card.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutRewardProgram.RewardId

Description: Identifies the loyalty program offering that this entity is part of.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutRewardProgram.RewardName

Description: The name of the loyalty program.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutRewardProgram.ExpiryMonth

Description: Month in which the loyalty program will expire as printed on the card.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutRewardProgram.ExpiryYear

Description: Year in which the loyalty program will expire as printed on the card.
Details: Required

AuthorizePrecheckoutRequest.PrecheckoutRewardProgram.RewardLogo

Description: The loyalty program logo image and details.
Details: Required

AuthorizePrecheckoutRequest.Error.Description

Description: The error description.
Details: String

AuthorizePrecheckoutRequest.Error.ReasonCode

Description: The error reason code.
Details: String

AuthorizePrecheckoutRequest.Error.Recoverable

Description: The error recoverable.
Details: String

AuthorizePrecheckoutRequest.Error.Source

Description: The error source.
Details: String

AuthorizePrecheckoutRequest.Country.Code

Description: The country code of the precheckout service.
Details: String

AuthorizePrecheckoutRequest.Country.Name

Description: The name code of the precheckout service.
Details: String

AuthorizePrecheckoutRequest.Country.CallingCode

Description: The country calling code of the precheckout service.
Details: String

AuthorizePrecheckoutRequest.Country.Locale

Description: The country locale of the precheckout service.
Details: String

AuthorizePrecheckoutRequest.EmailAddress

Description: The email address of the customer for the precheckout service.
Details: String

**.ExtensionPoint

Description: XSD type any reserved for future use.
Details: Optional
Request Example
  <?xml version="1.0"encoding="UTF-8"?>
  <AuthorizePrecheckoutRequest>
     <PrecheckoutData>
         <Cards>
            <Card>
                <BrandId>master</BrandId>
                <BrandName>MasterCard</BrandName>
                <BillingAddress>
                   <City>123 Fake St</City>
                   <Country>US</Country>
                   <CountrySubdivision>US-MO</CountrySubdivision>
                   <Line1>326 Fake St</Line1>
                   <PostalCode>63146</PostalCode>
                </BillingAddress>
                <CardHolderName>Joe Cardholder</CardHolderName>
                <ExpiryMonth>02</ExpiryMonth>
                <ExpiryYear>2017</ExpiryYear>
                <CardId>52</CardId>
                <LastFour>1234</LastFour>
                <CardAlias>MasterCard card</CardAlias>
                <SelectedAsDefault>true</SelectedAsDefault>
            </Card>
         </Cards>
         <Contact>
            <FirstName>Joe</FirstName>
            <MiddleName>M</MiddleName>
            <LastName>Cardholder</LastName>
            <Gender>M</Gender>
            <DateOfBirth>
                <Year>1984</Year>
                <Month>12</Month>
                <Day>19</Day>
            </DateOfBirth>
            <NationalID>123456789</NationalID>
            <Country>US</Country>
            <EmailAddress>joe@gmail.com</EmailAddress>
            <PhoneNumber>555-5555</PhoneNumber>
         </Contact>
         <ShippingAddresses>
            <ShippingAddress>
                <City>OFallon</City>
                <Country>US</Country>
                <CountrySubdivision>US-MO</CountrySubdivision>
                <Line1>2222 Fake Avenue</Line1>
                <PostalCode>63025</PostalCode>
                <RecipientName>Joe Cardholder</RecipientName>
                <RecipientPhoneNumber>555-5555</RecipientPhoneNumber>
                <AddressId>52</AddressId>
               <SelectedAsDefault>true</SelectedAsDefault>
                <ShippingAlias>Home</ShippingAlias>
            </ShippingAddress>
         </ShippingAddresses>
         <WalletId>Mobile</WalletId>    <PrecheckoutTransactionId>P1g2j234987kjfg0fg6</PrecheckoutTransactionId>
         <ConsumerWalletId>11235813</ConsumerWalletId>
     </PrecheckoutData>
  </AuthorizePrecheckoutRequest>
           
Response Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
     <xs:element name="AuthorizePrecheckoutResponse"type="AuthorizePrecheckoutResponse"/>
     <xs:complexType name="AuthorizePrecheckoutResponse">
         <xs:sequence>
            <xs:element name="Status" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any"/>
         </xs:sequence>
         <xs:anyAttribute/>
     </xs:complexType>
  </xs:schema>
          
Element Descriptions

AuthorizePrecheckoutResponse.Status

Description: The status message of the response from precheckout data.
Details: String

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example

  <?xml version="1.0" encoding="UTF-8"?>
    <AuthorizePrecheckoutResponse>
      <Status>Status</Status>
    </AuthorizePrecheckoutResponse>
           

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Wallet Express Checkout Data Service Interface (New for v6)

This service is used by a MasterPass to notify/request a MasterPass consumer's checkout data from a wallet provider during an Express Checkout.Before the wallet provider responds to this call it should send the consumer's information via the AuthorizeExpressCheckout service (next section). MasterPass getting the response is notification to get the data from the MasterPass temporary database.

Resource URL

This URL will need to be supplied to MasterPass by the wallet.

https://www.anywallet.com/walletapi/wallet/v6/expresscheckout

Resource Method

POST

Data Format

XML

Sample Request

POST https://www.anywallet.com/walletapi/wallet/v6/expresscheckout

Request Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
     version="1.0">
     <xs:element name="WalletExpressCheckoutRequest"type="WalletExpressCheckoutRequest"/>
     <xs:complexType name="WalletExpressCheckoutRequest">
         <xs:sequence>
            <xs:element name="MerchantCheckoutId" type="xs:string"/>
            <xs:element name="OauthToken" type="xs:string"/>
            <xs:element name="CurrencyCode" type="xs:string"/>
            <xs:element name="OrderAmount" type="xs:long"/>
            <xs:element name="PrecheckoutTransactionId" type="xs:string"/>
            <xs:element name="ConsumerWalletId" type="xs:string"/>
            <xs:element name="MerchantParameterId" type="xs:string"/>
            <xs:element name="CardId" type="xs:string"/>
            <xs:element name="ShippingAddressId" type="xs:string"/>
            <xs:element name="RewardProgramId" type="xs:string"minOccurs="0"/>
            <xs:element name="WalletId" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
         </xs:sequence>
         <xs:anyAttribute />
     </xs:complexType>
  </xs:schema>
            
Element Descriptions

WalletExpressCheckoutRequest.MerchantCheckoutId
Description: This is the MasterPass identifier of the merchant checkout project.  A single merchant can have multiple checkout IDs.
Details: String

WalletExpressCheckoutRequest.OauthToken
Description: Verifier token that is associated with the consumer and merchant connection. This token was provided on the Authorize Pairing call that connected the consumer and merchant.
Details: Required; String.

WalletExpressCheckoutRequest.OrderAmount
Description: Order amount for the checkout provided by the merchant.
Details: Required; Numeric.

WalletExpressCheckoutRequest.OriginUrl
Description: The URL that the merchant is using to initialize the Lightbox.
Details: Optional, Contains scheme, host name, port if not 80 or 443 and does not include path information of URL. Example: http://www.weekend.com or https://weekend.com:8323

WalletExpressCheckoutRequest.PrecheckoutTransactionId
Description: This is a transaction identifier that MasterPass generates and provides to a merchant when the merchant requests consumer data in a GetPreCheckoutData request. ID associated with the PreCheckout Transaction.
Details: Required; Alpha Numeric

WalletExpressCheckoutRequest.ConsumerWalletID
Description: Identifier that the wallet has given to a consumer.
Details: String

WalletExpressCheckoutRequest.MerchantParameterId
Description: Must use in authorize express checkout call.
Details: Optional

WalletExpressCheckoutRequest.CardId
Description: ID of the card alias selected by the consumer.
Details: Optional

WalletExpressCheckoutRequest.ShippingAddressId
Description: ID of the shipping address selected by the consumer.
Details: Optional

WalletExpressCheckoutRequest.RewardProgramId
Description: ID of the loyalty card selected by the consumer.
Details: Optional

WalletExpressCheckoutRequest.WalletId
Description: Identifier provided by MasterPass for a specific wallet provider.
Details: String

WalletExpressCheckoutRequest.ExtensionPoint
Description: Reserved for future use.
Details: Optional

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Request Example
  <?xml version="1.0" encoding="UTF-8"?>
    <WalletExpressCheckoutRequest>
    <MerchantCheckoutId>sfasd897sadfhjkl4w329fa_sadfj37</MerchantCheckoutId>
    <OauthToken>f7f16d8462a9424365498afade20caaa</OauthToken>
    <CurrencyCode>CurrencyCode</CurrencyCode>
    <OrderAmount>152.36</OrderAmount>
    <PrecheckoutTransactionId>896498734</PrecheckoutTransactionId>
    <ConsumerWalletId>464697</ConsumerWalletId>
    <MerchantParameterId>149da8645h5</MerchantParameterId>
    <CardId>35466</CardId>
    <ShippingAddressId>665644</ShippingAddressId>
    <RewardProgramId>987646</RewardProgramId>
    <WalletId>67496464</WalletId>
  </WalletExpressCheckoutRequest>
          
Response Schema
  <?xml version="1.0"encoding="UTF-8"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
     <xs:element name="Response" type="Response"/>
     <xs:complexType name="Response ">
         <xs:sequence>
            <xs:element name="Message" type="xs:string"minOccurs="0" />
            <xs:element name="Errors" type="Errors"minOccurs="0" />
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:element name="Error" type="Error"/>
     <xs:complexType name="Error">
         <xs:sequence>
            <xs:element name="Description" type="xs:string"/>
            <xs:element name="ReasonCode" type="xs:string"/>
            <xs:element name="Recoverable" type="xs:boolean"/>
            <xs:element name="Source" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="Errors" type="Errors"/>
     <xs:complexType name="Errors">
         <xs:sequence>
            <xs:element name="Error" type="Error"minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
         </xs:sequence>
         <xs:anyAttribute/>
     </xs:complexType>
  </xs:schema>
           
Element Descriptions

Response.Message
Description: Success or Failure.
Details: String

Response.Errors
Description: List of errors that were received.
Details: Optional, String

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Authorize Express Checkout Call (New for v6)

This resource allows a customer to perform a one-click buy behavior. The customer can bypass logging into their wallet once they have signed into the merchant.

Why would I need to use this resource?

If you want to allow customers to experience the express checkout flow. Customers can check out faster without having wallet authenticate the consumer to confirm their information.

Authorize Express Checkout Interface

This service allows the customer to avoid signing into their wallet. It is similar to a one-click checkout process. The customer is not prompted by the wallet to confirm order.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/expresscheckout

Resource Method

POST

Data Format

XML

Request Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
     <xs:element name="AuthorizeExpressCheckoutRequest"type="AuthorizeExpressCheckoutRequest"/>
     <xs:complexType name="AuthorizeExpressCheckoutRequest">
         <xs:sequence>
            <xs:element name="PreCheckoutTransactionId" type="xs:string"minOccurs="1"/>
            <xs:element name="CurrencyCode" type="xs:string"/>
            <xs:element name="OrderAmount" type="xs:long"/>
            <xs:element name="MerchantParameterId" type="xs:string"minOccurs="1"/>
            <xs:element name="OAuthToken" type="xs:string"minOccurs="1"/>
            <xs:element name="Errors" type="Errors"minOccurs="0"/>
            <xs:element name="AuthorizedExpressCheckout" type="AuthorizedCheckout"minOccurs="1"/>
            <xs:element name="DeviceType" minOccurs="0">
                <xs:simpleType>
                   <xs:restriction base="xs:string">
                       <xs:enumeration value="DESKTOP"/>
                       <xs:enumeration value="MOBILE"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="AuthorizedCheckout" type="AuthorizedCheckout"/>
     <xs:complexType name="AuthorizedCheckout">
         <xs:sequence>
            <xs:element name="Card" type="Card"/>
            <xs:element name="Contact" type="Contact"/>
            <xs:element name="ShippingAddress" type="ShippingAddress"minOccurs="0"/>
            <xs:element name="AuthenticationOptions" type="AuthenticationOptions"minOccurs="0"/>
            <xs:element name="RewardProgram" type="RewardProgram"minOccurs="0"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Card">
         <xs:sequence>
            <xs:element name="BrandId" type="NonEmptyString"/>
            <xs:element name="BrandName" type="NonEmptyString"/>
            <xs:element name="AccountNumber" type="NonEmptyString"/>
            <xs:element name="BillingAddress" type="Address"/>
            <xs:element name="CardHolderName" type="NonEmptyString"/>
            <xs:element name="ExpiryMonth" type="Month"minOccurs="0"/>
            <xs:element name="ExpiryYear" type="Year"minOccurs="0"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Contact">
         <xs:sequence>
            <xs:element name="FirstName" type="NonEmptyString"/>
            <xs:element name="MiddleName" minOccurs="0">
                <xs:simpleType>
                   <xs:restriction base="xs:string">
                       <xs:minLength value="1"/>
                       <xs:maxLength value="150"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="LastName" type="NonEmptyString"/>
            <xs:element name="Gender" type="Gender"minOccurs="0"/>
            <xs:element name="DateOfBirth" type="DateOfBirth"minOccurs="0"/>
            <xs:element name="NationalID" minOccurs="0">
                <xs:simpleType>
                   <xs:restriction base="xs:string">
                       <xs:minLength value="1"/>
                       <xs:maxLength value="150"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Country" type="Country"/>
            <xs:element name="EmailAddress" type="EmailAddress"/>
            <xs:element name="PhoneNumber" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="ShippingAddress">
         <xs:complexContent>
            <xs:extension base="Address">
                <xs:sequence>
                   <xs:element name="RecipientName" type="NonEmptyString"/>
                   <xs:element name="RecipientPhoneNumber" type="xs:string"/>
                   <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
         </xs:complexContent>
     </xs:complexType>
     <xs:complexType name="AuthenticationOptions">
         <xs:sequence>
            <xs:element name="AuthenticateMethod" type="xs:string"minOccurs="0"/>
            <xs:element name="CardEnrollmentMethod" type="xs:string"minOccurs="0"/>
            <xs:element name="CAvv" type="xs:string"minOccurs="0"/>
            <xs:element name="EciFlag" type="xs:string"minOccurs="0"/>
            <xs:element name="MasterCardAssignedID" type="xs:string"minOccurs="0"/>
            <xs:element name="PaResStatus" type="xs:string"minOccurs="0"/>
            <xs:element name="SCEnrollmentStatus" type="xs:string"minOccurs="0"/>
            <xs:element name="SignatureVerification" type="xs:string"minOccurs="0"/>
            <xs:element name="Xid" type="xs:string"minOccurs="0"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="RewardProgram">
         <xs:sequence>
            <xs:element name="RewardNumber" type="xs:string"/>
            <xs:element name="RewardId" type="xs:string"/>
            <xs:element name="RewardName" type="xs:string"minOccurs="0"/>
            <xs:element name="ExpiryMonth" type="Month"minOccurs="0"/>
            <xs:element name="ExpiryYear" type="Year"minOccurs="0"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:simpleType name="Month">
         <xs:restriction base="xs:int">
            <xs:minInclusive value="1"/>
            <xs:maxInclusive value="12"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:simpleType name="Year">
         <xs:restriction base="xs:int">
            <xs:minInclusive value="2013"/>
            <xs:pattern value="\d{4}"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:simpleType name="EmailAddress">
         <xs:restriction base="xs:string">
            <xs:pattern value="[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*@[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:simpleType name="Gender">
         <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="F"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:complexType name="DateOfBirth">
         <xs:sequence>
            <xs:element name="Year">
                <xs:simpleType>
                   <xs:restriction base="xs:int">
                       <xs:minInclusive value="1900"/>
                       <xs:pattern value="\d{4}"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Month" type="Month"/>
            <xs:element name="Day">
                <xs:simpleType>
                   <xs:restriction base="xs:int">
                       <xs:minInclusive value="1"/>
                       <xs:maxInclusive value="31"/>
                   </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Address">
         <xs:sequence>
            <xs:element name="City" type="NonEmptyString"/>
            <xs:element name="Country" type="Country"/>
            <xs:element name="CountrySubdivision" type="NonEmptyString"minOccurs="0"/>
            <xs:element name="Line1" type="NonEmptyString"/>
            <xs:element name="Line2" type="NonEmptyString"minOccurs="0"/>
            <xs:element name="Line3" type="NonEmptyString"minOccurs="0"/>
            <xs:element name="PostalCode" type="NonEmptyString"minOccurs="0"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:simpleType name="Country">
         <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{2}"/>
         </xs:restriction>
     </xs:simpleType>
     <xs:complexType name="Error">
         <xs:sequence>
            <xs:element name="Description" type="xs:string"minOccurs="0" />
            <xs:element name="ReasonCode" type="xs:string"/>
            <xs:element name="Recoverable" type="xs:boolean"/>
            <xs:element name="Source" type="xs:string"/>
            <xs:element name="Details" type="Details"minOccurs="0"
            maxOccurs="1" />
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Errors">
         <xs:sequence>
            <xs:element name="Error" type="Error"minOccurs="0"
            maxOccurs="unbounded" />
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Details">
         <xs:sequence>
            <xs:element name="Detail" type="Detail"minOccurs="0"
            maxOccurs="unbounded" />
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="Detail">
         <xs:sequence>
            <xs:element name="Name" type="xs:string"/>
            <xs:element name="Value" type="xs:string"/>
         </xs:sequence>
     </xs:complexType>
     <xs:simpleType name="NonEmptyString">
         <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:whiteSpace value="collapse" />
         </xs:restriction>
     </xs:simpleType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
         </xs:sequence>
         <xs:anyAttribute />
     </xs:complexType>
  </xs:schema>
           
Element Descriptions

AuthorizeExpressCheckoutRequest.PreCheckoutTransactionId
Description: The unique ID of the precheckout transaction
Details: Required

AuthorizeExpressCheckoutRequest.OrderAmount
Description: The order amount of the precheckout transaction
Details: Required

AuthorizeExpressCheckoutRequest.MerchantParameterId
Description: The merchant parameter ID of the precheckout transaction
Details: Required

AuthorizeExpressCheckoutRequest.oAuthToken
Description: Verifier that the merchant uses to retrieve their access token.
Details: Required

AuthorizeExpressCheckoutRequest.Errors
Description: List of errors that were received.
Details: Optional

AuthorizeExpressCheckoutRequest.Errors.Error.Description
Description: Description of the error.
Details: Optional, String

AuthorizeExpressCheckoutRequest.Errors.Error.ReasonCode
Description: Code defining the error.
Details: Required, String

AuthorizeExpressCheckoutRequest.Errors.Error.Recoverable
Description: True if system can recover from error.
Details: Required, Boolean

AuthorizeExpressCheckoutRequest.Errors.Error.Source
Description: The source of the error.
Details: Required, String

AuthorizeExpressCheckoutRequest.Errors.Error.Details
Description: The details of the error.
Details: Optional, String

AuthorizeExpressCheckoutRequest.Errors.Error.Details.Detail
Details: Optional

AuthorizeExpressCheckoutRequest.Errors.Error.Details.Detail.Name
Description: The name of the detail.
Details: Required, String

AuthorizeExpressCheckoutRequest.Errors.Error.Details.Detail.Value
Description: The value of the detail.
Details: Required, String

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout
Description: Root element for Express Checkout data.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card
Description: The root element for card data.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BrandId
Description: The unique ID of the card brand.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BrandName
Description: The brand name printed on the customer's card.
Details: Required
Example: MasterCard, Visa, AMEX, etc.

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.AccountNumber
Description: The account number printed on the customer's card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BillingAddress
Description: The billing address that is associated with the customer's card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BillingAddress.City
Description: The city that is associated with the customer's card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BillingAddress.Country
Description: The country that is associated with the customer's card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BillingAddress.CountrySubdivision
Description: The country subdivision that is associated with the customer's card.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BillingAddress.Line1
Description: The billing address that is associated with the customer's card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BillingAddress.Line2
Description: The billing address that is associated with the customer's card.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BillingAddress.Line3
Description: The billing address that is associated with the customer's card.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.BillingAddress.PostalCode
Description: The postal code that is associated with the customer's card.
Details: Optional

AuthorizeExpressCheckoutRequest. AuthorizedExpressCheckout.Card.CardholderName
Description: The printed name on the card of the purchaser.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.ExpiryMonth
Description: The month in which the card will expire; as printed on the card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Card.ExpiryYear
Description: The year in which the card will expire; as printed on the card.
Details: Required

AuthorizeExpressCheckoutRequest AuthorizedExpressCheckout.Contact.FirstName
Description: First name (given name) of the customer making the purchase.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Contact.MiddleName
Description: Middle name of the customer making the purchase.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Contact.LastName
Description: Last name (family name or surname) of the customer making the purchase.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Contact.Gender
Description: This is the consumer's gender, either 'F' for female or 'M' for male.
Details: Optional and where local law requires

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Contact.DateOfBirth
Description: This is the date of birth of the consumer.
Details: Optional and where local law requires

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Contact.NationalId
Description: This is the consumer's national id.  It is required for certain countries and should not be specified for other countries.
Details: Optional and where local law requires

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Contact.Country
Description: This is the consumer's country of residence.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Contact.EmailAddress
Description: Email address of the customer making the purchase.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.Contact.PhoneNumber
Description: Phone number of the customer making the purchase.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.ShippingAddress.RecipientName
Description: The recipient name that will be noted on the shipping address.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.ShippingAddress.RecipientPhoneNumber
Description: The recipient's phone number.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.ShippingAddress.City
Description: The city that is associated with the customer's card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.ShippingAddress.Country
Description: The country that is associated with the customer's card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.ShippingAddress.CountrySubdivision
Description: The country subdivision that is associated with the customer's card.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.ShippingAddress.Line1
Description: The billing address that is associated with the customer's card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.ShippingAddress.Line2
Description: The billing address that is associated with the customer's card.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.ShippingAddress.Line3
Description: The billing address that is associated with the customer's card.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.ShippingAddress.PostalCode
Description: The postal code that is associated with the customer's card.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.AuthenticationOptions
Description: The authentication options during checkout.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.AuthenticationOptions.AuthenticateMethod
Description: The method of authentication used during Checkout, if any.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.AuthenticationOptions.CardEnrollmentMethod
Description: Indicates the method by which the card was added to the Partner wallet.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.AuthenticationOptions.Cavv
Description: The <Cavv> value received on the Authenticate response from Cardinal.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.AuthenticationOptions.EciFlag
Description: The <EciFlag> value received on the Authenticate response from Cardinal.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.AuthenticationOptions.MasterCardAssignedID
Description: This field is part of the Maestro "MARP" program and does not need to be populated by the Partner.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.AuthenticationOptions.PaResStatus
Description: The <PAResStatus> value received on the Authenticate response from Cardinal.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.AuthenticationOptions.SignatureVerification
Description: The <SignatureVerification> value received on the Authenticate response from Cardinal.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.AuthenticationOptions.Xid
Description: The <Xid> value received on the Authenticate response from Cardinal.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.RewardProgram
Description: The reward program of the checkout.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.RewardProgram.RewardNumber
Description: This is the account number printed on the card.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.RewardProgram.RewardId
Description: Identifies the reward program offering that this entity is part of.
Details: Required

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.RewardProgram.RewardName
Description: Reward program name
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.RewardProgram.ExpiryMonth
Description: Month in which the reward program will expire as printed on the card.
Details: Optional

AuthorizeExpressCheckoutRequest.AuthorizedExpressCheckout.RewardProgram.ExpiryYear
Description: Year in which the reward program will expire as printed on the card.
Details: Optional

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Request Example
  <?xml version="1.0"encoding="UTF-8"?>
  <AuthorizeExpressCheckoutRequest>
     <PreCheckoutTransactionId>a4d6x6s-tqda3l-hxrmfvag-1-hxroo2ac-2pb</PreCheckoutTransactionId>
     <CurrencyCode>USD</CurrencyCode>
     <OrderAmount>100</OrderAmount>
     <MerchantParameterId>a4d6x6s-tqda3l-hxrmfvag-1-hxrooyy5-2vu</MerchantParameterId>
     <OAuthToken>86ce9346b1dddbb40f379017fe375337b2e40932</OAuthToken>
     <AuthorizedExpressCheckout>
         <Card>
            <BrandId>Master</BrandId>
            <BrandName>MasterCard</BrandName>
            <AccountNumber>5435579315709649</AccountNumber>
            <BillingAddress>
                <City>Eureka</City>
                <Country>US</Country>
                <CountrySubdivision>US-MO</CountrySubdivision>
                <Line1>1 Address Line</Line1>
                <PostalCode>63025</PostalCode>
            </BillingAddress>
            <CardHolderName>Lee M Cardholder</CardHolderName>
            <ExpiryMonth>01</ExpiryMonth>
            <ExpiryYear>2016</ExpiryYear>
         </Card>
         <Contact>
            <FirstName>Lee</FirstName>
            <MiddleName>M</MiddleName>
            <LastName>Cardholder</LastName>
            <Gender>M</Gender>
            <DateOfBirth>
                <Year>1954</Year>
                <Month>03</Month>
                <Day>11</Day>
            </DateOfBirth>
            <NationalID>1234</NationalID>
            <Country>US</Country>
            <EmailAddress>11234@gmail.com</EmailAddress>
            <PhoneNumber>3144873456</PhoneNumber>
         </Contact>
         <ShippingAddress>
            <City>Eureka</City>
            <Country>US</Country>
            <CountrySubdivision>US-MO</CountrySubdivision>
            <Line1>Line1</Line1>
            <PostalCode>63025</PostalCode>
            <RecipientName>RecipientName</RecipientName>
            <RecipientPhoneNumber>RecipientPhoneNumber</RecipientPhoneNumber>
         </ShippingAddress>
         <RewardProgram/>
     </AuthorizedExpressCheckout>
     <OriginUrl>http://OriginUrl.com</OriginUrl>
     <DeviceType>DESKTOP</DeviceType>
  </AuthorizeExpressCheckoutRequest>
           
Response Schema
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"version="1.0">
     <xs:element name="AuthorizeExpressCheckoutResponse" type="AuthorizeExpressCheckoutResponse" />
     <xs:complexType name="AuthorizeExpressCheckoutResponse">
         <xs:sequence>
            <xs:element name="Status" type="xs:string" minOccurs="0" />
            <xs:element name="ExtensionPoint" type="ExtensionPoint" minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint" />
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax" namespace="##any" />
         </xs:sequence>
         <xs:anyAttribute />
     </xs:complexType>
  </xs:schema>
           
Element Descriptions

Status

Description: Displays to the customer that their express checkout process has been submitted.

Details: Required

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example
  <?xml version="1.0" encoding="UTF-8"?>
  <AuthorizeExpressCheckoutResponse>
    <Status>Status</Status>
  </AuthorizeExpressCheckoutResponse>
            

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Get Connections Service (New for v6)

This resource allows a partner hosted wallet to get the pairings established with a merchant.  It shows what merchants are paired with certain wallet.

Why would I need to use this resource?

To enable your users to manage the connections they have authorized already with merchants. This is part of the un-pairing experience.

Get Connections Service Interface

This service allows a wallet to get the list of connections so they can be displayed to the consumer who needs a place to see the list of connections they have established with a merchant.

Resource URL Inputs

https://api.mastercard.com/masterpass/partner/v6/connectedmerchants

Resource Method

POST

Data Format

XML

Request

https://api.mastercard.com/masterpass/partner/v6/connectedmerchants

Request Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:element name="ConnectedMerchantsRequest"/>
  <xs:complexType name="ConnectedMerchantsRequest">
     <xs:sequence>
         <xs:element name="ConsumerWalletId" type="xs:string"/>
         <xs:element name="WalletId" type="xs:string"/>
         <xs:element name="StartDate" type="xs:dateTime"/>
         <xs:element name="EndDate" type="xs:dateTime"/>
         <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
     </xs:sequence>
  </xs:complexType>
  <xs:element name="ExtensionPoint"type="ExtensionPoint"/>
  <xs:complexType name="ExtensionPoint">
     <xs:sequence>
         <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
     </xs:sequence>
     <xs:anyAttribute />
  </xs:complexType>
  </xs:schema>
            

Element Descriptions:

ConnectedMerchantsRequest.ConsumerWalletId

Description: A unique identifier for the consumer's wallet. This is up to the wallet partner to provide
Details: Required

ConnectedMerchantsRequest.WalletId

Description: Partition name MasterPass uses to identify the wallet. This is received in the pairing initialization redirect.
Details: Required
Example: a4d6x3165n12thw1gpy151hw2jqjmy4s5

ConnectedMerchantsRequest.StartDate

Description: Displays the date when the connection has started.
Details: Date and Time

ConnectedMerchantsRequest.EndDate

Description: Displays the date when the connection has ended.
Details: Date and Time

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Request Example
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <ConnectedMerchantsRequest>
     <ConsumerWalletId>11235813</ConsumerWalletId>
     <WalletId>PHWallet</WalletId>
  </ConnectedMerchantsRequest>
            
Response Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
     <xs:element name="Connection" type="Connection"/>
     <xs:complexType name="Connection">
         <xs:sequence>
            <xs:element name="ConnectionId" type="xs:long"/>
            <xs:element name="MerchantName" type="xs:string"/>
            <xs:element name="ConnectionName" type="xs:string"/>
            <xs:element name="Logo" type="Logo"/>
            <xs:element name="DataTypes" type="DataTypes"/>
            <xs:element name="OneClickSupported" type="xs:boolean"/>
            <xs:element name="OneClickEnabled" type="xs:boolean"/>
            <xs:element name="LastUpdatedUsed" type="xs:dateTime"/>
            <xs:element name="ConnectedSinceDate" type="xs:dateTime"/>
            <xs:element name="ExpirationDate" type="xs:dateTime"/>
            <xs:element name="MerchantUrl" type="xs:anyURI"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ConnectionList" type="ConnectionList"/>
     <xs:complexType name="ConnectionList">
         <xs:sequence>
            <xs:element name="Connection" type="Connection"minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="Logo" type="Logo"/>
     <xs:complexType name="Logo">
         <xs:sequence>
            <xs:element name="Ref" type="xs:string"/>
            <xs:element name="Height" type="xs:string"minOccurs="0"/>
            <xs:element name="Width" type="xs:string"minOccurs="0"/>
            <xs:element name="BackgroundColor" type="xs:string"minOccurs="0"/>
            <xs:element name="Url" type="xs:anyURI"minOccurs="0"/>
            <xs:element name="LongDescription" type="xs:string"minOccurs="0"/>
            <xs:element name="AlternateText" type="xs:string"minOccurs="0"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="DataTypes" type="DataTypes"/>
     <xs:complexType name="DataTypes">
         <xs:sequence>
            <xs:element name="Code" type="xs:string"/>
            <xs:element name="Description" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
         </xs:sequence>
         <xs:anyAttribute />
     </xs:complexType>
  </xs:schema>
          
Element Descriptions:
Connection.ConnectionId

Description: A unique identifier for the connection id.
Details: String

Connection.MerchantName

Description: Name of the merchant to be displayed to consumer for selection.
Details: String

Connection.ConnectionName

Description: Name of the connection to be displayed to consumer for selection.
Details: String

Connection.Logo

Description: The merchant logo to display
Details: Logo

Connection.DataTypes

Description: Data types requested by merchant.
Details: Required, can include card, shipping, loyalty, profile.

Connection.OneClickSupported

Description: Displays if the one click connection is supported.
Details: Boolean

Connection.OneClickEnabled

Description: Displays if the one click connection is established.
Details: Boolean

Connection.LastUpdatedUsed

Description: Displays the last updated connection.
Details: Date and Time

Connection.ConnectedSinceDate

Description: Displays the date when the connection was made.
Details: Date and Time

Connection.ExpirationDate

Description: Displays the expiration date of the connection.
Details: Date and Time

Connection.MerchantUrl

Description: Displays the merchant's URL of the connection.
Details: URL

ConnectionList.Connection

Description: Displays connected wallet list.
Details: String

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Example Response

  <?xml version="1.0"encoding="UTF-8"?>
  <ConnectionList>
     <Connection>
         <ConnectionId>13348706</ConnectionId>
         <MerchantName>Best Merchant</MerchantName>
         <Logo>
            <Url>../assets/img/merchant_icon.png</Url>
            <AlternateText>banana.PNG</AlternateText>
         </Logo>
         <OneClickSupported>false</OneClickSupported>
         <OneClickEnabled>true</OneClickEnabled>
         <ConnectedSinceDate>07/29/2014</ConnectedSinceDate>
         <MerchantUrl>http://bestmerchant.com/testexample</MerchantUrl>
     </Connection>
     <Connection>
         <ConnectionId>13317574</ConnectionId>
         <MerchantName>Awesome Merchant</MerchantName>
         <Logo>
            <Url>../assets/img/merchant_icon.png</Url>
         </Logo>
         <OneClickSupported>false</OneClickSupported>
         <OneClickEnabled>false</OneClickEnabled>
         <ConnectedSinceDate>07/28/2014</ConnectedSinceDate>
         <MerchantUrl>https://awesomemerchant.com/testexample</MerchantUrl>
     </Connection>
  </ConnectionList>
         

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Delete Pairing Service (New for v6)

A wallet user needs to be able to delete connections previously established with a Merchant.

Why would I need to use this resource?

The Partner will use this call to delete a previously established connection with a Merchant. This is part of the un-pairing experience.

Resource URL

api.mastercard.com/masterpass/partner/v6/deletepairing

Resource Method

POST

Data Format

XML

Element Descriptions:

Request

https://api.mastercard.com/masterpass/partner/v6/deletepairing

Request Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
     <xs:element name="DeletePairingRequest" type="DeletePairingRequest"/>
     <xs:complexType name="DeletePairingRequest">
         <xs:sequence>
            <xs:element name="ConsumerWalletId" type="xs:string"/>
            <xs:element name="WalletId" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"
            minOccurs="0" />
            <xs:element name="ConnectionId" type="xs:string"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
         </xs:sequence>
         <xs:anyAttribute />
     </xs:complexType>
  </xs:schema>
          
Element Descriptions

DeletePairingRequest.MerchantName

Description: Name of the merchant.
Details: String

DeletePairingRequest.ConsumerWalletId

Description: Consumer wallet ID that identifies the wallet from the delete pairing request.
Details: Required, String

DeletePairingRequest.WalletId

Description: Wallet ID that identifies the wallet from the delete pairing request.
Details: String

DeletePairingRequest.ConnectionId

Description: A unique identifier for the connection id.
Details: String

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Request Example

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <DeletePairingRequest>
     <MerchantName>AnyMerchant</MerchantName>
     <ConsumerWalletId>11235813</ConsumerWalletId>
     <WalletId>12916</WalletId>
     <ConnectionId>634483</ConnectionId>
  </DeletePairingRequest>
            
Response Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
     <xs:element name="DeletePairingResponse" type="DeletePairingResponse"/>
     <xs:complexType name="DeletePairingResponse">
         <xs:sequence>
            <xs:element name="StatusMsg" type="xs:string"/>
            <xs:element name="Errors" type="Errors"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:element name="Error" type="Error"/>
     <xs:complexType name="Error">
         <xs:sequence>
            <xs:element name="Description" type="xs:string"/>
            <xs:element name="ReasonCode" type="xs:string"/>
            <xs:element name="Recoverable" type="xs:boolean"/>
            <xs:element name="Source" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="Errors" type="Errors"/>
     <xs:complexType name="Errors">
         <xs:sequence>
            <xs:element name="Error" type="Error"minOccurs="0" maxOccurs="unbounded"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
         </xs:sequence>
         <xs:anyAttribute />
     </xs:complexType>
  </xs:schema>
            
Element Descriptions

DeletePairingResponse.StatusMsg

Description: Status message response from deleting a pairing with a wallet.
Details: String

DeletePairingResponse.Errors

Description: Error response from deleting a pairing with a wallet.
Details: String; Description, Reason Code, True/False, Source

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Example Response

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <DeletePairingResponse>
     <StatusMsg>Success</StatusMsg>
     <Errors>
         <Error>
            <Description>Description</Description>
            <ReasonCode>ReasonCode</ReasonCode>
            <Recoverable>true</Recoverable>
            <Source>Source</Source>
         </Error>
     </Errors>
  </DeletePairingResponse>
           

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

Source

Reason Code

Description

Recoverable

OAuthToken

MISSING_REQUIRED_INPUT

OAuth Token is invalid

false

OAuthToken

INVALID_INPUT_VALUE

OAuth Token is invalid

false

Loyalty Program Offering Service (Optional)

This resource allows a partner hosted wallet to obtain the updated list of loyalty programs accepted by MasterPass. If desired by the partner, they can allow the wallet user to add these specific loyalty programs to their wallet.

Why would I need to use this resource?

Users are able to add loyalty programs from many different merchants to their wallet.This can be used along with checkouts in order to pass the loyalty program number along to the merchant for further use. If a merchant provides the value for checkout initialization parameter "accept_reward_program" as True, then the partner can display the list of loyalty program numbers added by the user to pass through in the Checkout. This allows the wallet user to accrue value to the loyalty program based on that purchase.

It is recommended to cache the response from the Loyalty Programs Service to avoid unnecessary duplicate calls. However, the data should be cleared within 1 hour so that changes to the list are propagated quickly.

Loyalty Programs Service Interface

This service allows the partner to obtain the latest list of loyalty programs that are supported for checkout. This is a REST service exposed on MasterCard OpenAPI infrastructure.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/reward-program-offerings

Resource Method

GET

Data Format

XML

Sample Request

https://api.mastercard.com/masterpass/partner/v6/reward-program-offerings

Response Schema
  <?xml version="1.0"encoding="UTF-8" standalone="yes"?>
  <xs:schema version="1.0"xmlns:xs="http://www.w3.org/2001/XMLSchema">
     <xs:element name="rewardProgramOfferingsResponse"type="rewardProgramOfferingsResponse"/>
     <xs:complexType name="rewardProgramOffering">
         <xs:sequence>
            <xs:element name="Id" type="xs:string"/>
            <xs:element name="Logo" type="xs:string"/>
            <xs:element name="Name" type="xs:string"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="rewardProgramOfferings">
         <xs:sequence>
            <xs:element name="RewardProgramOffering" type="rewardProgramOffering"maxOccurs="unbounded"/>
            <xs:element name="ExtensionPoint" type="ExtensionPoint"minOccurs="0" />
         </xs:sequence>
     </xs:complexType>
     <xs:complexType name="rewardProgramOfferingsResponse">
         <xs:sequence>
            <xs:element name="RewardProgramOfferings" type="rewardProgramOfferings"/>
         </xs:sequence>
     </xs:complexType>
     <xs:element name="ExtensionPoint" type="ExtensionPoint"/>
     <xs:complexType name="ExtensionPoint">
         <xs:sequence>
            <xs:any maxOccurs="unbounded" processContents="lax"namespace="##any" />
         </xs:sequence>
         <xs:anyAttribute />
     </xs:complexType>
  </xs:schema>
           
Element Descriptions:

RewardProgramOffering

Description: A loyalty program that is offered to consumers.  There may be many of these added over time.  Generally these are programs offered directly by merchants.

RewardProgramOffering.Id

Description: The unique identifier of a loyalty program offering.  This id should be used to programmatically reference the intended loyalty program offering.

RewardProgramOffering.Logo

Description: A URL to the branding image for the loyalty program offering.  It is recommended to pass this URL directly out to the partner hosted wallet application.  If the image is downloaded and stored within the partner database it must be refreshed at least daily in order to pick up potential changes to the image.

RewardProgramOffering.Name

Description: The display name for the loyalty program offering.  This name should be used when presenting the loyalty program offering to the user.

**.ExtensionPoint

Description: XSD type any reserved for future use.

Details: Optional

Response Example
  <rewardProgramOfferingsResponse>
     <RewardProgramOfferings>
         <RewardProgramOffering>
            <Id>xbrand</Id>     <Logo>https://www.paypass.com/online/seam/resource/rewardOfferImage?id=xbrand</Logo>
            <Name>X Brand</Name>
         </RewardProgramOffering>
         <RewardProgramOffering>
            <Id>ybrand</Id>     <Logo>https://www.paypass.com/online/seam/resource/rewardOfferImage?id=ybrand</Logo>
            <Name>Y Brand</Name>
         </RewardProgramOffering>
     </RewardProgramOfferings>
  </rewardProgramOfferingsResponse>
           

Wallet Storage API: Wallet Service (Optional)

This resource allows a partner hosted wallet to create a wallet for storage within the MasterPass databases and later retrieve all contents within that wallet.

Why would I need to use this resource?

Partners that host their own wallet user interface may want to store their user's personally identifiable information (PII) within the MasterPass database.That can be accomplished using a set of services referred to as Wallet Storage APIs.This service provides the ability to manage ids of wallets and it provides a convenient method for retrieving the full contents of the wallet with one call.

Wallet Service Interface

This service allows a partner to create a new wallet identifier for the MasterPass database and to retrieve all contents of that wallet. At the end of this call, there will be essentially a logical container created to store the particular user's data.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/<wallet_provider_id>/wallet/

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/<wallet_provider_id>/wallet/<wallet_id>

Resource Method

POST, GET or DELETE

Data Format

XML

Query string Parameters

wallet_provider_id

Description: This is an identifier assigned to the partner.It is generated during configuration of the wallet within MasterCard and should be communicated to the partner as part of the onboarding process.This is the Partner ID field within the wallet PM3 configuration.

Details:Required

wallet_id

Description: This is a unique identifier for the wallet. The GET, PUT and DELETE methods require this parameter. The POST method does not accept this parameter and it will return a generated id to use for the subsequent calls.

Details:Required for GET, PUT and DELETE

Blank POST

Typical REST services will accept an object in the POST body, however this service does not require any additional payload. POST is just used to provide an operation different than the GET method.

Response

This response varies by method. The POST method returns the generated ID to be used in subsequent calls. The DELETE method returns "Success" on successful delete. The GET method returns the full list of Card, Shipping Address and Reward Program entities stored with the given wallet ID. See the service documentation for Card, Shipping Address and Reward Program for details on the GET response schema.

Sample Conversation

Create (HTTP POST)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet POST

Response:

l7hcrmmrp9ld5tsum2inic2a83p676s1qj2cb4ng5df8q0utmvd

Create Card

NOTE: This call is not from this service.See Card Service for details.It is here to add something to the wallet to demonstrate how the next call works.

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/l7hcrmmrp9ld5tsum2inic2a83p676s1qj2cb4ng5df8q0utmvd/card

Request Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Card>
   <BrandID>master</BrandID>
   <AccountNumber>5435579315709649</AccountNumber>
   <BillingAddress>
       <Line1>2000 Purchase Street</Line1>
       <City>Purchase</City>
       <CountrySubdivision>US-NY</CountrySubdivision>
      <Country>US</Country>
       <PostalCode>10577</PostalCode>
   </BillingAddress>
   <CardHolderName>Lee M Cardholder</CardHolderName>
   <ExpiryMonth>5</ExpiryMonth>
   <ExpiryYear>2016</ExpiryYear>
</Card>
Response Example
11dgjje9suejvk3j3ssvmgjflr3mhgu9oi8gano6kuainnjkt22f

Read (HTTP GET)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/l7hcrmmrp9ld5tsum2inic2a83p676s1qj2cb4ng5df8q0utmvd

Response Example
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <Wallet>
     <Card>
         <ID>1k8t5p5p05a5pohut86spv2ku1unmrhs81lqouu716kdoq37bl46</ID>
         <BrandID>master</BrandID>
         <AccountNumber>5435579315709649</AccountNumber>
         <BillingAddress>
            <Line1>2000 Purchase Street</Line1>
            <City>Purchase</City>
            <CountrySubdivision>US-NY</CountrySubdivision>
            <Country>US</Country>
            <PostalCode>10577</PostalCode>
         </BillingAddress>
         <CardHolderName>Lee M Cardholder</CardHolderName>
         <ExpiryMonth>5</ExpiryMonth>
         <ExpiryYear>2016</ExpiryYear>
     </Card>
  </Wallet>
           

Delete (HTTP DELETE)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/l7hcrmmrp9ld5tsum2inic2a83p676s1qj2cb4ng5df8q0utmvd

Response Example

Response Code: 204

Wallet Storage API: Card Service (Optional)

This resource allows a partner hosted wallet to store user cards in the MasterPass database.

Why would I need to use this resource?

Partners that host their own wallet user interface may want to store their user's personally identifiable information (PII) within the MasterPass database.That can be accomplished using a set of services referred to as Wallet Storage APIs.This service provides the full CRUD (create, read, update and delete) operations for individual cards. This service can be used after a wallet_id is created using the Wallet Storage API: Wallet Service.

Card Service Interface

This service allows a partner to store user cards in the MasterPass database.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/<wallet_provider_id>/wallet/<wallet_id>/card

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/<wallet_provider_id>/wallet/<wallet_id>/card/<card_id>

Resource Method

POST, GET, PUT or DELETE

Data Format

XML

Query string Parameters

wallet_provider_id

Description: This is an identifier assigned to the partner.It is generated during configuration of the wallet within MasterCard and should be communicated to the partner as part of the onboarding process.This is the Partner ID field within the wallet PM3 configuration.

Details:Required

wallet_id

Description: This is a unique identifier for the user's wallet. The wallet service must be called first to get this id.

Details:Required

card_id

Description: This is a unique identifier for the card entity. The POST method does accept this parameter and it will return a generated id that will be used for this value in the GET, PUT and DELETE method.

Details:Required for GET, PUT and DELETE

POST/PUT Schema

The POST and PUT methods both take an XML object within the request payload. This object represents the entity that will be stored. The following schema defines the object. Explanation of each of the individual fields follows that.

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="Address">
      <xs:sequence>
        <xs:element name="Line1" type="xs:string"/>
        <xs:element name="Line2" type="xs:string" minOccurs="0"/>
        <xs:element name="Line3" type="xs:string" minOccurs="0"/>
        <xs:element name="City" type="xs:string"/>
        <xs:element name="CountrySubdivision" type="xs:string" minOccurs="0"/>
        <xs:element name="Country" type="xs:string"/>
        <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Card">
      <xs:sequence>
        <xs:element name="ID" type="xs:string" minOccurs="0"/>
        <xs:element name="BrandID" type="xs:string"/>
        <xs:element name="ArtPointer" type="xs:anyURI" minOccurs="0"/>
        <xs:element name="AccountNumber" type="xs:string"/>
        <xs:element name="BillingAddress" type="Address"/>
        <xs:element name="CardHolderName" type="xs:string"/>
        <xs:element name="ExpiryMonth" type="xs:string" minOccurs="0"/>
        <xs:element name="ExpiryYear" type="xs:string" minOccurs="0"/>
        <xs:element name="Default" type="xs:boolean" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:schema>
           
Element Descriptions
Card.ID

Description: This is the identifier returned from the POST operation.

Details: Required for PUT

Card.BrandID

Description: The code that identifies the card as being a MasterCard, American Express, Visa, etc.  The value must be obtained from the Card Brands Service as the CardBrand.Id.

Details: Required

Card.ArtPointer

Description: This field is for future use and it should not be used.

Details: Should not be provided

Card.AccountNumber

Description: This is the primary account number (PAN) printed on the card.

Details: Required

Card.CardHolderName

Description: This is the cardholder's name as printed on the card.

Details: Required

Card.ExpiryMonth

Description: Month in which the card will expire as printed on the card.

Details: Required for card brands that include an expiration date

Card.ExpiryYear

Description: Year in which the card will expire as printed on the card.

Details: Required for card brands that include an expiration date

Card.Default

Description: Identifies this card as a default card within the full list of cards for this wallet.

Details: Optional

Card.BillingAddress

Description: This is the billing address of the cardholder.

Details: Required

Card.BillingAddress.Line1

Description: Primary street address of the cardholder.

Details: Required

Card.BillingAddress.Line2

Description: Optional second line of the street address of the cardholder.

Details: Optional

Card.BillingAddress.Line3

Description: Optional third line of the street address of the cardholder.

Details: Optional

Card.BillingAddress.City

Description: City associated with the address of the cardholder.

Details: Required

Card.BillingAddress.Country

Description: Country element must be set to standard 2-letter country code as defined in ISO 3166-2 (http://en.wikipedia.org/wiki/ISO_3166-2), such as US, GB etc.

Details: Required

Card.BillingAddress.CountrySubdivision

Description: CountrySubdivision element must always be set to an ISO 3166-2 code for the following countries: Australia, Canada, Japan and the United States.  It is also recommended that ISO 3166-2 codes be used for subdivisions within other countries as well, although these will not be validated by the service and any free text value or a blank value is acceptable.  As a reference, US subdivision codes are defined here: http://en.wikipedia.org/wiki/ISO_3166-2:US; examples: US-VA, US-MO.

Details: Required for certain countries, Recommended, but optional for others

Card.BillingAddress.PostalCode

Description: Mail post office postal code (a.k.a. zip code) associated with the address of the cardholder.  This is currently required for US, CA, GB, JP, DE, and AU although the list may change over time.

Details: Required conditionally by country

Response

This response varies by method.  The POST method returns just the ID of the created entity to be used in subsequent calls.  The PUT and DELETE methods return "Success" on successful transactions.  The GET method returns the full object that was stored for the given card ID.  The schema of the GET response is the same as the schema of the POST request.

Sample Conversation

Create (HTTP POST)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/card

POST

  <Card>
     <BrandID>master</BrandID>
     <AccountNumber>5435579315709649</AccountNumber>
     <BillingAddress>
         <Line1>2000 Purchase Street</Line1>
         <City>Purchase</City>
         <CountrySubdivision>US-NY</CountrySubdivision>
         <Country>US</Country>
         <PostalCode>10577</PostalCode>
     </BillingAddress>
     <CardHolderName>Lee M Cardholder</CardHolderName>
     <ExpiryMonth>5</ExpiryMonth>
     <ExpiryYear>2016</ExpiryYear>
  </Card>

Response:

1l0fvmhvbcilko209lbm7ta7pku2t2niq00bc627egegvaki1121

Read (HTTP GET)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/card/1l0fvmhvbcilko209lbm7ta7pku2t2niq00bc627egegvaki1121

Response Example
  <Wallet>
   <Card>
       <ID>1k8t5p5p05a5pohut86spv2ku1unmrhs81lqouu716kdoq37bl46</ID>
       <BrandID>master</BrandID>
       <AccountNumber>5435579315709649</AccountNumber>
       <BillingAddress>
          <Line1>2000 Purchase Street</Line1>
          <City>Purchase</City>
          <CountrySubdivision>US-NY</CountrySubdivision>
          <Country>US</Country>
          <PostalCode>10577</PostalCode>
       </BillingAddress>
       <CardHolderName>Lee M Cardholder</CardHolderName>
       <ExpiryMonth>5</ExpiryMonth>
       <ExpiryYear>2016</ExpiryYear>
   </Card>
</Wallet>

Update (HTTP PUT)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/card/1l0fvmhvbcilko209lbm7ta7pku2t2niq00bc627egegvaki1121

PUT

  <Card>
     <ID>1k8t5p5p05a5pohut86spv2ku1unmrhs81lqouu716kdoq37bl46</ID>
     <BrandID>master</BrandID>
     <AccountNumber>5435579315709649</AccountNumber>
     <BillingAddress>
         <Line1>2000 Purchase Street</Line1>
         <City>Eureka</City>
         <CountrySubdivision>US-MO</CountrySubdivision>
         <Country>US</Country>
         <PostalCode>63038</PostalCode>
     </BillingAddress>
     <CardHolderName>Lee M Cardholder</CardHolderName>
     <ExpiryMonth>5</ExpiryMonth>
     <ExpiryYear>2020</ExpiryYear>
  </Card>
            

Response Example

Response Code: 204

Delete (HTTP DELETE)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/card/1l0fvmhvbcilko209lbm7ta7pku2t2niq00bc627egegvaki1121

Response:

Response Code: 204

Wallet Storage API: Shipping Address Service (Optional)

This resource allows a partner hosted wallet to store user shipping addresses in the MasterPass database.

Why would I need to use this resource?

Partners that host their own wallet user interface may want to store their user's personally identifiable information (PII) within the MasterPass database.That can be accomplished using a set of services referred to as Wallet Storage APIs.This service provides the full CRUD (create, read, update and delete) operations for individual shipping addresses. This service can be used after a wallet_id is created using the Wallet Storage API: Wallet Service.

Shipping Address Service Interface

This service allows a partner to store user shipping addresses in the MasterPass database.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/<wallet_provider_id>/wallet/<wallet_id>/shipping-address

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/<wallet_provider_id>/wallet/<wallet_id>/shipping-address/<shipping_address_id>

Resource Method

POST, GET, PUT or DELETE

Data Format

XML

Query string parameters

wallet_provider_id

Description: This is an identifier assigned to the partner. It is generated during configuration of the wallet within MasterCard and should be communicated to the partner as part of the onboarding process. This is the Partner ID field within the wallet PM3 configuration.

Details:Required

wallet_id

Description: This is a unique identifier for the user's wallet. The wallet service must be called first to get this id.

Details:Required

shipping_address_id

Description: This is a unique identifier for the shipping address entity. The GET, PUT and DELETE methods require this parameter. The POST method does not accept this parameter and it will return a generated id to use for the subsequent calls.

Details:Required for GET, PUT and DELETE

POST/PUT Schema

The POST and PUT methods both take an XML object within the request payload.  This object represents the entity that will be stored.  The following schema defines the object.  Explanation of each of the individual fields follows that.

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="Address">
      <xs:sequence>
        <xs:element name="Line1" type="xs:string"/>
        <xs:element name="Line2" type="xs:string" minOccurs="0"/>
        <xs:element name="Line3" type="xs:string" minOccurs="0"/>
        <xs:element name="City" type="xs:string"/>
        <xs:element name="CountrySubdivision" type="xs:string" minOccurs="0"/>
        <xs:element name="Country" type="xs:string"/>
        <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PhoneNumber">
      <xs:sequence>
        <xs:element name="CountryCode" type="xs:string"/>
        <xs:element name="Number" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ShippingAddress">
      <xs:complexContent>
        <xs:extension base="Address">
          <xs:sequence>
            <xs:element name="ID" type="xs:string" minOccurs="0"/>
            <xs:element name="RecipientName" type="xs:string"/>
            <xs:element name="RecipientPhoneNumber" type="PhoneNumber"/>
            <xs:element name="Default" type="xs:boolean" minOccurs="0"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:schema>
Element Descriptions

ShippingAddress.ID

Description: This is the identifier returned from the POST operation.

Details: Required for PUT

ShippingAddress.RecipientName

Description: Name of the person that the package should be delivered to.

Details: Required

ShippingAddress.RecipientPhoneNumber.CountryCode

Description: Phone contact for the person that the package should be delivered to. This is the code assigned to the country, such as 1 for US or 44 for UK.

Details: Required

ShippingAddress.RecipientPhoneNumber.Number

Description: Phone contact for the person that the package should be delivered to. This is the number without country code, such as the area code and phone number of 6367227111 for the number +1-636-722-7111.

Details: Required

ShippingAddress.Default

Description: Identifies this shipping address as a default shipping address within the full list of shipping addresses for this wallet.

Details: Optional

ShippingAddress.Line1

Description: Primary street address for the delivery.

Details: Required

ShippingAddress.Line2

Description: Optional second line of the street address for the delivery.

Details: Optional

ShippingAddress.Line3

Description: Optional third line of the street address for the delivery.

Details: Optional

ShippingAddress.City

Description: City associated with the address for the delivery.

Details: Required

ShippingAddress.Country

Description: Country element must be set to standard 2-letter country code as defined in ISO 3166-2 (http://en.wikipedia.org/wiki/ISO_3166-2), such as US, GB etc.

Details: Required

ShippingAddress.CountrySubdivision

Description: CountrySubdivision element must always be set to an ISO 3166-2 code for the following countries: Australia, Canada, Japan and the United States. It is also recommended that ISO 3166-2 codes be used for subdivisions within other countries as well, although these will not be validated by the service and any free text value or a blank value is acceptable. As a reference, US subdivision codes are defined here: http://en.wikipedia.org/wiki/ISO_3166-2:US; examples: US-VA, US-MO.

Details: Required for certain countries, Recommended, but optional for others

ShippingAddress.PostalCode

Description: Mail post office postal code (a.k.a. zip code) associated with the address for the delivery. This is currently required for US, CA, GB, JP, DE, and AU although the list may change over time.

Details: Required conditionally by country

Response

This response varies by method. The POST method returns just the ID of the created entity to be used in subsequent calls. The PUT and DELETE methods return "Success" on successful transactions. The GET method returns the full object that was stored for the given shipping address ID. The schema of the GET response is the same as the schema of the POST request.

Sample Conversation

Create (HTTP POST)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/shipping-address

POST

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <ShippingAddress>
     <Line1>2000 Purchase Street</Line1>
     <City>Purchase</City>
     <CountrySubdivision>US-NY</CountrySubdivision>
     <Country>US</Country>
     <PostalCode>10577</PostalCode>
     <RecipientName>Lee M Cardholder</RecipientName>
     <RecipientPhoneNumber>
         <CountryCode>1</CountryCode>
         <Number>6367227111</Number>
     </RecipientPhoneNumber>
  </ShippingAddress>
         
Response Example
b3s3kp6d8uiin4g993h6bcs9kpatiuqal4spjj63pkeatj32c18

Read (HTTP GET)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/shipping-address/b3s3kp6d8uiin4g993h6bcs9kpatiuqal4spjj63pkeatj32c18

Response Example
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <ShippingAddress>
     <Line1>2000 Purchase Street</Line1>
     <City>Purchase</City>
     <CountrySubdivision>US-NY</CountrySubdivision>
     <Country>US</Country>
     <PostalCode>10577</PostalCode>
     <ID>b3s3kp6d8uiin4g993h6bcs9kpatiuqal4spjj63pkeatj32c18</ID>
     <RecipientName>Lee M Cardholder</RecipientName>
     <RecipientPhoneNumber>
         <CountryCode>1</CountryCode>
         <Number>6367227111</Number>
     </RecipientPhoneNumber>
  </ShippingAddress>
         

Update (HTTP PUT)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/shipping-address/b3s3kp6d8uiin4g993h6bcs9kpatiuqal4spjj63pkeatj32c18

PUT

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <ShippingAddress>
     <Line1>2000 Purchase Street</Line1>
     <City>Purchase</City>
     <CountrySubdivision>US-NY</CountrySubdivision>
     <Country>US</Country>
     <PostalCode>10577</PostalCode>
     <ID>b3s3kp6d8uiin4g993h6bcs9kpatiuqal4spjj63pkeatj32c18</ID>
     <RecipientName>Lee M Cardholder</RecipientName>
     <RecipientPhoneNumber>
         <CountryCode>1</CountryCode>
         <Number>6367227111</Number>
     </RecipientPhoneNumber>
  </ShippingAddress>
        
Response Example
Response code: 204

Delete (HTTP DELETE)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/shipping-address/ b3s3kp6d8uiin4g993h6bcs9kpatiuqal4spjj63pkeatj32c18

Response Example

Response code: 204

Wallet Storage API: Reward Program Service (Optional)

This resource allows a partner hosted wallet to store user reward programs in the MasterPass database.

Why would I need to use this resource?

Partners that host their own wallet user interface may want to store their user's personally identifiable information (PII) within the MasterPass database. That can be accomplished using a set of services referred to as Wallet Storage APIs. This service provides the full CRUD (create, read, update and delete) operations for individual reward programs. This service can be used after a wallet_id is created using the Wallet Storage API: Wallet Service.

Reward Program Service Interface

This service allows a partner to store user reward programs in the MasterPass database.

Resource URL

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/<wallet_provider_id>/wallet/<wallet_id>/reward-program

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/<wallet_provider_id>/wallet/<wallet_id>/reward-program/<reward_program_id>

Resource Method

POST, GET, PUT or DELETE

Data Format

XML

Query string Parameters

wallet_provider_id

Description: This is an identifier assigned to the partner. It is generated during configuration of the wallet within MasterCard and should be communicated to the partner as part of the onboarding process. This is the Partner ID field within the wallet PM3 configuration.

Details:Required

wallet_id

Description: This is a unique identifier for the user's wallet. The wallet service must be called first to get this id.

Details:Required

reward_program_id

Description: This is a unique identifier for the reward program entity. The GET, PUT and DELETE methods require this parameter. The POST method does not accept this parameter and it will return a generated id to use for the subsequent calls.

Details:Required for GET, PUT and DELETE

POST/PUT Schema

The POST and PUT methods both take an XML object within the request payload.  This object represents the entity that will be stored.  The following schema defines the object.  Explanation of each of the individual fields follows that.

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="RewardProgram">
      <xs:sequence>
        <xs:element name="ID" type="xs:string" minOccurs="0"/>
        <xs:element name="ProgramID" type="xs:string"/>
        <xs:element name="Number" type="xs:string"/>
        <xs:element name="ExpiryMonth" type="xs:string" minOccurs="0"/>
        <xs:element name="ExpiryYear" type="xs:string" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:schema>
           
Element Descriptions

RewardProgram.ID

Description: This is the identifier returned from the POST operation.

Details: Required for PUT

RewardProgram.ProgramID

Description: Identifies the reward program offering that this entity is part of.  The value must be obtained from the Reward Program Offering Service as the RewardProgramOffering.Id.

Details: Required

RewardProgram.Number

Description: This is the account number printed on the card.

Details: Required

RewardProgram.ExpiryMonth

Description: Month in which the reward program will expire as printed on the card.

Details: Required for reward program offerings that include an expiration date

RewardProgram.ExpiryYear

Description: Year in which the reward program will expire as printed on the card.

Details: Required for reward program offerings that include an expiration date

Response

This response varies by method. The POST method returns just the ID of the created entity to be used in subsequent calls. The PUT and DELETE methods return "Success" on successful transactions. The GET method returns the full object that was stored for the given reward program ID. The schema of the GET response is the same as the schema of the POST request.

Sample Conversation

Create (HTTP POST)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/reward-program

POST

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <RewardProgram>
     <ProgramID>areward</ProgramID>
     <Number>1234567890123456</Number>
     <ExpiryMonth>05</ExpiryMonth>
     <ExpiryYear>2016</ExpiryYear>
  </RewardProgram>
Response Example
um25en82ahaht65ipattd3871khnf7keitss7crmprng32n6u0f

Read (HTTP GET)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/reward-program/ um25en82ahaht65ipattd3871khnf7keitss7crmprng32n6u0f

Response Example
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <RewardProgram xmlns:ns2="http://types.pws2.ppol.mastercard.com">
     <ID>um25en82ahaht65ipattd3871khnf7keitss7crmprng32n6u0f</ID>
     <ProgramID>areward</ProgramID>
     <Number>1234567890123456</Number>
     <ExpiryMonth>05</ExpiryMonth>
     <ExpiryYear>2016</ExpiryYear>
  </RewardProgram>
            

Update (HTTP PUT)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/reward-program/ um25en82ahaht65ipattd3871khnf7keitss7crmprng32n6u0f

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <RewardProgram xmlns:ns2="http://types.pws2.ppol.mastercard.com">
     <ID>um25en82ahaht65ipattd3871khnf7keitss7crmprng32n6u0f</ID>
     <ProgramID>areward</ProgramID>
     <Number>1234567890123456</Number>
     <ExpiryMonth>05</ExpiryMonth>
     <ExpiryYear>2020</ExpiryYear>
  </RewardProgram>
          

Response

Response code: 204

Delete (HTTP DELETE)

https://api.mastercard.com/masterpass/partner/v6/wallet-provider/ 16qmlkd3vtvmhjdtcpcdvuidhiqhrb1r2suu24k3oln2c0i95hf8/wallet/ 1dqajif7octqpq43grt3m910lrkqnhle1d5g7h3svb3fl85ejf88/reward-program/ um25en82ahaht65ipattd3871khnf7keitss7crmprng32n6u0f

Response

Response code: 204

Appendix: REST Service Error Handling

In case an error occurs, Errors will be returned back as described in Appendix REST Service Error Handling section below.

Here is the list of errors that will be returned from this service.

In case an error occurs during REST service calls, Errors as specified by the following schema will be returned.

XML Schema:

  <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Errors" type="Errors"/>
    <xs:complexType name="Error">
      <xs:sequence>
        <xs:element name="Description" type="xs:string" minOccurs="0"/>
        <xs:element name="ReasonCode" type="xs:string"/>
        <xs:element name="Recoverable" type="xs:boolean"/>
        <xs:element name="Source" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  <xs:complexType name="Errors">
      <xs:sequence>
        <xs:element name="Error" type="Error" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:schema>
            
Element Descriptions

Errors: An element used to encapsulate a collection of errors that occurred during a single request.

Errors.Error: An element used to encapsulate the details of a single error occurrence.

Errors.Error.Source: An identifier that represents the source of the error to which the reason code refers. Example: MerchantTransaction.CheckoutId.

The Source field values MUST follow the "dot" notation (i.e., "MerchantTransaction.CheckoutId"). The following tables outline standard Source values/prefixes and when they should be used.

Standard Source Values

Source

Description

System

The value that should be used to represent any source that should not be communicated externally.


Standard Source Prefixes

Source Prefix

Description

HttpHeader.*

The prefix that should be used to represent the parent node for HTTP header values.

HttpHeader.OAuth.*

The prefix that should be used to represent the parent node(s) for OAuth-related values.

Url.*

The prefix that should be used to represent the parent node for URL parameters.


Errors.Error.ReasonCode: An identifier that represents the reason for the error. Example: AUTHORIZATION_FAILED.

The following table lists the global reason codes and their corresponding meanings. Any time that a global reason code will meet the needs for error communication, the global reason code MUST be used.

Global Reason Codes

Required Source

Reason Code

Description

System

REQUEST_TIMEOUT

The request processing time took too long and it was determined that request should be timed out.

System

SYSTEM_ERROR

An error that occurs due to a hardware, network, or connectivity failure.

System

VOLUME_THRESHOLD_EXCEEDED

An error that occurs if a client makes too many requests and exceeds the throttling settings for a service.

System

URL_UNKNOWN

An error that occurs when the client's request does not match a known service URL.

 

AUTHORIZATION_FAILED

An error that occurs when the client's OAuth credentials are not authorized to make the request

 

AUTHENTICATION_FAILED

An error that occurs when the client's OAuth credentials are not successfully validated.

 

MISSING_REQUIRED_INPUT

An error that indicates that a piece of data required in the request was not present.

 

INVALID_INPUT_FORMAT

An error that indicates that a piece of data in the request does not match the expected format or mask (i.e. submitting "123-456-test" as a phone number).

 

INVALID_INPUT_LENGTH

An error that indicates that a piece of data in the request is too long or too short.

 

INVALID_INPUT_VALUE

An error that indicates that the value for a piece of data in the request is invalid (i.e. submitting "Yes" to a field that requires "True" or "False", submitting a company ID that does not exist)

 

RESOURCE_UNKOWN

An error that indicates that a specific resource instance cannot be found.

 

MAX_PAGE_LENGTH_EXCEEDED

An error that indicates that the PageLength parameter used within pagination is too large.


Errors.Error.Description: A textual description of the error that is appropriate for logging. The Description field MAY be used to communicate additional details related to the reason code. If provided, the Description field SHOULD contain a single complete sentence (i.e. "The CheckoutId does not exist.").

Errors.Error.Recoverable: An indicator stating whether it is reasonable to retry a failed request.

Content Disclaimer

No assurances are given that the information provided herein is error-free. You acknowledge and agree that inaccuracies may be present. The information is provided to you on an "AS IS" basis for use at your own risk. MasterCard will not be responsible for any action you take as a result of this document.MasterCard will not be responsible for any action you take as a result of this document, or any inaccuracies, inconsistencies, formatting errors, or omissions.

© 2014 MasterCard. Proprietary and Confidential. All rights reserved.