Provisioning Overview
The two ways a card becomes a token, and which one each wallet requires.
Provisioning is the process by which a token requestor, usually a wallet, asks for a token to be created for a card. This is where your integration work is.
The path
%%{init: {"sequence": {"actorMargin": 8, "boxMargin": 6, "noteMargin": 6, "messageMargin": 26, "width": 110, "diagramMarginX": 8, "diagramMarginY": 8}}}%%
sequenceDiagram
autonumber
participant CH as Cardholder
participant W as Wallet
participant MC as Mastercard MDES
participant UDT as UnDosTres
participant P as You
CH->>W: Starts adding the card
W->>MC: Requests a payment token
MC->>UDT: Sends for verification
UDT->>P: AdministrativeMessage
UDT-->>MC: Provisioning decision
MC->>MC: Generates token, stores PAN
MC-->>W: Returns the token
W-->>CH: Card appears in the wallet
- The cardholder starts the request, by push provisioning or manual provisioning.
- The wallet requests a payment token from the card network.
- The network starts the approval process and passes the request to UnDosTres for verification.
- UnDosTres makes the provisioning decision and relays it to the network. UnDosTres also notifies you, using the AdministrativeMessage method, of the attempt.
- If authorized, the network generates the token, stores the mapping in its vault.
- The token is delivered to the wallet.
Push versus manual
There are two ways a cardholder can get a card into a wallet, and they behave differently.
| Push provisioning | Manual provisioning | |
|---|---|---|
| What the cardholder does | Taps a button in your app | Types the card number into the wallet app |
| OTP required | No | Yes, except Samsung Pay |
| TAV required | Yes | No |
| Where your work is | Your mobile app, plus one API call | Your backend, answering callbacks |
| Guide | Push Provisioning | Manual Provisioning |
The reason push provisioning needs no OTP is that the cardholder is already authenticated. They are inside your app, which means you have already established who they are. Manual provisioning has no such guarantee, because anyone who can read a card number could type it into a wallet, so the cardholder must prove ownership with a one-time code.
Wallet behaviour
Apple Pay and Google Pay behave identically: an OTP is issued for manual provisioning, and no OTP for push provisioning.
Samsung Pay is different. Samsung Pay does not issue an OTP, for either manual or push provisioning. On a Samsung Pay manual provisioning you will simply receive digitization.complete telling you the token was created.
Wallet IDs
Each wallet is identified by a three-digit Wallet ID, returned as wallet_id on ListActiveTokens and ListAllTokens.
| Wallet | WID |
|---|---|
| Apple Pay | 103 |
| Google Pay | 216 |
| Samsung Pay | 217 |
Confirm before you branch on these values. The wallet ID list above is the published Mastercard-ecosystem numbering. The exact values issued on this programme are being confirmed. Do not build hard branching logic onwallet_iduntil we confirm the list in writing. Store the value, display it if you like, but treat a wallet-specific code path as pending.
What UnDosTres does, and what you do
| Responsibility | Owner |
|---|---|
| Decides whether the card may be tokenized | UnDosTres |
| Calculates the TAV for push provisioning | UnDosTres |
| Encrypts the card data package to the wallet | UnDosTres and the SDK |
| Notifies you of every provisioning event | UnDosTres |
| Supplies the cardholder's phone and email for the OTP | You |
| Delivers the OTP to the cardholder | You |
| Tells the cardholder their card was added successfully | You |
| Keeps token state aligned with card state | You |
One open point on the decision step. On some configurations the issuer is asked to confirm card eligibility synchronously before the decision is made, which would add an endpoint to your scope. On this programme UnDosTres currently makes that decision from its own card data and does not call you for it. We are confirming this in writing and will update this page. If it changes, we will tell you before it affects your build.
Related
- Manual Provisioning — the full callback sequence
- Push Provisioning — the in-app path
- Token Lifecycle Management — what happens afterwards
Updated about 2 hours ago

