Recurring - Merchant Initiated

Merchant Initiated Recurring Payments

Merchant-Initiated Transactions (MITs) refer to recurring payments that are authorized through an agreement between you, the merchant, and the cardholder. Once this agreement is established, you have the ability to initiate future payments from the card without requiring direct involvement from the cardholder. It's important to note that since the cardholder is not physically present during an MIT, cardholder authentication is not conducted.

MITs are always associated with a customer who has made a payment previously and consented to save their card details securely. To ensure utmost security, it is crucial that the initial payment is processed using 3DS (strong customer authentication).

By leveraging MITs and implementing necessary security measures, you can streamline recurring payments for your customers, providing a convenient and seamless payment experience.

Merchant-Initiated Transaction Examples

Merchant-Initiated Transactions (MITs) encompass a wide range of payment scenarios beyond just subscriptions. They offer various benefits to merchants in different situations, which include:

  1. Prepayments: In this scenario, a tenant authorizes their landlord to deduct rent payments in advance at regular intervals from their account. This ensures timely and hassle-free rental payments.

  2. Installments: Installment plans are commonly used by customers who prefer "buy now, pay later" services. It allows them to make expensive purchases and pay off the balance in fixed amount payments over a specified period, offering flexibility and affordability.

  3. Reauthorization: This refers to making additional purchases after completing the initial agreed-upon amount or time. For example, it could involve split or delayed shipments, extended car rentals, or prolonged hotel stays. This feature enables customers to seamlessly continue their transactions without the need for additional authorization steps.

By leveraging the flexibility of MITs in these different scenarios, merchants can provide enhanced convenience and options to their customers, facilitating smooth and tailored payment experiences.

Flow of Merchant-Initiated Recurring Payments

When initializing the Hosted Payment Page and creating the SessionID, ensure that the "cardOnFile" parameter is set to true. Additionally, the merchant has to include the "agreementID" and "agreementType" in the request. This ensures that the initial payment is processed with strong customer authentication using 3DS and should result in a successful transaction. Also, for executing a MIT, the agreementID and agreementType parameters determine the kind of tokenized transaction.
Upon successful completion of the initial payment, you will receive a tokenldthrough the order callback URL.
The generation of the tokenld indicates that Geidea Gateway has securely stored the card details for future use, enabling you to make Merchant-Initiatedpayments conveniently.

To initiate a Session Creation API call for token creation you will need to provide the following fields. These are mandatory parameters to execute a MIT.

ParameterDescription
amountThe total amount value of the payment. This parameter is required, and the format is a double - a number with 2 digits after the decimal point. For example 19.99
currencyThe currency of the payment. This is a 3-digit alphabetic code, following the ISO 4217 currency code standard. For example: EGP

List of available currencies:
EGP Egyptian Pound
To enable multicurrency for your account - contact our support team.
cardOnFiletrue
cofAgreementThe "cofAgreement" object includes the ID and type of the card-on-file (COF) agreement for storing customer card information. The agreementID, agreementType, and tokenId received after executing the 'Create session' request are required to execute a MIT.
IdThis string value represents the unique identifier of the card-on-file agreement, which must be agreed upon between the merchant and the payment gateway. Using a unique value for each agreement is recommended to prevent confusion or conflicts.
TypeThis string value represents the type of card-on-file agreement to use. The available types include RECURRING and UNSCHEDULED, and they determine how the customer's card information is stored and processed.

Below is an example of creating a session for payment of 10.00 EGP with tokenization parameters.

