This guide provides comprehensive documentation for implementing the Visa and Mastercard Stored Credential Transaction Framework in your payment application. Compliance with this mandate is required for all merchants who store customer payment information for future use.
If your application stores customer payment data (tokens, account numbers, or profile information) for recurring billing, subscriptions, or card-on-file transactions, you must properly identify and flag these transactions according to card network requirements.
Non-compliance may result in:
A stored credential is any payment information retained by a merchant or payment service provider to process future transactions. This includes:
All transactions using stored credentials must be classified into one of two categories:
Definition: Any transaction where the cardholder actively participates in real-time.
Common Scenarios:
Key Characteristic: The cardholder is present and actively authorizing the transaction at the time it occurs.
Definition: Any transaction where the merchant processes payment without real-time cardholder participation.
Common Scenarios:
Key Characteristic: The cardholder is not actively participating when the transaction is processed.
To comply with the mandate, you must include the following parameters in your authorization requests when using stored payment credentials:
Scenario: Returning customer logs into your e-commerce site and completes a purchase using their saved payment method.
Explanation:
cof: "C" - Customer is actively participating in the transactioncofscheduled: "N" - This is a one-time purchase, not a scheduled recurring paymentScenario: Your billing system automatically charges a customer’s saved payment method for their monthly subscription.
Explanation:
cof: "M" - Merchant is initiating the transaction automaticallycof_sched: "Y" - This is a scheduled recurring payment that happens on a regular intervalScenario: New customer signs up for your service and you’re storing their payment information for future use.
Explanation:
vault: "Y" - Creates a new stored profilecof: "C" - Customer is present during account creationcof_perm: "Y" - Customer explicitly agreed to store their payment infoamount: "0.00" - Account verification only, no chargeScenario: Your SaaS platform charges customers based on actual usage at the end of each billing cycle.
Explanation:
cof: "M" - Merchant initiates based on usage metricscof_sched: "N" - Amount varies and isn’t on a fixed scheduleScenario: Customer orders multiple items, but only some are in stock. You charge for available items immediately, then charge for remaining items when they ship later.
Initial Charge (Customer Present):
Subsequent Charge (Customer Not Present):
Explanation:
cof: "C" because customer is present at checkoutcof: "M" because it’s processed later without customer participationWhen stored credential parameters are properly included, the gateway will echo back the cof value in the response:
Important: Always verify that the cof value returned matches what you sent in the request to ensure proper transaction tracking.
Do:
Don’t:
Do:
Don’t:
Do:
Don’t:
Do:
Don’t:
Possible Causes:
cof parametercof value (using “c” when should be “m”)cof_sched parameter for MIT transactionsSolution: Review your transaction logic and ensure all stored credential transactions include the proper parameters based on the transaction type.
Possible Causes:
Solution: Audit recent transactions and correct your implementation to consistently use the proper parameter values. Enable logging to track COF parameter usage across all transaction types.
cof in responsePossible Causes:
Solution:
Verify you’re including the cof parameter in your charge request. Confirm with your payment provider that stored credential support is enabled for your merchant account.
Ask yourself:
cof: "C")cof: "M")cof_sched: "Y")cof_sched: "N")Q: Do I need to update my integration if I don’t store customer payment information?
A: No. This mandate only applies to transactions using stored credentials. If you process one-time payments where customers enter their card information fresh each time, no changes are required.
Q: What happens if I don’t implement these changes?
A: Non-compliant recurring transactions may be declined, flagged for data integrity issues, or result in financial penalties from card networks. Continued non-compliance may affect your ability to process payments.
Q: Do I need to re-tokenize existing stored payment methods?
A: No. The gateway automatically tracks initial and subsequent transactions once you start including the COF parameters. You don’t need to regenerate or update existing tokens.
Q: Can I use the same stored token for both CIT and MIT transactions?
A: Yes. The same payment token can be used for both transaction types. The cof parameter indicates how each individual transaction is being processed, not how the token itself is classified.
Q: How do I handle failed recurring payment retries?
A: Retry attempts should use the same COF parameters as the original transaction. If the original was cof: "M" and cof_sched: "Y", retries should use the same values.
Q: Do $0 authorization transactions need COF parameters?
A: Yes, if you’re storing the payment information for future use. Use cof: "C" for customer-initiated account verification, or cof: "M" if setting up for future merchant-initiated recurring charges.
Q: What if my business model doesn’t fit neatly into CIT or MIT?
A: Apply this simple rule: If the customer is actively participating in this specific transaction at this moment, it’s CIT. If the transaction is happening automatically without the customer’s real-time involvement, it’s MIT.