Customer-initiated flows

Certification cases for CIT Purchase and CIT Authorize.

Part of the Certification guide. Mark your scope on that page before you run these cases. Base payloads and test cards are on the Reference page.


3. CIT Purchase

Applies to: CIT-PURCHASE. Synchronous. Key every decision on status, not on result. result is Success when the evaluation completed and Failed when it did not; a declined rescue is result Success with status DECLINED. When status is DECLINED or CHALLENGE, return the original processor decline to the merchant, not a FlexFactor message. The handling rules for every response are in Section 12.2.

Reference: /evaluate, Payload examples, Workflows §2.1, Appendix A.1, Appendix B.

IDScenarioSetup / actionExpected resultEvidence
CIT-PURCHASE-01Approved rescueBase CIT payloadHTTP 200; result Success; status APPROVED; orderId and orderSessionKey present. GET /v1/orders/{orderId} returns status 7 Completed. order.completed received when WEBHOOKS is InorderId
CIT-PURCHASE-02Declined rescueBase CIT payload with card 4012888888881881 (BIN 401288, last 4 1881)HTTP 200; result Success; success true; status DECLINEDResponse body
CIT-PURCHASE-03CHALLENGEBase CIT payload with card 4111111111111111, CVV 999, holderName Cure Tester, payer.phone +99.0007HTTP 200; status CHALLENGE. challenge.presented received when WEBHOOKS is InResponse body
CIT-PURCHASE-04Amount in centsBase CIT payload with transaction.amount = 12345status APPROVED; GET /v1/orders/{orderId} shows formattedAmount $123.45orderId, order amount

4. CIT Authorize

Applies to: CIT-AUTHORIZE. Same payload as CIT Purchase with transactionType: "AUTHORIZATION". The capture window is 5 minutes by default, measured from the last update to the order, and FlexFactor can set it per merchant. An authorization that is not captured in time expires: the order moves to status 2 Cancelled and order.expired fires. If your merchants capture later than the default window, for example at shipment, agree a longer window with FlexFactor before certification. Run the capture cases in Section 8 and the cancel cases in Section 9 after this section.

Reference: Workflows §2.2, /capture, Appendix A.1, Appendix A.3.

IDScenarioSetup / actionExpected resultEvidence
CIT-AUTHORIZE-01Authorization approvedBase CIT payload with transactionType AUTHORIZATIONHTTP 200; status CAPTUREREQUIRED; orderId present. GET /v1/orders/{orderId} returns status 5 CapturerequiredorderId
CIT-AUTHORIZE-02Capture completes the orderPOST /v1/capture for the CIT-AUTHORIZE-01 order with the full amount, the same currency, and a new idempotencyKeyHTTP 200; status SUCCESS; result null. GET /v1/orders/{orderId} returns status 7 Completed; totalBalancePaid equals the authorized amount. order.completed received when WEBHOOKS is InorderId
CIT-AUTHORIZE-03Authorization declinedBase CIT payload with transactionType AUTHORIZATION and card 4012888888881881HTTP 200; result Success; status DECLINEDResponse body
CIT-AUTHORIZE-04Capture after the windowRepeat CIT-AUTHORIZE-01, wait longer than the configured capture window (5 minutes by default), then captureHTTP 400; no funds captured. GET /v1/orders/{orderId} returns status 2 Cancelled. order.expired received when WEBHOOKS is InorderId, capture response


Did this page help you?