curl --location 'https://api.merchant.geidea.net/payment-intent/api/v1/direct/session' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic YTA4N2Y0Y2EtOTg5MC00MDdiLTljMmYtNzYzMDgzNmNjMDIwOmE2ODk5NTU3LTRjYjMtNDFhYi05ZGYzLWE2NTQwYjIzYWI2MA==' \
--data '{
    "amount": 10,
    "currency": "EGP",
    "callbackUrl": "https://webhook.site/49bda391-8158-4bdc-a72b-ecd5607c7ad1",
    "language": "en",
    "merchantReferenceId": "test-site-5827a75dc9764568ac02457b1bd7b6",
    "cardOnFile": true,
      "cofAgreement": {
    "id": "123456789",
    "type": "UNSCHEDULED"
  }
   
}'
<?php
$client = new Client();
$headers = [
  'Content-Type' => 'application/json',
  'Authorization' => 'Basic YTA4N2Y0Y2EtOTg5MC00MDdiLTljMmYtNzYzMDgzNmNjMDIwOmE2ODk5NTU3LTRjYjMtNDFhYi05ZGYzLWE2NTQwYjIzYWI2MA=='
];
$body = '{
  "amount": 101,
  "currency": "SAR",
  "callbackUrl": "https://webhook.site/49bda391-8158-4bdc-a72b-ecd5607c7ad1",
  "language": "en",
  "merchantReferenceId": "test-site-5827a75dc9764568ac02457b1bd7b6",
  "cardOnFile": true,
  "cofAgreement": {
    "id": "11222",
    "type": "UNSCHEDULED"
  }
}';
$request = new Request('POST', 'https://api.merchant.geidea.net/payment-intent/api/v1/direct/session', $headers, $body);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();

Below is an example of a successful response you can expect to receive for the request above.

{
    "session": {
        "id": "9c52785f-f092-4977-7816-08db602e2587",
        "amount": 10,
        "currency": "EGP",
        "callbackUrl": "https://webhook.site/b64f56f2-9423-4368-9aa3-e2de7f7bae33",
        "returnUrl": "https://someurl.com",
        "expiryDate": "2023-05-31T21:17:00.8733674Z",
        "status": "Initiated",
        "merchantId": "6876f6bc-f8eb-4253-f160-08d973705ffb",
        "merchantPublicKey": "6620c3e2-5088-41a8-8be6-98c003153932",
    },
    "responseMessage": "Success",
    "detailedResponseMessage": "The operation was successful",
    "language": "EN",
    "responseCode": "000",
    "detailedResponseCode": "000"
}

When the transaction is approved if the "cardOnFile: True" parameter is included in the request, the merchant will receive a Token ID in the response. This Token ID can be used by the merchant for Merchant-Initiated Recurring Payments.

