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 an example of executing a MIT transaction for payment of 101.00 EGP with the token generated previously. We can carry out an unscheduled payment or a set up a recurring payment for a defined frequency.

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