Merchant Initiated - Recurring/Unscheduled

Merchant Initiated Recurring Payments

Merchant-Initiated Transactions (MITs) refer to recurring/unscheduled payments that are authorized through an agreement between you 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, a prior agrement between you and the cardholder is mandatory.

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/unscheduled 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/Unscheduled 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 agreement 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
signatureA parameter to ensure the security and authenticity of API communications. It involves generating a signature using the contents of the API request and secret keys, which is then sent along with the request.
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.

📘

Usage of the API environment endpoints

Please make sure you use the correct endpoint based on your environment

📘

Please refer to creating signature section here

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/v2/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",
    "signature": "4Vgy1C4JSLm8o8uxz4Ewj1pv6KbLQ6dj/hu0ExpTWyI=",
    "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
sessionidstringSessionId generated to complete the MIT transactionYes
signaturestringA parameter to ensure the security and authenticity of API communications. It involves generating a signature using the contents of the API request and secret keys, which is then sent along with the request.Yes
orderidstringorderid of the transaction that has been authenticated. This is only used for CIT paymentsConditional
threeDSecureIdstring3DS ID generated once the payer is authenticated. This is only used for CIT paymentsConditional
CVVstringThe CVV of the cardholder. This is only used for CIT paymentsConditional
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

Signature creation for token

We have a signature parameter in the Pay with Token API to have an additional layer of security during payment processing. To generate the signature, follow the steps below:

  1. Concatenate the string of {MerchantPublicKey, SessionId, TimeStamp)
  2. Hash (SHA-256) this Concatenated string by (Merchant_API_Password)
  3. Convert Hashed Value to Base64Str
curl --location 'https://api.merchant.geidea.net/pgw/api/v2/direct/pay/token' \
--header 'accept: text/plain' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic YTA4N2Y0Y2EtOTg5MC00MDdiLTljMmYtNzYzMDgzNmNjMDIwOmE2ODk5NTU3LTRjYjMtNDFhYi05ZGYzLWE2NTQwYjIzYWI2MA==' \
--data '{
    "orderId": "ad59546a-5a66-4116-d596-08dc4321cecf",
    "threeDSecureId": "5e01ee11-a75b-4ba5-fc89-08dc431d2b42",
    "cvv": "100",
    "sessionid":"d3b4e303-cf9b-4374-f156-08dc4125bcdf",
    "signature": "T0UaaJ2xjCt/hYr4hbvMZ8v07leQgm4SGSPUT5nzmSU=",
    "payWithToken": true,
    "callbackUrl": "https://webhook.site/49bda391-8158-4bdc-a72b-ecd5607c7ad1",
    "signature": "kltZ/y7U9Q4Vifhuo6o9eQAuszvZ/I4WfKV5y7DhWH0=",
    "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": "ad59546a-5a66-4116-d596-08dc4321cecf",
        "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": "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": "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