AApt Commerce
Sign inGet started
Show for

Network Mandates

Important

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:

  1. Recurring — scheduled subscription (APT cron / Run now)
  2. Installment — known total split into N payments
  3. Unscheduled COF — event-driven top-up or refill
  4. Resubmission — retry after a qualifying decline, same NTID chain
  5. Delayed charge — extras after the stay (hospitality)
  6. No-show — reservation not honored, consent on the booking CIT
  7. Reauthorization — expired auth or amount change
  8. 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

TypeDescriptiontransaction_initiatorExample
CIT
Customer-Initiated Transaction"customer"Customer clicks "Pay Now"
MIT
Merchant-Initiated Transaction"merchant"Subscription renewal, usage billing

Required Fields by Transaction Type

FieldOne-TimeInitial COFSubsequent CITMIT / 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%.