---
updatedAt: 2025-06-25T21:24:28.000Z
agentTools:
  projectIndex: https://docs.geidea.net/llms.txt
---

# Meeza QR APIs

You can now customize the checkout flow to enable your customers to pay using QR codes.

You can do it in the following ways

| Payment Type                                                    | Description                                                                                                                                                                                                                        | API                                                                                       |
| :-------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- |
| Presenting QR code in the checkout flow                         | During the checkout process, you can call this API to generate a QR code and present to the customer. The customer then scans the QR code using his Meeza mobile app and completes the payment                                     | [Create QR Code API](https://docs.geidea.net/docs/meeza-qr-apis#create-qr-code)           |
| Initiating a request to payment notification to customer mobile | During the checkout process, you can call this API to initiate a payment request notification directly to the mobile app of the customer. The customer then uses the Meeza mobile app on his/her mobile and completes the payment. | [Request for Payment API](https://docs.geidea.net/docs/meeza-qr-apis#request-for-payment) |

# Create QR Code API

You can initiate a QR based payment using the [Create QR Code API](https://docs.geidea.net/reference/create-qr-code). The outcome of this API call is to generate a QR code that you can present to the customer during the checkout process.

> 📘 You must have a valid session ID to initiate this API call.
>
> You can get a session ID using the [Create Session API](https://docs.geidea.net/reference/create-session-v2).

## API Request

To perform an Initiate authentication API call, you will need to provide the following required fields.

| Parameter           | Datatype | Description                                                                                                                                                                                                                                                                                                                               | Mandatory |
| ------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- |
| `sessionId`         | string   | A session ID is a unique identifier that a server generates as part of the create session API call and assigns to a merchant transaction for the duration of the session (15 min). This is the Id parameter in the session object, in the response of the [Create Session API](https://docs.geidea.net/reference/create-session-v2) call. | Yes       |
| `merchantPublicKey` | string   | The unique identifier for the session given added by the merchant. Must be a valid UUID.                                                                                                                                                                                                                                                  | Yes       |

You can find a complete list of parameters which can be used with the Create QR Code API [here](https://dash.readme.com/project/geidea/v2.0/refs/create-qr-code).

Below is an example of executing an Create QR Code API call for a payment with the mandatory parameters.

```curl
curl --location 'https://api.gd-pprod-infra.net/payment-intent/api/v2/meezaPayment/image/base64' \
--header 'authority: api.merchant.geidea.net' \
--header 'accept: */*' \
--header 'accept-language: en-GB,en;q=0.9,ar-EG;q=0.8,ar;q=0.7,en-US;q=0.6' \
--header 'content-type: application/json;charset=UTF-8' \
--header 'origin: https://www.merchant.geidea.net' \
--header 'referer: https://www.merchant.geidea.net/' \
--header 'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"' \
--header 'sec-ch-ua-mobile: ?0' \
--header 'sec-ch-ua-platform: "Windows"' \
--header 'sec-fetch-dest: empty' \
--header 'sec-fetch-mode: cors' \
--header 'sec-fetch-site: same-site' \
--header 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36' \
--header 'x-language: en' \
--header 'Authorization: Basic MmE2YmZkZWYtM2E1MC00MGRhLTk3MTgtNDMwZDE1MjRmNjMyOjRlZTA0ODY5LWZkMzYtNDJlZS1iNmNkLTgyNTBhM2NkZTg5Yw==' \
--data '{
    "merchantPublicKey": "2a6bfdef-3a50-40da-9718-430d1524f632",    
    "sessionId": "d267e391-a553-4a5e-ba77-08dc5fa2efa2"
}'
```
```php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.gd-pprod-infra.net/payment-intent/api/v2/meezaPayment/image/base64',
  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 =>'{
    "merchantPublicKey": "2a6bfdef-3a50-40da-9718-430d1524f632",    
    "sessionId": "d267e391-a553-4a5e-ba77-08dc5fa2efa2"
}',
  CURLOPT_HTTPHEADER => array(
    'authority: api.merchant.geidea.net',
    'accept: */*',
    'accept-language: en-GB,en;q=0.9,ar-EG;q=0.8,ar;q=0.7,en-US;q=0.6',
    'content-type: application/json;charset=UTF-8',
    'origin: https://www.merchant.geidea.net',
    'referer: https://www.merchant.geidea.net/',
    'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
    'sec-ch-ua-mobile: ?0',
    'sec-ch-ua-platform: "Windows"',
    'sec-fetch-dest: empty',
    'sec-fetch-mode: cors',
    'sec-fetch-site: same-site',
    'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
    'x-language: en',
    'Authorization: Basic MmE2YmZkZWYtM2E1MC00MGRhLTk3MTgtNDMwZDE1MjRmNjMyOjRlZTA0ODY5LWZkMzYtNDJlZS1iNmNkLTgyNTBhM2NkZTg5Yw=='
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

```

## API Response

The key parameters sent in the API response are as follows:

| Parameter               | Description                                                                     |
| :---------------------- | :------------------------------------------------------------------------------ |
| image                   | A base 64 string representation of the QR image to be presented to the customer |
| type                    | Proposed type of image to be rendered using the base-64 string as input         |
| message                 |                                                                                 |
| paymentIntentId         | Payment Request ID associated with the transaction.                             |
| responseMessage         | Detailed message associated with response from gateway                          |
| detailedResponseMessage | Message associated with response from gateway                                   |
| language                | Language used for API request                                                   |
| responseCode            | Code associated with response message returned by the gateway                   |
| detailedResponseCode    | Detailed Code associated with response message returned by the gateway          |

A sample response to the Create QR API call is as follows:

```json
{
    "image": "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",
    "type": "image/png",
    "message": "00020101021226330016A000000732100001010967582629352044011530381854071850.005802EG5905فاليو6013ARISH     21D623005220NBU-JRMl0G6_QjcX6Lvog060064150002ar0105فاليو6304B9CB",
    "paymentIntentId": "f854d0d0-4c94-4197-bafd-08dc5fa2efa2",
    "responseMessage": "Success",
    "detailedResponseMessage": "The operation was successful",
    "language": "EN",
    "responseCode": "000",
    "detailedResponseCode": "000"
}
```

# Request for Payment API

You can initiate a payment request directly to the Meeza mobile app of the customer using the [Request for Payment API](https://docs.geidea.net/reference/request-to-pay). The outcome of this API call is to initiate a payment request notification directly to the Meeza mobile app of the customer during the checkout process.

> 📘 You must have a valid session ID and Payment Intent ID to initiate this API call.
>
> You can get the session ID using the [Create Session API](https://docs.geidea.net/reference/create-session-v2) call and the Payment Intent ID using the [Create QR Code API](https://docs.geidea.net/reference/create-qr-code) call.

## API Request

To perform an Request to Pay API call, you will need to provide the following required fields.

| Parameter           | Datatype | Description                                                                                                                       | Mandatory |
| ------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------- | :-------- |
| `receiverId`        | string   | Mobile number of the customer to whose mobile the request for payment notification must be sent. Number must begin with zero (0). | Yes       |
| `merchantPublicKey` | string   | The unique identifier for the session given added by the merchant. Must be a valid UUID.                                          | Yes       |
| `paymentIntentId`   | string   | Payment Intent ID generated for the QR payment request as part of the Create QR code API call. Must be a valid UUID.              | Yes       |
| `sessionId`         | string   | Unique ID for the payment session. Generated using the Create Session API call. Must be a valid UUID                              | Yes       |

You can find a complete list of parameters which can be used with the Create QR Code API [here](https://dash.readme.com/project/geidea/v2.0/refs/create-qr-code).

Below is an example of executing an Request to Pay API call for a payment with the mandatory parameters.

```curl
curl --location 'https://api-test.gd-azure-dev.net/meeza/api/v2/direct/transaction/requestToPay' \
--header 'authority: api.merchant.geidea.net' \
--header 'accept: */*' \
--header 'accept-language: en-GB,en;q=0.9,ar-EG;q=0.8,ar;q=0.7,en-US;q=0.6' \
--header 'content-type: application/json;charset=UTF-8' \
--header 'origin: https://www.merchant.geidea.net' \
--header 'referer: https://www.merchant.geidea.net/' \
--header 'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"' \
--header 'sec-ch-ua-mobile: ?0' \
--header 'sec-ch-ua-platform: "Windows"' \
--header 'sec-fetch-dest: empty' \
--header 'sec-fetch-mode: cors' \
--header 'sec-fetch-site: same-site' \
--header 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36' \
--header 'x-language: en' \
--header 'Authorization: Basic MjE5MDVhOTEtNDgxZS00YWExLThlNjktODYxYTU1ZTRhYzc0OjI2NWFjYWVjLWY0OWItNDU5MC05MDVmLWZhOTk0OTgyZGVhNA==' \
--data '{
    "receiverId": "01115725100",
    "merchantPublicKey": "21905a91-481e-4aa1-8e69-861a55e4ac74",
    "paymentIntentId": "0688a8cc-d73e-4218-1247-08dc48bd35b5",
    "sessionId": "f53f2cb0-1664-4451-f58b-08dc69147fdd"
}'
```
```php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api-test.gd-azure-dev.net/meeza/api/v2/direct/transaction/requestToPay',
  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 =>'{
    "receiverId": "01115725100",
    "merchantPublicKey": "21905a91-481e-4aa1-8e69-861a55e4ac74",
    "paymentIntentId": "0688a8cc-d73e-4218-1247-08dc48bd35b5",
    "sessionId": "f53f2cb0-1664-4451-f58b-08dc69147fdd"
}',
  CURLOPT_HTTPHEADER => array(
    'authority: api.merchant.geidea.net',
    'accept: */*',
    'accept-language: en-GB,en;q=0.9,ar-EG;q=0.8,ar;q=0.7,en-US;q=0.6',
    'content-type: application/json;charset=UTF-8',
    'origin: https://www.merchant.geidea.net',
    'referer: https://www.merchant.geidea.net/',
    'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
    'sec-ch-ua-mobile: ?0',
    'sec-ch-ua-platform: "Windows"',
    'sec-fetch-dest: empty',
    'sec-fetch-mode: cors',
    'sec-fetch-site: same-site',
    'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
    'x-language: en',
    'Authorization: Basic MjE5MDVhOTEtNDgxZS00YWExLThlNjktODYxYTU1ZTRhYzc0OjI2NWFjYWVjLWY0OWItNDU5MC05MDVmLWZhOTk0OTgyZGVhNA=='
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

```

## API Response

The key parameters sent in the API response are as follows:

| Parameter           | Description                                                            |
| :------------------ | :--------------------------------------------------------------------- |
| responseCode        | Code associated with response message returned by the gateway          |
| responseDescription | Detailed Code associated with response message returned by the gateway |
| receiverName        | Name of the customer                                                   |
| receiverAddress     | Address of the receiver                                                |

A sample response to the Create QR API call is as follows:

```json
{
    "responseCode": "00000",
    "responseDescription": "Approved Or Completed Successfully",
    "receiverName": "",
    "receiverAddress": ""
}
```

## Polling for transaction status

Once the transaction has been initiated you must poll for the transaction status. This is done in the following steps

| #  | Step                   | Description                                                                                                                                                                      | API                                                                      |
| :- | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------- |
| 1  | Retrieve Order ID      | This step is used to retrieve the order ID that is generated when the customer initiates a payment                                                                               | [Get Order ID](https://docs.geidea.net/reference/get-order-id)           |
| 2  | Retrieve Order Details | This step is used to retrieve the details of the order ID that is generated when the customer initiates a payment. The Order Details contain the final status of the transaction | [Get Order Details](https://docs.geidea.net/reference/get-order-details) |

# Retrieve Order ID API

This is a GET API call and does not have a body in the request.

To perform a Retrieve Order ID API call, you will need to provide the following required field as a path parameter.

| Parameter         | Datatype | Description                                                                                                          | Mandatory |
| :---------------- | :------- | :------------------------------------------------------------------------------------------------------------------- | :-------- |
| `paymentintentid` | String   | Payment Intent ID generated for the QR payment request as part of the Create QR code API call. Must be a valid UUID. | Yes       |

Below is an example of executing a Retrieve Order ID API call for a payment with the mandatory parameters.

## API Request

```http
https://api.merchant.geidea.net/payment-intent/api/v1/paymentIntent/{Payment Intent ID}
```

## API Response

The key parameters sent in the API response are as follows:

| Parameter         | Description                                                                                                          |
| :---------------- | :------------------------------------------------------------------------------------------------------------------- |
| `paymentIntentId` | Payment Intent ID generated for the QR payment request as part of the Create QR code API call. This is a valid UUID. |
| `orderid`         | Unique ID associated with the Order. This is a valid UUID                                                            |
| `createdDate`     | Datetime stamp of order creation                                                                                     |
| `orderStatus`     | Status of order creation                                                                                             |

If the customer initiated a payment, an order ID is generated in the Geidea platform. The details of the Payment Intent along with the Order ID are retrieved.

If the customer does not initiate a payment, order ID is not generated in the Geidea platform. A null order Object is retrieved in this case

A sample response to the Retrieve Order ID API call is as follows:

```json
{
    "paymentIntent": {
        "paymentIntentId": "c81d576e-bfe7-4377-1428-08dc69da66ec",
        "parentPaymentIntentId": null,
        "number": "602061367920",
        "urlSlug": null,
        "type": "MeezaPayment",
        "amount": 123.00,
        "currency": "EGP",
        "merchantId": "6876f6bc-f8eb-4253-f160-08d973705ffb",
        "merchantPublicKey": "6620c3e2-5088-41a8-8be6-98c003153932",
        "expiryDate": "2024-05-10T12:56:14.354239Z",
        "activationDate": null,
        "status": "Paid",
        "customerId": null,
        "eInvoiceUploadId": null,
        "staticPaylinkId": null,
        "subscriptionId": null,
        "subscriptionOccurrenceId": null,
        "orders": [
            {
                "paymentIntentId": "c81d576e-bfe7-4377-1428-08dc69da66ec",
                "orderId": "72bde1e7-22cf-42d4-3bc4-08dc69da0e58",
                "createdDate": "2024-05-10T12:41:24.981062Z",
                "orderStatus": "Success"
            }
        ],
        "isPending": false,
        "createdDate": "2024-05-10T12:41:14.3823822Z",
        "createdBy": "6876f6bc-f8eb-4253-f160-08d973705ffb",
        "updatedDate": "2024-05-10T12:41:24.981062Z",
        "updatedBy": "6876f6bc-f8eb-4253-f160-08d973705ffb"
    },
    "responseCode": "000",
    "detailedResponseCode": "000"
}
```

# Retrieve Order Details API

This is a GET API call and does not have a body in the request.

To perform a Get Order Details API call, you will need to provide the following required fields as a path parameter.

| Parameter         | Datatype | Description                                                                                                          | Mandatory |
| :---------------- | :------- | :------------------------------------------------------------------------------------------------------------------- | :-------- |
| `paymentintentid` | String   | Payment Intent ID generated for the QR payment request as part of the Create QR code API call. Must be a valid UUID. | Yes       |
| `orderID`         | String   | Unique ID associated with the Order. Must be a valid UUID                                                            | Yes       |

Below is an example of executing a Retrieve Order Details API call for a payment with the mandatory parameters.

## API Request

```http
https://api.merchant.geidea.net/pgw/api/v1/order/{Payment Intent ID}/{Order ID}
```

## API Response

The key parameters sent in the API response are as follows:

| Parameter                                       | Description                                                            |
| :---------------------------------------------- | :--------------------------------------------------------------------- |
| `order.transactions.codes.responseCode`         | Code associated with response message returned by the gateway          |
| `order.transactions.codes.detailedResponseCode` | Detailed Code associated with response message returned by the gateway |

If the customer initiated a payment, an order ID is generated in the Geidea platform. The details of the Payment Intent along with the Order ID are retrieved along with the final status of the transaction. If the final value of `order.transactions.codes.responseCode` is '000', then the transaction is successful. For other response codes, transaction may be considered a failure.

A sample response to the Retrieve Order ID API call is as follows:

```json
{
    "order": {
        "orderId": "72bde1e7-22cf-42d4-3bc4-08dc69da0e58",
        "amount": 123.00,
        "tipAmount": 0.00,
        "convenienceFeeAmount": 0.00,
        "totalAmount": 123.00,
        "settleAmount": 123.00,
        "currency": "EGP",
        "settleCurrency": "EGP",
        "language": "en",
        "detailedStatus": "Paid",
        "status": "Success",
        "threeDSecureId": null,
        "merchantId": "6876f6bc-f8eb-4253-f160-08d973705ffb",
        "merchantPublicKey": "6620c3e2-5088-41a8-8be6-98c003153932",
        "parentOrderId": null,
        "merchantReferenceId": null,
        "mcc": "5085",
        "callbackUrl": "https://webhook.site/ed5ff8d8-5b2c-457c-b003-8659cbc1e6ed",
        "billingAddress": {
            "countryCode": null,
            "street": null,
            "city": null,
            "postCode": null
        },
        "shippingAddress": {
            "countryCode": null,
            "street": null,
            "city": null,
            "postCode": null
        },
        "returnUrl": null,
        "cardOnFile": false,
        "tokenId": null,
        "initiatedBy": null,
        "agreementId": null,
        "agreementType": null,
        "amountVariability": null,
        "paymentOperation": "Pay",
        "custom": null,
        "paymentIntent": {
            "id": "c81d576e-bfe7-4377-1428-08dc69da66ec",
            "parentPaymentIntentId": null,
            "type": "MeezaPayment",
            "number": "602061367920"
        },
        "restrictPaymentMethods": false,
        "paymentMethods": null,
        "platform": null,
        "statementDescriptor": null,
        "description": null,
        "setDefaultPaymentMethod": false,
        "recurrence": null,
        "transactions": [
            {
                "transactionId": "17cb2a05-55af-4086-dbad-08dc69da0e5a",
                "type": "Pay",
                "status": "Success",
                "amount": 123.00,
                "currency": "EGP",
                "source": "HPP",
                "authorizationCode": null,
                "rrn": "996bc4c1-d8a8-4c36-a335-74429bb3b2d9",
                "stan": null,
                "paymentMethod": {
                    "type": "QR",
                    "brand": "MeezaDigital",
                    "cardholderName": "",
                    "maskedCardNumber": "",
                    "wallet": "MeezaDigital",
                    "expiryDate": null,
                    "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": null,
                "postilionDetails": null,
                "terminalDetails": null,
                "meezaDetails": {
                    "transactionId": "17cb2a05-55af-4086-dbad-08dc69da0e5a",
                    "meezaTransactionId": "996bc4c1-d8a8-4c36-a335-74429bb3b2d9",
                    "type": "P2M",
                    "transactionTimeStamp": "2024-05-10T12:41:24.7304291",
                    "adviceId": "aeb94d02-ac1e-4d89-a00b-deab0c06152d",
                    "senderId": "00201004353401",
                    "senderName": "Test sender",
                    "senderAddress": "Test address",
                    "receiverId": "156503411",
                    "receiverName": null,
                    "receiverScheme": null,
                    "receiverAddress": null,
                    "amount": 123.00,
                    "currency": "EGP",
                    "description": "",
                    "responseCode": "00000",
                    "responseDescription": "Approved Or Completed Successfully",
                    "interchange": 0.00,
                    "interchangeAction": "",
                    "reference1": "#0522blcdyOe_d0MUKAjcadpm7A0600",
                    "reference2": "",
                    "tips": 0.00,
                    "convenienceFee": 0.00
                },
                "bnplDetails": null,
                "bankInstallmentDetails": null,
                "correlationId": "4f9bf790-f841-44f3-af22-8a57c85db60f",
                "parentTransactionId": null,
                "paymentAttemptId": null,
                "acquirer": null,
                "authorizationResponse": null,
                "madaDetails": null,
                "refundType": null,
                "refundStatus": null,
                "isExtensionComplete": null,
                "extensionDate": null,
                "deviceId": null,
                "fingerPrintJson": null,
                "fingerPrintRequestId": null,
                "fingerPrintProviderName": null,
                "geideaCodeDetails": null,
                "visaInstallmentDetails": null,
                "geideaCodeRefundDetails": null,
                "createdDate": "2024-05-10T12:41:24.9359474",
                "createdBy": "MeezaIntegrationApi",
                "updatedDate": "2024-05-10T12:41:24.9359474",
                "updatedBy": null
            }
        ],
        "orderItems": [],
        "isTokenPayment": false,
        "paymentMethod": {
            "type": "QR",
            "brand": "MeezaDigital",
            "cardholderName": "",
            "maskedCardNumber": "",
            "wallet": "MeezaDigital",
            "expiryDate": null,
            "sameBank": false,
            "issuingCountry": null,
            "fundingType": null,
            "issuingBank": null,
            "cardCategory": null
        },
        "totalAuthorizedAmount": 123.00,
        "totalCapturedAmount": 123.00,
        "totalRefundedAmount": 0,
        "orderSource": "GeideaGateway",
        "paymentBrands": [
            "meezadigital"
        ],
        "multiCurrency": {
            "authCurrency": "EGP",
            "authAmount": 123.00,
            "settleCurrency": "EGP",
            "settleAmount": 123.00,
            "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": "ContinueToPayer",
        "subscriptionId": null,
        "subscriptionOccurrenceId": null,
        "refundType": null,
        "refundStatus": null,
        "bankId": null,
        "isPayWithToken": false,
        "customerName": null,
        "customerEmail": null,
        "createCustomer": false,
        "customerReferenceId": null,
        "customerId": null,
        "customerPhoneNumber": null,
        "customerPhoneCountryCode": null,
        "customerCustomValue": null,
        "airLine": null,
        "geideaCodePRN": null,
        "geideaCodeExpiryDate": null,
        "createdDate": "2024-05-10T12:41:24.9359474",
        "createdBy": "MeezaIntegrationApi",
        "updatedDate": "2024-05-10T12:41:24.9359474",
        "updatedBy": null
    },
    "paymentProviderSetting": null,
    "tokenCryptogram": null,
    "responseCode": "000",
    "detailedResponseCode": "000"
}
```

# Payment notification API

You can use this [API](https://docs.geidea.net/reference/send-notification) to trigger a payment notification to your customers after a payment has been successful. The API initiates a mail to the customer.

To initiate a mail to the customer, you will need to provide the following required field.

| Parameter | Datatype | Description                                               | Mandatory |
| :-------- | :------- | :-------------------------------------------------------- | :-------- |
| `orderID` | String   | Unique ID associated with the Order. Must be a valid UUID | Yes       |

Below is an example of executing a Payment notification API call for a payment with the mandatory parameters.

## API Request

```http
{
    "orderId": "72bde1e7-22cf-42d4-3bc4-08dc69da0e58"
}
```

## API Response

A 200 code will be returned with no body. This indicates that the notification has been sent.