Refer to the following instructions when the "detailedStatus" is "Paid." Upon receiving this status, you will obtain the tokenID in the response. You can store this token for future reference.

	{
  "order": {
    "orderId": "9e238617-1ae9-469f-02f7-08db602e5619",
    "amount": 101,
    "tipAmount": 0,
    "convenienceFeeAmount": 0,
    "totalAmount": 101,
    "settleAmount": 101,
    "currency": "SAR",
    "settleCurrency": "SAR",
    "language": "en",
    "detailedStatus": "Paid",
    "status": "Success",
    "threeDSecureId": "98905134-842c-4428-ca9f-08db602e564c",
    "merchantId": "e80ece7e-fb2a-4c0b-de94-08d8a29a107b",
    "merchantPublicKey": "a087f4ca-9890-407b-9c2f-7630836cc020",
    "parentOrderId": null,
    "merchantReferenceId": "test-site-5827a75dc9764568ac02457b1bd7b6",
    "mcc": null,
    "callbackUrl": "https://webhook.site/cd1f0358-4088-4d75-866e-5e5eba5e45fd",
    "customerEmail": null,
    "billingAddress": {
      "countryCode": null,
      "street": null,
      "city": null,
      "postCode": null
    },
    "shippingAddress": {
      "countryCode": null,
      "street": null,
      "city": null,
      "postCode": null
    },
    "returnUrl": null,
    "cardOnFile": true,
    "tokenId": "4c003fc3-7176-4f0a-6463-08db7cd2152f",
    "initiatedBy": "Internet",
    "agreementId"123456789,
    "agreementType": Unscheduled,
    "paymentOperation": "Pay",
    "custom": null,
    "paymentIntent": null,
    "restrictPaymentMethods": false,
    "paymentMethods": null,
    "platform": null,
    "statementDescriptor": null,
    "description": null,
    "createCustomer": false,
    "setDefaultPaymentMethod": false,
    "customerReferenceId": null,
    "customerId": null,
    "recurrence": null,
    "transactions": [
      {
        "transactionId": "98905134-842c-4428-ca9f-08db602e564c",
        "type": "Authentication",
        "status": "Success",
        "amount": 101,
        "currency": "SAR",
        "source": "HPP",
        "authorizationCode": null,
        "rrn": null,
        "stan": "0",
        "paymentMethod": {
          "type": "Card",
          "brand": "visa",
          "cardholderName": "test",
          "maskedCardNumber": "444000******0010",
          "wallet": null,
          "expiryDate": {
            "month": 1,
            "year": 39
          },
          "sameBank": false,
          "issuingCountry": null,
          "fundingType": null,
          "issuingBank": null,
          "cardCategory": null
        },
        "codes": {
          "acquirerCode": null,
          "acquirerMessage": null,
          "responseCode": "000",
          "responseMessage": "Success",
          "detailedResponseCode": "000",
          "detailedResponseMessage": "The operation was successful"
        },
        "authenticationDetails": {
          "acsEci": "05",
          "authenticationToken": "kHyn+7YFi1EUAREAAAAvNUe6Hv8=",
          "paResStatus": null,
          "veResEnrolled": null,
          "xid": "d5f94ec9-f30d-404d-9fb4-d909cc1dac32",
          "accountAuthenticationValue": null,
          "proofXml": null,
          "threeDSecureServerTransactionId": null,
          "acsTransactionId": "b806095e-1a86-45cc-bf66-720658b3e003",
          "directoryServerId": "A999999999",
          "dsTransactionId": "d5f94ec9-f30d-404d-9fb4-d909cc1dac32",
          "methodCompleted": false,
          "methodSupported": "NOT_SUPPORTED",
          "protocolVersion": "2.1.0",
          "requestorId": "10065253*MTTEST999999111_MPGS",
          "requestorName": "KSA ECR",
          "transactionStatus": "Y",
          "statusReasonCode": null
        },
        "postilionDetails": null,
        "terminalDetails": null,
        "meezaDetails": null,
        "bnplDetails": null,
        "bankInstallmentDetails": null,
        "correlationId": "30178b00-d9ef-418f-af97-674e16bc2ce2",
        "parentTransactionId": null,
        "paymentAttemptId": "194d374d-a264-44f0-98de-617bfb93b7d9",
        "acquirer": {
          "additionalResponseData": null,
          "batch": null,
          "customData": null,
          "date": null,
          "id": null,
          "merchantId": "3000000023",
          "settlementDate": null,
          "time": null,
          "timeZone": null,
          "transactionId": null
        },
        "authorizationResponse": {
          "autoExpiry": null,
          "avsCode": null,
          "cardLevelIndicator": null,
          "cardSecurityCodeError": null,
          "cardSecurityCodePresenceIndicator": null,
          "commercialCard": null,
          "commercialCardIndicator": null,
          "financialNetworkCode": null,
          "financialNetworkDate": null,
          "marketSpecificData": null,
          "merchantAdviceCode": null,
          "paySvcData": null,
          "posData": null,
          "posEntryMode": null,
          "posEntryModeChanged": null,
          "processingCode": null,
          "responseCode": null,
          "date": null,
          "responseMessage": null,
          "returnAci": null,
          "time": null,
          "timeZone": null,
          "trackQuality": null,
          "transactionIdentifier": null,
          "transactionIntegrityClass": null,
          "validationCode": null,
          "vpasResponse": null
        },
        "madaDetails": null,
        "createdDate": "2023-05-31T05:26:46.544697",
        "createdBy": "PGW",
        "updatedDate": "2023-05-31T05:26:55.8477674",
        "updatedBy": "PGW"
      },
      {
        "transactionId": "96451299-d3a3-4717-7d64-08db602e760a",
        "type": "Pay",
        "status": "Success",
        "amount": 101,
        "currency": "SAR",
        "source": "HPP",
        "authorizationCode": "100086",
        "rrn": "315105100086",
        "stan": "100086",
        "paymentMethod": {
          "type": "Card",
          "brand": "visa",
          "cardholderName": "test",
          "maskedCardNumber": "444000******0010",
          "wallet": null,
          "expiryDate": {
            "month": 1,
            "year": 39
          },
          "sameBank": false,
          "issuingCountry": null,
          "fundingType": null,
          "issuingBank": null,
          "cardCategory": null
        },
        "codes": {
          "acquirerCode": "00",
          "acquirerMessage": "Approved",
          "responseCode": "000",
          "responseMessage": "Success",
          "detailedResponseCode": "000",
          "detailedResponseMessage": "The operation was successful"
        },
        "authenticationDetails": null,
        "postilionDetails": null,
        "terminalDetails": null,
        "meezaDetails": null,
        "bnplDetails": null,
        "bankInstallmentDetails": null,
        "correlationId": "3268673d-f8a6-4163-8d89-c6ebb935f5d6",
        "parentTransactionId": null,
        "paymentAttemptId": "194d374d-a264-44f0-98de-617bfb93b7d9",
        "acquirer": {
          "additionalResponseData": null,
          "batch": 20230531,
          "customData": null,
          "date": "0531",
          "id": "RIYADBANK_S2I",
          "merchantId": "3000000023",
          "settlementDate": "2023-05-31T00:00:00",
          "time": null,
          "timeZone": "+0300",
          "transactionId": "123456789012345"
        },
        "authorizationResponse": {
          "autoExpiry": null,
          "avsCode": null,
          "cardLevelIndicator": "88",
          "cardSecurityCodeError": null,
          "cardSecurityCodePresenceIndicator": null,
          "commercialCard": "888",
          "commercialCardIndicator": "3",
          "financialNetworkCode": null,
          "financialNetworkDate": null,
          "marketSpecificData": "8",
          "merchantAdviceCode": null,
          "paySvcData": null,
          "posData": "1025100006600",
          "posEntryMode": "812",
          "posEntryModeChanged": null,
          "processingCode": "003000",
          "responseCode": "00",
          "date": null,
          "responseMessage": null,
          "returnAci": "8",
          "time": null,
          "timeZone": null,
          "trackQuality": null,
          "transactionIdentifier": "123456789012345",
          "transactionIntegrityClass": null,
          "validationCode": "6789",
          "vpasResponse": null
        },
        "madaDetails": null,
        "createdDate": "2023-05-31T05:26:56.7291029",
        "createdBy": "PGW",
        "updatedDate": "2023-05-31T05:26:59.9908664Z",
        "updatedBy": "PGW"
      }
    ],
    "orderItems": [],
    "isTokenPayment": false,
    "paymentMethod": {
      "type": "Card",
      "brand": "visa",
      "cardholderName": "test",
      "maskedCardNumber": "444000******0010",
      "wallet": null,
      "expiryDate": {
        "month": 1,
        "year": 39
      },
      "sameBank": false,
      "issuingCountry": null,
      "fundingType": null,
      "issuingBank": null,
      "cardCategory": null
    },
    "totalAuthorizedAmount": 101,
    "totalCapturedAmount": 101,
    "totalRefundedAmount": 0,
    "orderSource": "GeideaGateway",
    "paymentBrands": [
      "visa"
    ],
    "multiCurrency": {
      "authCurrency": "SAR",
      "authAmount": 101,
      "settleCurrency": "SAR",
      "settleAmount": 101,
      "exchangeRate": null,
      "exchangeFeePercentage": null,
      "exchangeFeeAmount": null
    },
    "isTest": true,
    "cashOnDelivery": false,
    "amountToCollect": null,
    "isDownPayment": false,
    "exchangeRate": null,
    "exchangeFeePercentage": null,
    "exchangeFeeAmount": null,
    "deviceId": "14b90417-2522-4479-4b5b-08da6a10e762",
    "gatewayDecision": "ContinueToPay",
    "subscriptionId": null,
    "subscriptionOccurrenceId": null,
    "customerPhoneNumber": null,
    "customerPhoneCountryCode": null,
    "createdDate": "2023-05-31T05:26:46.544697",
    "createdBy": "PGW",
    "updatedDate": "2023-05-31T05:26:50.8563999",
    "updatedBy": "PGW"
  },
  "signature": "C3sjR0O+mcrORORMU4s/MgrvxgJW/2wmROWdoVAQosI="
}

