Network Mandates
APT stored-credential rules: CIT vs MIT, our mandate fields, and Network Transaction ID. We follow the card networks — not another vendor’s API.
CIT vs MIT (who starts the authorization)
Every card authorization is either a customer-initiated transaction (CIT) or a merchant-initiated transaction (MIT). The issuer uses that flag — plus the Network Transaction ID from the first CIT — for authentication, declines, fees, and chargebacks. Mislabeling a renewal as a fresh checkout (or a one-click buy as an MIT) breaks the chain.
A CIT happens when the buyer is actively paying (hosted checkout, “Pay now”, one-click while they are in session). An MIT happens when the seller charges a stored credential later without the buyer present (monthly bill, installment, top-up, no-show). Credential-on-file is the stored method, not the classification — the same saved card can be used for a later CIT or an MIT.
APT API uses transaction_initiator, stored_credential, network_transaction_id, and mit_use_case. Live adapters translate those to each processor. Merchant KB: What is a network mandate?.
Pilot sandbox vs live networks
Hosted pay writes a CIT with stored_credential: initial and a sandbox ntid_sbx_*. Cron and Run now write an MIT (recurring) that reuses that NTID. That models the consent chain. It is not a Visa/Mastercard-issued ID and not MIT certification. A live acquirer must return the real NTID (and Mastercard TLID from 23 October 2026). Use documented test cards only — never a real PAN.
Key mandate areas:
- Stored Credentials (COF) — Required when a method is saved for later CIT or MIT
- Network Transaction ID — Created on the CIT; required on every subsequent stored-credential use
- Recurring / subscription MIT — Scheduled billing; one of eight network MIT use cases
- Mastercard TLID — Complements NTID on related MITs (live scheme; not generated in Pilot)
Authorization, Capture, and Sale
Separate from CIT/MIT. Authorization holds funds. Capture takes a prior hold (same initiator as that auth). Sale is auth and capture in one request. Send APT stored-credential fields on all three when a method is on file. Hosted pay and subscription Run now / cron are Sales today (operation_type: sale).
Eight MIT use cases (flag the real one)
Do not default every merchant-started charge to “recurring.” Networks recognize:
- Recurring — scheduled subscription (APT cron / Run now)
- Installment — known total split into N payments
- Unscheduled COF — event-driven top-up or refill
- Resubmission — retry after a qualifying decline, same NTID chain
- Delayed charge — extras after the stay (hospitality)
- No-show — reservation not honored, consent on the booking CIT
- Reauthorization — expired auth or amount change
- Incremental — growing amount (fuel, incidentals)
A delayed capture of a checkout auth is still a CIT. A buyer who logs in and pays with a saved card is still a CIT.
Stored Credential Framework
When storing a card for future use, you must indicate whether the transaction is the initial storage or a subsequent use of stored credentials.
Initial Transaction (Card Storage)
Set stored_credential: "initial" and transaction_initiator: "customer". The response will include a network_transaction_id — save this for subsequent transactions.
curl -X POST https://api.aptcommerce.com/v1/transactions \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"amount": 9900,
"currency": "usd",
"payment_method": "card",
"card": { "number": "4242...", "exp_month": 12, "exp_year": 2027, "cvc": "123" },
"stored_credential": "initial",
"transaction_initiator": "customer",
"customer": "cust_abc123"
}'Subsequent Transaction (Using Stored Card)
Set stored_credential: "subsequent" and include the original network_transaction_id.
curl -X POST https://api.aptcommerce.com/v1/transactions \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"amount": 9900,
"currency": "usd",
"payment_method": "card",
"stored_credential": "subsequent",
"transaction_initiator": "merchant",
"network_transaction_id": "visa_ntid_abc123",
"recurring": true,
"customer": "cust_abc123"
}'MIT vs CIT Classification
| Type | Description | transaction_initiator | Example |
|---|---|---|---|
CIT | Customer-Initiated Transaction | "customer" | Customer clicks "Pay Now" |
MIT | Merchant-Initiated Transaction | "merchant" | Subscription renewal, usage billing |
Required Fields by Transaction Type
| Field | One-Time | Initial COF | Subsequent CIT | MIT / Recurring |
|---|---|---|---|---|
| stored_credential | — | initial | subsequent | subsequent |
| transaction_initiator | — | customer | customer | merchant |
| network_transaction_id | — | — | Required | Required |
| recurring | — | — | Optional | Required |
Response: Mandate Compliance
Transaction responses include a mandate_compliance field indicating compliance status:
{
"id": "txn_1a2b3c4d",
"status": "completed",
"mandate_compliance": "compliant",
"network_details": {
"card_brand": "visa",
"last4": "4242",
"auth_code": "A12345",
"response_code": "00",
"network_transaction_id": "visa_ntid_xyz789",
"eci": "07",
"avs_result": "Y",
"cvv_result": "M"
},
"mandate_flags": {
"stored_credential": "subsequent",
"transaction_initiator": "merchant",
"recurring": true
},
"processing_insights": {
"risk_score": 12,
"risk_factors": []
},
"settlement": {
"settled_at": "2026-03-14T18:00:00Z",
"expected_funding_date": "2026-03-16",
"funding_status": "pending",
"batch_id": "batch_20260314"
}
}Optimizing Approval Rates
Include Complete Mandate Data
Transactions with proper stored_credential and transaction_initiator fields see 5-8% higher approval rates.
Send Level 2/3 Data
For B2B transactions, include tax, shipping, and line-item data to reduce interchange and improve issuer confidence.
Use Network Tokenization
Replace raw PANs with network-issued tokens to reduce soft declines by ~15% on recurring transactions.
Implement Smart Retry
Soft declines (codes 05, 51, 65, 91) are eligible for retry. Use exponential backoff: 1h → 6h → 24h.
Always Send CVV for CIT
Including CVV on customer-initiated transactions improves approval rates by ~3%.