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.
| ID | Scenario | Setup / action | Expected result | Evidence |
|---|---|---|---|---|
| CIT-PURCHASE-01 | Approved rescue | Base CIT payload | HTTP 200; result Success; status APPROVED; orderId and orderSessionKey present. GET /v1/orders/{orderId} returns status 7 Completed. order.completed received when WEBHOOKS is In | orderId |
| CIT-PURCHASE-02 | Declined rescue | Base CIT payload with card 4012888888881881 (BIN 401288, last 4 1881) | HTTP 200; result Success; success true; status DECLINED | Response body |
| CIT-PURCHASE-03 | CHALLENGE | Base CIT payload with card 4111111111111111, CVV 999, holderName Cure Tester, payer.phone +99.0007 | HTTP 200; status CHALLENGE. challenge.presented received when WEBHOOKS is In | Response body |
| CIT-PURCHASE-04 | Amount in cents | Base CIT payload with transaction.amount = 12345 | status APPROVED; GET /v1/orders/{orderId} shows formattedAmount $123.45 | orderId, 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.
| ID | Scenario | Setup / action | Expected result | Evidence |
|---|---|---|---|---|
| CIT-AUTHORIZE-01 | Authorization approved | Base CIT payload with transactionType AUTHORIZATION | HTTP 200; status CAPTUREREQUIRED; orderId present. GET /v1/orders/{orderId} returns status 5 Capturerequired | orderId |
| CIT-AUTHORIZE-02 | Capture completes the order | POST /v1/capture for the CIT-AUTHORIZE-01 order with the full amount, the same currency, and a new idempotencyKey | HTTP 200; status SUCCESS; result null. GET /v1/orders/{orderId} returns status 7 Completed; totalBalancePaid equals the authorized amount. order.completed received when WEBHOOKS is In | orderId |
| CIT-AUTHORIZE-03 | Authorization declined | Base CIT payload with transactionType AUTHORIZATION and card 4012888888881881 | HTTP 200; result Success; status DECLINED | Response body |
| CIT-AUTHORIZE-04 | Capture after the window | Repeat CIT-AUTHORIZE-01, wait longer than the configured capture window (5 minutes by default), then capture | HTTP 400; no funds captured. GET /v1/orders/{orderId} returns status 2 Cancelled. order.expired received when WEBHOOKS is In | orderId, capture response |
Updated about 8 hours ago

