Poll status of an async CTP operation
Poll the status of an asynchronous CTP operation using the requestTraceId returned from registration or removal APIs.
This is a synchronous call that queries the CTP SaaS status endpoint with built-in retry logic (4 attempts with 1-second delay). If the SaaS reports a completed status that has not been processed via webhook yet, the platform automatically processes it and updates local CTP records.
Status values:
- IN_PROGRESS: Still processing with Visa VTS
- SUCCESS: Operation completed successfully
- FAILED: Operation failed (check errorDetails for root cause)
Authorization
BearerAuth TenantHeader JWT Bearer token obtained from the /auth/login endpoint
In: header
Tenant identifier provided by M2P (e.g. ENBDTABBY)
In: header
Request Body
application/json
The requestTraceId from a previous CTP API response
Response Body
application/json
application/json
curl -X POST "https://api.m2p.com/Yappay/click-to-pay/v1/fetchRequestStatus" \ -H "Content-Type: application/json" \ -d '{ "requestTraceId": "351562ba-83cf-11ee-b962-0242ac120002" }'{
"result": {
"status": "SUCCESS",
"event": "CTP_REGISTER_ENTITY_AND_KIT",
"tenant": "ENDTABBY",
"entityId": "70752df2-8d98-4a0b-9a43-ed1e8f39d649",
"errorDetails": null,
"clickToPayCustomerId": "86e9d8c0-8581-4e5c-b5cb-77a856da0b3d",
"clickToPayPaymentInstrumentId": "86e9d8c0-8581-4e5c-b5cb-77a856da0b3d",
"requestTraceId": "351562ba-83cf-11ee-b962-0242ac120002"
},
"exception": null,
"pagination": null
}{
"result": null,
"exception": {
"detailMessage": "Request Trace ID Not Found",
"shortMessage": "Request Trace ID Not Found"
},
"pagination": null
}Get CTP profile with enrolled cards and token details POST
Retrieve the full Click to Pay profile for a customer, including all enrolled cards, CTP status, Visa token details, and payment instrument metadata. This is a synchronous call that fetches live data from the Visa VTS network via the CTP SaaS layer and also syncs the CTP status back to the local M2P database.
Register customer and card with Visa Click to Pay POST
Enroll a customer and their card with the Visa Click to Pay network in a single operation. This is the primary CTP onboarding API. The operation is asynchronous. On success, a requestTraceId is returned which can be used to poll the operation status via /click-to-pay/v1/fetchRequestStatus. Prerequisites: - Customer must be registered on M2P via v3/register or v4/register - Kit must be assigned to the entity - CTP must be enabled for the tenant (BUSINESSCUSTOMFIELD click.to.pay.enable) - Explicit cardholder consent must be obtained Validations performed: 1. entityId must be present and non-null 2. kitNo must be present and non-null 3. Entity must exist as a registered BusinessEntity 4. Customer status must be ACTIVE 5. Kit must be assigned to the entity 6. CTP must be enabled for the tenant When CTP is enabled with ALL scope (Y|ALL in business custom fields), registration is also triggered automatically during customer registration via v3/register and v4/register.
