Cardholder vs merchant-initiated transactions
Cardholder-initiated transactions (CIT) and merchant-initiated transactions (MIT) use stored credentials, known as Card-on-File (COF), to process repeat/recurring payments securely without the consumer re-entering the card data.
By providing the following details, you can reduce issuer declines, increase approval rates, and provide a smoother experience for the consumer:
| Detail to provide | Description | Field name |
|---|---|---|
| Who initiated the transaction | Specify if the transaction is a CIT or MIT. Valid values are:
|
initiatorType |
| The storage status of the card | Specify if the card is stored, needs to be stored, or entered by the cardholder. Valid values are:
|
accountOnFile |
| Reference of the original transaction | Specify the original transaction ID for merchant-initiated transactions. This provides a link back to the original transaction where the cardholder gave consent. | originalNetworkTransactionId |
How CIT and MIT work
The CIT and MIT lifecycle consists of the following steps:
- Cardholder initiates the transaction (CIT) via
POST /paymentsand chooses to store their card or start a recurring relationship. - The Payments API returns the
networkResponse.networkTransactionIdin the response. - You store the original transaction ID (
networkResponse.networkTransactionId) from the response. - You initiate an MIT transaction for subsequent charges by sending the stored value (
networkTransactionIdfrom the CIT response) in the fieldcard.originalNetworkTransactionIdto link back to the original cardholder consent.
Use cases
The following table lists the use cases and field value combinations that must be sent in your requests:
| Use case | initiatorType |
accountOnFile |
|---|---|---|
| One-time purchase without storing card details | CARDHOLDER | NOT_STORED or not sent in the request. |
| Storing credentials for the first time | CARDHOLDER | TO_BE_STORED |
| Returning consumer making a purchase using a stored card | CARDHOLDER | STORED |
| Merchant-initiated transaction using a stored card | MERCHANT | STORED |
Merchant-initiated transaction related to a single purchase in which the card was stored to complete one transaction. (This use case is only valid when |
MERCHANT | NOT_STORED, STORED, or not sent in the request. |
Field details
The following table lists the key fields required for CIT and MIT transactions:
| Core fields | Description |
|---|---|
initiatorType |
Identifies who initiated the transaction. Valid values are:
If no value is provided, it defaults to CARDHOLDER. |
accountOnFile |
The status of the card credentials. Valid values are:
|
paymentMethodType.card.originalNetworkTransactionId |
The network transaction identifier from the first payment in a merchant-initiated series. |
paymentMethodType.card.accountNumberType |
The type of payment method associated with the account number. Valid values are:
If no value is provided, it defaults to PAN. |
| Recurring & Installment fields | Description |
recurring.recurringSequence |
Identifies whether payment is the first in a series of recurring payments or a subsequent payment. Valid values are:
|
recurring.isVariableAmount |
Indicates if the recurring amount is a variable amount rather than a fixed amount. Valid values are:
If no value is provided, it defaults to false. Value of true is required for Mastercard recurring transactions in which the recurring amount can vary. |
recurring.recurringNumber |
The sequence of the recurring payment numerically. Required only for Cartes Bancaires. |
installment.installmentCount |
The current installment number. |
installment.totalInstallments |
Total number of installments in the recurring plan. |
| Special MIT use case fields | Description |
authorizationPurpose |
This field should be populated when there is a specific authorization purpose such as delayed authorizations, reauthorizations, resubmissions, and no-shows. Valid values are:
|
paymentMethodType.card.authentication.scaExemptionReason |
The justification for why a transaction does not have to meet Strong Customer Authentication (SCA) requirements. This field only applies for EU MITs. |
Scenarios
The following sample code blocks show how requests must be sent for various scenarios.
Save a card for the first time (CIT)
HTTP Method: POST
Endpoint: /payments
Scenario: When a cardholder saves their card during checkout to be used in subsequent payments.
{
"captureMethod": "NOW",
"amount": 10000,
"currency": "USD",
"initiatorType": "CARDHOLDER",
"accountOnFile": "TO_BE_STORED",
"merchant": {
"merchantSoftware": {
"companyName": "Payment Company",
"productName": "Application Name"
},
"merchantCategoryCode": "4899"
},
"paymentMethodType": {
"card": {
"accountNumber": "4012000033330026",
"expiry": {
"month": 10,
"year": 2040
}
}
}
}Key response field:
networkResponse.networkTransactionId - Store this value. Required for subsequent MIT charges.
Enroll in recurring billing (CIT)
HTTP Method: POST
Endpoint: /payments
Scenario: When a cardholder signs up for a subscription.
{
"captureMethod": "NOW",
"amount": 10000,
"currency": "USD",
"initiatorType": "CARDHOLDER",
"accountOnFile": "TO_BE_STORED",
"merchant": {
"merchantSoftware": {
"companyName": "Payment Company",
"productName": "Application Name"
},
"merchantCategoryCode": "4899"
},
"paymentMethodType": {
"card": {
"accountNumber": "4012000033330026",
"expiry": {
"month": 10,
"year": 2040
}
}
},
"recurring": {
"recurringSequence": "FIRST"
}
}Charge a saved card (recurring MIT)
You must send the networkResponse.networkTransactionId value, from the initial CIT response, in the card.originalNetworkTransactionId field in your MIT request.
HTTP Method: POST
Endpoint: /payments
Scenario: A scheduled follow-up charge using a MIT.
{
"captureMethod": "NOW",
"amount": 10000,
"currency": "USD",
"initiatorType": "MERCHANT",
"accountOnFile": "STORED",
"merchant": {
"merchantSoftware": {
"companyName": "Payment Company",
"productName": "Application Name"
},
"merchantCategoryCode": "4899"
},
"paymentMethodType": {
"card": {
"accountNumber": "4012000033330026",
"originalNetworkTransactionId": "012125692162451",
"expiry": {
"month": 10,
"year": 2040
}
}
},
"recurring": {
"recurringSequence": "SUBSEQUENT"
}
}Unscheduled charge (MIT)
For unscheduled payments, the recurring object is not required.
HTTP Method: POST
Endpoint: /payments
Scenario: For one-off merchant charges against stored credentials — usage-based billing, top-ups, pay-as-you-go.
{
"captureMethod": "NOW",
"amount": 5000,
"currency": "USD",
"initiatorType": "MERCHANT",
"accountOnFile": "STORED",
"merchant": {
"merchantSoftware": {
"companyName": "Payment Company",
"productName": "Application Name"
},
"merchantCategoryCode": "4899"
},
"paymentMethodType": {
"card": {
"accountNumber": "4012000033330026",
"originalNetworkTransactionId": "012125692162451",
"expiry": {
"month": 10,
"year": 2040
}
}
}
}Subsequent installment payment (MIT)
HTTP Method: POST
Endpoint: /payments
Scenario: A follow-up installment charge using a MIT.
{
"captureMethod": "NOW",
"amount": 5000,
"currency": "USD",
"initiatorType": "MERCHANT",
"accountOnFile": "STORED",
"merchant": {
"merchantSoftware": {
"companyName": "Payment Company",
"productName": "Application Name"
},
"merchantCategoryCode": "4899"
},
"paymentMethodType": {
"card": {
"accountNumber": "4012000033330026",
"originalNetworkTransactionId": "012125692162451",
"expiry": {
"month": 10,
"year": 2040
}
}
},
"installment": {
"installmentCount": 3,
"totalInstallments": 12
}
}MIT scenarios with authorization purpose
All of these MIT scenarios must have the following in their request:
- Set
initiatorTypeto MERCHANT - Set
accountOnFileto STORED (optional for scenarios withauthorizationPurpose) - Send the transaction ID from the initial CIT in
card.originalNetworkTransactionId.
| Scenario | authorizationPurpose |
When to use | Example |
|---|---|---|---|
| Delayed charge | DELAYED_CHARGE | Charge after service delivery for incidentals. | Hotel minibar or fuel pump final amount. |
| No show | NO_SHOW | Penalty charge for missed reservation. | Hotel or restaurant no-show fee. |
| Resubmission | RESUBMISSION | Retry a previously declined MIT (goods already delivered). | Retry after insufficient funds. |
| Reauthorization | REAUTHORIZATION | New authorization when original expired before fulfillment. | Split shipment or backordered item |
For NO_SHOW, RESUBMISSION, and REAUTHORIZATION, the request structure is identical - only the authorizationPurpose value changes.
HTTP Method: POST
Endpoint: /payments
Scenario: A delayed charge for the hotel minibar bill.
{
"captureMethod": "NOW",
"amount": 2500,
"currency": "USD",
"initiatorType": "MERCHANT",
"accountOnFile": "STORED",
"authorizationPurpose": "DELAYED_CHARGE",
"paymentMethodType": {
"card": {
"accountNumber": "4012000033330026",
"originalNetworkTransactionId": "012125692162451",
"expiry": {
"month": 10,
"year": 2040
}
}
}
}SCA exemptions for MIT
If the initial CIT completed 3D Secure, subsequent MITs can claim a Strong Customer Authentication (SCA) exemption by adding card.authentication.scaExemptionReason in the request.
The following table lists the SCA exemption reason values for MIT and when they can be used:
scaExemptionReason |
When to use |
|---|---|
| RECURRING_PAYMENT | Scheduled recurring MIT (fixed amount, fixed interval). |
| MERCHANT_INITIATED_TRANSACTION | Unscheduled MIT. |
For more information on 3D Secure and SCA, refer to 3D Secure.
Related
Authorize and capture a payment
Stored payments
Recurring payments
Tokenization
Real-Time Account Updater
Verify a payment method
3D Secure