MIT Transaction

Below is the list of all fields and an example of executing an MIT transaction for payment of 101.00 EGP with the token generated previously. We can carry out an unscheduled payment or set up a recurring payment for a defined frequency.

ParameterDatatypeDescriptionMandatory
amountstringThe total amount for the transaction. Amount must be greater than 0.01. Must not have more than 2 digits after the decimal point.Yes
currencystringThe currency of the payment. This is a 3-digit alphabetic code, following the ISO 4217 currency code standard.Yes
tokenIdstringIf you have a previously saved token which was generated by Geidea payment gateway, you can submit it using this parameter. This will lead the customer through a shortened payment flow, where they don't have to re-enter their card number - Geidea will use the card on file associated with this token.Yes
initiatedBystringChannel through which the transaction has been initiated. Must be set to 'Merchant' for Merchant Initiated Transactions.Yes
agreementIdstringThis is a string value that represents the unique identifier of the card-on-file agreement to use. This ID must be agreed upon between the merchant and the payment gateway before the COF service can be used. It is recommended to use a unique value for each card-on-file agreement to avoid confusion or conflicts.Yes
agreementTypestringThis is a string value that represents the type of card-on-file agreement to use. There are different types of card-on-file agreements available, and the type of agreement used can affect how the customer's card information is stored and processed. The currently supported values are RECURRING and UNSCHEDULED.Yes
payWithTokenbooleanFlag used to indicate to pay with tokenNo
callbackUrlstringThe URL where the payment gateway should send the callback after the transaction is completed. It must have a valid SSL certificate and start with 'https://'No
merchantReferenceIdstringA unique merchant identifier for the order. You can send your own reference ID using this field.No
isCreateCustomerEnabledbooleanIf this is set to true, a customer account is created on Geidea platform. This must be set to false, when customer ID is not null. When this is set to true, customerId must not be passed.No
isSetPaymentMethodEnabledbooleanIf this is set to true, then the customer is allowed to use the payment gatewayNo
paymentOperationstringThe type of payment operation to be performed. This is an optional parameter - if not submitted, the Geidea gateway will process a 'Pay' operation by default.No
curl --location 'https://api.merchant.geidea.net/pgw/api/v1/direct/pay/token' \
--header 'accept: text/plain' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic YTA4N2Y0Y2EtOTg5MC00MDdiLTljMmYtNzYzMDgzNmNjMDIwOmE2ODk5NTU3LTRjYjMtNDFhYi05ZGYzLWE2NTQwYjIzYWI2MA==' \
--data '{
    "amount": 101,
    "payWithToken": true,
    "currency": "EGP",
    "callbackUrl": "https://webhook.site/49bda391-8158-4bdc-a72b-ecd5607c7ad1",
    "tokenId": "03ce28f7-5a53-46d8-822e-08db663a4c5b",
    "merchantReferenceId": "MerchantReferenceId",
    "isCreateCustomerEnabled": false,
    "isSetPaymentMethodEnabled": false,
    "paymentOperation": "pay",
    "initiatedBy": "Merchant",
    "agreementId": "123456789",
    "agreementType": "Unscheduled"
 
}'
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.merchant.geidea.net/pgw/api/v1/direct/pay/token',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "amount": 101,
    "payWithToken": true,
    "currency": "SAR",
    "callbackUrl": "https://webhook.site/49bda391-8158-4bdc-a72b-ecd5607c7ad1",
    "tokenId": "03ce28f7-5a53-46d8-822e-08db663a4c5b",
    "merchantReferenceId": "MerchantReferenceId",
    "isCreateCustomerEnabled": false,
    "isSetPaymentMethodEnabled": false,
    "paymentOperation": "pay",
    "initiatedBy": "Merchant",
    "agreementId": "123456789",
    "agreementType": "Unscheduled"
 
}',
  CURLOPT_HTTPHEADER => array(
    'accept: text/plain',
    'Content-Type: application/json',
    'Authorization: Basic YTA4N2Y0Y2EtOTg5MC00MDdiLTljMmYtNzYzMDgzNmNjMDIwOmE2ODk5NTU3LTRjYjMtNDFhYi05ZGYzLWE2NTQwYjIzYWI2MA=='
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Find below the response after executing the MIT payment:

{
    "order": {
        "orderId": "f8ca8309-0b5a-4d74-eafc-08db7dff6bb6",
        "amount": 101,
        "tipAmount": 0,
        "convenienceFeeAmount": 0,
        "totalAmount": 101,
        "settleAmount": 101,
        "currency": "EGP",
        "settleCurrency": "EGP",
        "language": "EN",
        "detailedStatus": "Paid",
        "status": "Success",
        "threeDSecureId": null,
        "merchantId": "21f3eeab-c3d3-4128-4350-08dad18797e2",
        "merchantPublicKey": "665fae4b-5108-45de-9b86-a2c30a867d08",
        "parentOrderId": "36f8dbba-9d3e-429c-eaeb-08db7dff6bb6",
        "merchantReferenceId": "MerchantReferenceId",
        "mcc": null,
        "callbackUrl": "https://webhook.site/a2159a6d-52be-4352-b45d-a3d54e196fdd",
        "customerEmail": null,
        "billingAddress": null,
        "shippingAddress": null,
        "returnUrl": null,
        "cardOnFile": false,
        "tokenId": "4c003fc3-7176-4f0a-6463-08db7cd2152f",
        "initiatedBy": "Merchant",
        "agreementId": "12232",
        "agreementType": "Unscheduled",
        "paymentOperation": "Pay",
        "custom": null,
        "paymentIntent": null,
        "restrictPaymentMethods": false,
        "paymentMethods": null,
        "platform": null,
        "statementDescriptor": null,
        "description": null,
        "createCustomer": false,
        "setDefaultPaymentMethod": false,
        "customerReferenceId": null,
        "customerId": null,
        "recurrence": null,
        "transactions": [
            {
                "transactionId": "435adb5c-6a4d-4d72-e400-08db7dffae69",
                "type": "Pay",
                "status": "Success",
                "amount": 101.00,
                "currency": "EGP",
                "source": "DirectAPI",
                "authorizationCode": "177928",
                "rrn": "213005177928",
                "stan": "Stan",
                "paymentMethod": {
                    "type": "Card",
                    "brand": "visa",
                    "cardholderName": "test",
                    "maskedCardNumber": "411111******1111",
                    "wallet": null,
                    "expiryDate": {
                        "month": 11,
                        "year": 24
                    },
                    "sameBank": false,
                    "issuingCountry": "USA",
                    "fundingType": "CREDIT",
                    "issuingBank": "JPMORGAN CHASE BANK, N.A.",
                    "cardCategory": ""
                },
                "codes": {
                    "acquirerCode": "00",
                    "acquirerMessage": "Approved",
                    "responseCode": "000",
                    "responseMessage": "Success",
                    "detailedResponseCode": "000",
                    "detailedResponseMessage": "The operation was successful"
                },
                "authenticationDetails": null,
                "postilionDetails": null,
                "terminalDetails": null,
                "meezaDetails": null,
                "bnplDetails": null,
                "bankInstallmentDetails": null,
                "correlationId": "e86c19a8-a6e3-4175-81f3-13ccffc415d8",
                "parentTransactionId": null,
                "paymentAttemptId": "474b503e-8240-41fb-a995-517ef34eb4f9",
                "acquirer": {
                    "additionalResponseData": "AdditionalResponseData",
                    "batch": 145,
                    "customData": "CustomData",
                    "date": "0709",
                    "id": "Id",
                    "merchantId": "MerchantId",
                    "settlementDate": "2023-07-09T00:00:00",
                    "time": "Time",
                    "timeZone": "TimeZone",
                    "transactionId": "TransactionId"
                },
                "authorizationResponse": {
                    "autoExpiry": "2023-07-09T13:21:22.8627248Z",
                    "avsCode": "AvsCode",
                    "cardLevelIndicator": "CardLevelIndicator",
                    "cardSecurityCodeError": "6",
                    "cardSecurityCodePresenceIndicator": "CardSecurityCodePresenceIndicator",
                    "commercialCard": "CommercialCard",
                    "commercialCardIndicator": "d",
                    "financialNetworkCode": "FinancialNetworkCode",
                    "financialNetworkDate": "2023-07-06T13:21:22.8627254Z",
                    "marketSpecificData": "M",
                    "merchantAdviceCode": "MerchantAdviceCode",
                    "paySvcData": "PaySvcData",
                    "posData": "PosData",
                    "posEntryMode": "PosEntryMode",
                    "posEntryModeChanged": "d",
                    "processingCode": "ProcessingCode",
                    "responseCode": "ResponseCode",
                    "date": "0706",
                    "responseMessage": "ResponseMessage",
                    "returnAci": "R",
                    "time": "132122",
                    "timeZone": "TimeZone",
                    "trackQuality": "TrackQuality",
                    "transactionIdentifier": "TransactionIdentifier",
                    "transactionIntegrityClass": "TransactionIntegrityClass",
                    "validationCode": "ValidationCode",
                    "vpasResponse": "c"
                },
                "madaDetails": null,
                "refundType": null,
                "refundStatus": null,
                "createdDate": "2023-07-06T13:21:22.7659511",
                "createdBy": "PGW",
                "updatedDate": "2023-07-06T13:21:22.9193671Z",
                "updatedBy": "PGW"
            }
        ],
        "orderItems": [],
        "isTokenPayment": true,
        "paymentMethod": {
            "type": "Card",
            "brand": "visa",
            "cardholderName": "test",
            "maskedCardNumber": "411111******1111",
            "wallet": null,
            "expiryDate": {
                "month": 11,
                "year": 24
            },
            "sameBank": false,
            "issuingCountry": "USA",
            "fundingType": "CREDIT",
            "issuingBank": "JPMORGAN CHASE BANK, N.A.",
            "cardCategory": ""
        },
        "totalAuthorizedAmount": 101.00,
        "totalCapturedAmount": 101.00,
        "totalRefundedAmount": 0,
        "orderSource": "GeideaGateway",
        "paymentBrands": [
            "visa"
        ],
        "multiCurrency": {
            "authCurrency": "EGP",
            "authAmount": 101,
            "settleCurrency": "EGP",
            "settleAmount": 101,
            "exchangeRate": null,
            "exchangeFeePercentage": null,
            "exchangeFeeAmount": null
        },
        "isTest": true,
        "cashOnDelivery": false,
        "amountToCollect": null,
        "isDownPayment": false,
        "exchangeRate": null,
        "exchangeFeePercentage": null,
        "exchangeFeeAmount": null,
        "deviceId": null,
        "gatewayDecision": "ContinueToPayer",
        "subscriptionId": null,
        "subscriptionOccurrenceId": null,
        "customerPhoneNumber": null,
        "customerPhoneCountryCode": null,
        "refundType": null,
        "refundStatus": null,
        "bankId": null,
        "isPayWithToken": true,
        "createdDate": "2023-07-06T13:21:22.7138101Z",
        "createdBy": "PGW",
        "updatedDate": "2023-07-06T13:21:22.7138101Z",
        "updatedBy": null
    },
    "responseMessage": "Success",
    "detailedResponseMessage": "The operation was successful",
    "language": "EN",
    "responseCode": "000",
    "detailedResponseCode": "000"
}

User Flow

Initial Authorization

Initial Authorization

Merchant Initiated - Direct Debit

Merchant Initiated - Direct Debit