Initiating The Payment
An invoice is a document you send to your client after purchasing goods or services from you, both as a means of recording the sale and requesting payment from them. You can catch everything you need about PayTabs invoices in our solutions article: What is PayTabs Invoice?
Invoices Payment Page integration type is suitable for merchants with PCI SAQ A or merchants does not have any PCI levels as it follows Hosted Payment page mechanism. To customize the UI of the Invoices payment page, check this article, and to know more about the Invoices Payment Page PCI DSS merchant requirements, please check this article.The Available Endpoints to Initiate an Invoiceβ
In this manual, we'll guide you through initiating a payment request using this integration type. You'll learn about the necessary parameters required for the request and all the optional parameters available. You can choose to initiate the payment in one of two ways: via Payment or via Invoices. We strongly recommend reviewing theInvoices | Payment Workflowmanual first to understand the business logic behind this integration.
As mentioned above, there are two ways you can use in the endpoints for initiating the invoice as clarified below:
Each endpoint has a different flow and support different kind of parameters, you can choose one that suits your business needs best. In the upcoming section we will walk you through these 2 endpoints in detail.
Initiating an Invoice via Invoice Endpoint
Initiating an Invoice via Invoice Endpointβ
Here, we will walk you through the steps to initiate an invoice using the Invoice Endpoint. This dedicated interface simplifies the process of invoice creation and management, handling all aspects from generating new invoices to tracking payments and managing customer data. In this manual, we will provide a step-by-step guide to help you streamline your invoicing procedures and improve financial accuracy.
The Endpoint and Related Postman Collectionβ
In this section, we will rely on the PayTabs Invoice Payment Page API Endpoint, mentioned on PayTabs API endpoints postman collection, which you can access from PayTabs Postman APIs Collection. The endpoint will need to be accessed with a POST request on the below-mentioned URL
POST | {{domain}}/payment/invoice/new |
---|
Please note that not using the proper endpoint URL {domain} will lead to authentication issues within your responses. To find the your proper domain you can read ourWhat is my (Region)/(endpoint URL)?tutorial article.
- KSA
- UAE
- Egypt
- Oman
- Jordan
- Kuwait
- Global
https://secure.paytabs.sa/payment/invoice/new
https://secure.paytabs.com/payment/invoice/new
https://secure-egypt.paytabs.com/payment/invoice/new
https://secure-oman.paytabs.com/payment/invoice/new
https://secure-jordan.paytabs.com/payment/invoice/new
https://secure-kuwait.paytabs.com/payment/invoice/new
https://secure-global.paytabs.com/payment/invoice/new
Request Parametersβ
- The Minimum Required Parameters
- The Available Optional Parameters
To initiate a payment request using this integration type, there are minimum required parameters that need to be passed with valid information. The specification of these required parameters is clarified below:
Parameter | Data Type | Min | Max | Required |
---|---|---|---|---|
| INT | Accept only valid profile number. | β | |
The merchant Profile ID you can get from your PayTabs dashboard. For more information please check our How to get your account information from PT2 Dashboard? solution article. To know more about this parameter please click here. | ||||
| ||||
| STRING | Valid string from this enum list: sale auth void release capture refund register | β | |
The identification of the type of the transaction. To know more about these types please check our What is the "tran_type" (transaction type)? solution article. To know more about this parameter please click here. | ||||
| ||||
| STRING | Valid string from this list ecom recurring moto | β | |
The identification of the category/class this transaction will follow, such as eCommerce, Recurring, etc. To know more about these types please check our What is the "tran_class" (transaction class)? solution article. To know more about this parameter please click here. | ||||
| ||||
| STRING | 1 | 64 | β |
Indicates the cart/order id at the merchant end, to easily relate the PayTabs transaction to. To know more about this parameter please click here. | ||||
| ||||
| STRING | 1 | 128 | β |
Indicates the cart/order description at the merchant end, to easily relate the PayTabs transaction to. To know more about this parameter please click here. | ||||
| ||||
| STRING | 1 | 128 | β |
Indicates the transaction currency, which the customer will be charged with. To know more about this parameter please click here. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates the amount of the transaction the customer is about to be charged. Both min and max values are subjected to the merchant transaction limits. To know more about this parameter please click here. | ||||
| ||||
| OBJECT | At least line_items must be included. | β | |
This is the main object that holds other parameters related to invoice creation. Including this in your request is considered the main flag to be treated as an Invoice creation request, not a normal hosted payment page request. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
This is parameter will define the invoice page languages. | ||||
| ||||
| BOOLEAN | N/A | N/A | β |
This parameter will disable editing the invoice through the merchant dashboard. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates the shipping charges that the merchant would add to the total invoice amount if he or she has shippable items. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates any extra charges that the merchant would add to the total invoice amount. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates an extra discount that the merchant would exclude from the total invoice amount. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates the total amount of the invoice which equals the total price of line_items plus shipping_charges + extra_charges minus extra_discount . Notes that if left as 0 or null it will be auto-calculated. | ||||
| ||||
| DATE | N/A | N/A | β |
Indicates the invoice activation date, which will make the invoice unavailable before this date. | ||||
| ||||
| DATE | N/A | N/A | β |
Indicates the invoice expiry date which will make the invoice unavailable after this date. | ||||
| ||||
| DATE | N/A | N/A | β |
Indicates the invoice due date which will make the invoice unavailable before this date. | ||||
| ||||
| OBJECT | N/A | N/A | β |
This is an array of the invoice objects/items that your customer purchased. Each item will be an object that holds its specific details. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates this invoice item cost. It must be in the same currency passed already in the Initial Request Parameters. | ||||
| INT | 1 | 9999999999 | β |
Indicates the purchased quantity of this invoice item. | ||||
| STRING | N/A | N/A | β |
Indicates the SKU of a certain item to be included with item details. | ||||
| STRING | N/A | N/A | β |
Indicates the item description to be included with the item details. | ||||
| STRING | N/A | N/A | β |
Indicates the item URL to be included with the item details. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the net price of the current item without applying tax or discount. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the discount rate for the current item. The rate is a percentage value that will be multiplied by the net price of the item and will be included in the total price of the item. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the discount amount for the current item. This amount will be excluded. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the tax rate for the current item to be included in the total price of the item. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the tax total for the current item to be included in the total price of the item. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the total price of the current item to be included with the item details. | ||||
Besides the above-mentioned required parameters, PayTabs provides you with several optional parameters, each of which empowers you with a different feature and the ability to customize your invoice payment request as much as possible it could be. The specification of these optional parameters is clarified below:
Parameter | Data Type | Min | Max | Required |
---|---|---|---|---|
| STRING | N/A | 255 Characters (Valid URL) | β |
The return URL is the URL that PayTabs will redirect the customer to after he finishes the payment process (whether it's authenticated or not). It will redirect the customer with a POST response that is sent with the client/cardholder redirection through his browser containing the basic transaction information once the payment process ends (whether the customer cancels, paid, or failed to pay). It depends on the customer's actions, which means if the customer closes the browser right after the payment without waiting to be redirected back to your system, you will not receive this response. What is the Return URL vs the Callback URL? To know more about this parameter please click here. | ||||
| ||||
| STRING | N/A | 255 Characters (Valid URL) | β |
The callback response is a server-to-server POST response that is sent (to a pre-defined HTTPS URL) with the full detailed transaction information once the payment process has ended (whether the customer cancels, paid, or failed to pay). It does not depend on the customer's actions; the response will be sent anyway. What is the Return URL vs the Callback URL? To know more about this parameter please click here. | ||||
| ||||
| BOOLEAN | β | ||
Indicates whether to hide shipping and billing information or not from the payment page. Note: The customer details are still required and must be passed in case any of the details are missing or passed with invalid values; the hide_shipping option will be ignored, and the cardholder will be required to enter any of the missing details on the payment page. To know more about this parameter please click here. | ||||
| ||||
| OBJECT | β | ||
Indicates the customer details for this payment. If provided, the payment page will be prefilled with the provided data. To know more about this parameter please click here. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | 3 | 128 | β |
| STRING | N/A | N/A | β |
| STRING | N/A | N/A | β |
| STRING | 3 | 128 | β |
| STRING | 3 | 128 | β |
| STRING | 2 | 2 | β |
| STRING | N/A | N/A | β |
| STRING | N/A | N/A | β |
| OBJECT | β | ||
Indicates the customer shipping details for this payment. If provided, the payment page will be prefilled with the provided data.. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | 3 | 128 | β |
| STRING | N/A | N/A | β |
| STRING | N/A | N/A | β |
| STRING | 3 | 128 | β |
| STRING | 3 | 128 | β |
| STRING | 2 | 2 | β |
| STRING | N/A | N/A | β |
| STRING | N/A | N/A | β |
| BOOLEAN | β | ||
Indicates whether to preview the payment page within the current check page instead of redirection or not. If β, preview the redirect URL sent in the response in '<iframe>' HTML tag, which will preview the whole payment page within this frame. To know more about this parameter please click here. | ||||
| ||||
| BOOLEAN | β | ||
Indicates whether to reload the whole page on redirections or just reload the current frame. To know more about this parameter please click here. | ||||
| ||||
| BOOLEAN | β | ||
Indicates whether to reload the main base (could be div or another iFrame tag) that contained the payment page framed element. To know more about this parameter please click here. | ||||
| ||||
| URI | A valid HTTPS website URL of your domain (the recipient) that will receive the event. In order for the event to be dispatched, this domain must match exactly (including scheme, hostname, and port). | β | |
If you didn't have a return URL, PayTabs default return page (return: 'None'), to receive the message after the payment is done using the javascript, which gives your system the ability to close the iFrame after payment | ||||
| ||||
| STRING | Either en or ar | β | |
Indicates the payment page displaying language. To know more about this parameter please click here. | ||||
| ||||
| INT | Valid Theme ID (from PayTabs dashboard) | β | |
Allows you to choose between your list of themes that have been created on your PayTabs dashboard. This chosen theme will be applied to the created payment page. | ||||
| ||||
| OBJECT | β | ||
For more customizations, you can pass to the Transaction API request your own "user-defined fields" up to 9 fields, and accordingly, you would receive those fields in the callback response. To know more about this parameter please click here. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| Array | β | ||
To provide discounts for specific customers. To know more about this parameter please click here. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
Provide a comma-separated list of card prefixes (usually first 6, can be up to first 11) To know more about this parameter please $1. | ||||
| STRING | N/A | N/A | β |
Description of the discount that will be displayed for the customer on the hosted payment page. To know more about this parameter please $1. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
The actual discount should be deducted from the cart_amount . To know more about this parameter please $1. | ||||
| DECIMAL | 0.01 | 100 | β |
The discount percentage that will be displayed for the customer on the hosted payment page. To know more about this parameter please $1. | ||||
| STRING | N/A | 255 character | β |
card_filter is one of the optional parameters that the request may have, which will allow you to accept only cards that start with a specific number/identifier/BIN code you want. | ||||
| ||||
| STRING | Pass one of the following list:
| β | |
The tokenization format the generated token should follow. Hosted Payment Page APIs | Token Based Transactions . To know more about this parameter please click here. | ||||
| ||||
| BOOLEAN | β | ||
For showing the βsave this cardβ option on the payment page. To know more about this parameter please click here. | ||||
| ||||
| STRING | 3 Characters | 3 Characters | β |
Indicates an alternative currency that you want to display your amount with it in your payment page. This will allow you to display the approximate amount of the payment cart amount in this alternative currency for this transaction.. | ||||
| ||||
| STRING | Pass one or more of the following list: click here | β | |
To know more about this parameter please click here. | ||||
| ||||
| STRING | β | ||
To know more about this parameter please click here. | ||||
| ||||
| STRING | β | ||
Indicates the Transaction Reference on the PayTabs side check details on [Response Parameters | tran_ref] | ||||
| ||||
| BOOLEAN | β | ||
If you set this parameter to true you will get a QR code image as encoded Base64 code within the response payload. | ||||
| ||||
| OBJECT | β | ||
To provide more customization on token, and modify it if you don't like to use the default one | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
it shows if the token will be used in monthly subscription or will be used in unscheduled time, or subscription but not fixed time | ||||
| STRING | N/A | N/A | β |
This is a response parameter that would specifics the payment frequency plan depending on how it's configured by the merchant. | ||||
| DECIMAL | 1 | 9999999999.99 | β |
indicates the minimum amount per transaction using the token created, it will be declined if the amount is less than this limit | ||||
| DECIMAL | 1 | 100 | β |
indicates the maximum amount per transaction using the token created, it will be declined if the amount is greater than this limit | ||||
| INT | 1 | 999 | β |
indicates the payment iteration/cycle number among it's valid/configured maximum rounds/counts it should be. Note that this value is validated on the processor/bank side, PayTabs has no upper hand to validate the credibility of such information. | ||||
| INT | 1 | 999 | β |
indicates the maximum payments integration/cycles number. Note that this value is validated on the processor/bank side, PayTabs has no upper hand to validate the credibility of such information. | ||||
| DATE | N/A | N/A | β |
indicates the date of starting using the token, the token cannot be used before this date | ||||
| DATE | N/A | N/A | β |
Indicates the expiry date of the token | ||||
| STRING | β | ||
this field detect shows which channel of integration/dashboard makes this transaction, this field will be returned in the IPN, callback and query transaction | ||||
| ||||
| OBJECT | β | ||
This object will contain 3Ds details of the card | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| INT | N/A | N/A | β |
This parameter indicates the agreement description which you can use to distinguish your agreements and you can also use it as a title for your agreement. | ||||
| STRING | N/A | N/A | β |
#TODO# | ||||
| STRING | N/A | N/A | β |
#TODO# | ||||
| STRING | N/A | N/A | β |
#TODO# | ||||
| STRING | N/A | N/A | β |
#TODO# | ||||
| STRING | N/A | N/A | β |
CAVV is a cryptographic value generated during a 3D Secure transaction (e.g., Visa Secure, Mastercard Identity Check, AMEX SafeKey). It proves that authentication was performed by the cardholder. | ||||
| STRING | N/A | N/A | β |
UCAF is a security field used to pass authentication data between merchants, payment processors, and card issuers. | ||||
| STRING | N/A | N/A | β |
This parameter shares 3Ds version which vary from card to another | ||||
| STRING | β | ||
Trace code (trace) is the parameter that Indicates the code that PayTabs can trace this response with | ||||
| ||||
| STRING | β | ||
Trace code (trace) is the parameter that Indicates the code that PayTabs can trace this response with | ||||
| ||||
| INT | β | ||
This parameter is a status code, that shows the code of the error and will be followed with message field that clarify the error | ||||
| ||||
| STRING | β | ||
This parameter is showing error message which is always shown after code parameter shown in the response | ||||
| ||||
| STRING | β | ||
Indicates the same as Transaction Reference on the PayTabs side check details on [Response Parameters | tran_ref], but it's used for forsa refund transactions | ||||
| ||||
| STRING | β | ||
it transaction reference related to forsa provider( payment method, it's differs from paytabs reference | ||||
| ||||
| STRING | β | ||
Indicates the same as Transaction Reference on the PayTabs side check details on [Response Parameters | tran_ref], but it's in the response of the refund of forsa #TODO#ADDFORSA ENDOINTHERE# | ||||
| ||||
| DECIMAL | 0.01 | 99999999.99 | β |
indicate the refunded amount from the normal detected transaction, means that you may partial refund not full | ||||
| ||||
| #boolean | β | ||
boolean field indicates if the refund is done or not | ||||
| ||||
| STRING | β | ||
Indicates the customer reference that is provided from the merchant side. | ||||
| ||||
| STRING | β | ||
Indicates the link to which customers should be directed to complete their invoice payment. | ||||
| ||||
| OBJECT | β | ||
Indicates the form of payment information in detail. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
The type of payment method used (e.g., 'Visa', 'Mastercard', 'ApplePay', 'Amex', etc). | ||||
| STRING | N/A | N/A | β |
Specifies whether the card is a 'Credit' or 'Debit' card. For all payments other than bank cards, this parameter will not be present. | ||||
| STRING | N/A | N/A | β |
The card network or brand (e.g., 'Visa', 'Mastercard', 'Amex'). For all payments other than bank cards, this parameter will be empty. | ||||
| STRING | N/A | N/A | β |
A masked representation of the card number for security purposes. For all payments other than bank cards, this parameter will shows the payment method name. | ||||
| INT | N/A | N/A | β |
The expiration month of the card (1-12). For all payments other than bank cards, this parameter will not be present. | ||||
| INT | N/A | N/A | β |
The expiration year of the card (e.g., 2027). For all payments other than bank cards, this parameter will not be present. | ||||
| STRING | N/A | N/A | β |
The two-letter country code (ISO 3166-1 alpha-2) of the payment method issuer (e.g., 'SA' for Saudi Arabia). | ||||
| STRING | N/A | N/A | β |
The name of the financial institution that issued the card, or funded the installment plan (for example, 'Valu', 'Arab National Bank', etc) | ||||
| OBJECT | β | ||
The main object containing contact transaction details. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
A unique identifier for the transaction session. | ||||
| STRING | N/A | N/A | β |
The invoice number for tracking the payment plan. | ||||
| STRING | N/A | N/A | β |
The unique identifier of the client (customer ID). | ||||
| DECIMAL | N/A | N/A | β |
The total price of all items in the installment plan. | ||||
| DECIMAL | N/A | N/A | β |
The total down payment amount for all items. | ||||
| Array | N/A | N/A | β |
A list of items included in the contact transaction. | ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
The unique identifier of the item being purchased. | ||||
| DECIMAL | N/A | N/A | β |
The total price of the item in the installment plan. | ||||
| DECIMAL | N/A | N/A | β |
The initial amount paid upfront. | ||||
| INT | N/A | N/A | β |
The number of months (or installments) for repayment. | ||||
| DECIMAL | N/A | N/A | β |
Any administrative fees associated with the plan. | ||||
| BOOLEAN | N/A | N/A | β |
Indicates if the item qualifies for a bonus offer. | ||||
| DATE | Required for search by page for a specific day, created_date_from and created_date_to should be the same date, date format DD/MM/YYYY | β | |
Show invoices resuts in a spicic date. | ||||
| ||||
| DATE | Required for search by page for a specific day, created_date_from and created_date_to should be the same date, date format DD/MM/YYYY | β | |
Show invoices resuts in a spicic date. | ||||
| ||||
| INT | This field is only accepted if the search request is by date range only (so no cart ID/customer ref etc), and the date range is a single day (so from and to date must be the same). The value for page can be between 1 and 20. If no page value is provided, then 1 is assumed. | β | |
Show invoices resuts in a spicic page. | ||||
| ||||
| OBJECT | β | ||
this object will shows the paging paramters details | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| INT | N/A | N/A | β |
the current page number | ||||
| INT | N/A | N/A | β |
the max number of items per page | ||||
| INT | N/A | N/A | β |
the actual number of items on this page | ||||
| INT | N/A | N/A | β |
the total items available over all pages. | ||||
Request & Response Payload Samplesβ
- Required Parameters Sample Payloads
- Optional Parameters Sample Payloads
The below sample request payload will show you how you can pass the above-mentioned required parameters, which are needed to be passed with valid values to perform a request. Along with the response payload received after using this request payload.
- Sample Request Payload
- Sample Response Payload
{
"profile_id": **Your profile ID**,
"tran_type": "sale",
"tran_class": "ecom",
"cart_description": "Description of the items/services",
"cart_id": "Unique order reference00",
"cart_amount": 100,
"cart_currency": "SAR",
"invoice": {
"line_items": [
{
"unit_cost": 100,
"quantity":2
}
]
}
}
{
"invoice_id": 2072841,
"invoice_link": "https://secure.paytabs.com/payment/request/invoice/2072841/A8C678206DB76382A"
}
The below sample request payload will show you how you can pass the above-mentioned optional parameters, which are needed to be passed with valid values to perform a request. Along with the response payload received after using this request payload.
- Sample Request Payload
- Sample Response Payload
{
"profile_id": **Your profile ID**,
"tran_type": "sale",
"tran_class": "ecom",
"cart_description": "Description of the items/services",
"cart_id": "Unique order reference00",
"cart_amount": 9.5,
"cart_currency": "SAR",
"invoice": {
"lang": "en",
"shipping_charges": 0,
"extra_charges": 0,
"extra_discount": 0,
"total": 0,
"activation_date": "",
"expiry_date": "2024-09-27T13:33:00+04:00",
"line_items": [
{
"sku": "sku",
"description": "desc",
"url": "https://www.costacoffee.ae/whats-new/flat-white",
"unit_cost": 9.5,
"quantity": 1,
"net_total": 9.5,
"discount_rate": 0,
"discount_amount": 0,
"tax_rate": 0,
"tax_total": 0,
"total": 9.5
},
]
},
"customer_details": {
"name": "first last",
"email": "[email protected]",
"phone": "0522222222",
"street1": "address street",
"city": "dubai",
"state": "du",
"country": "AE",
"zip": "12345"
},
"shipping_details": {
"name": "name1 last1",
"email": "[email protected]",
"phone": "971555555555",
"street1": "street2",
"city": "dubai",
"state": "dubai",
"country": "AE",
"zip": "54321"
},
"user_defined": {
"test": "UDF1 Test",
"test2": "UDF2 Test",
"udf3": "UDF3 Test",
"udf4": "UDF4 Test",
"udf5": "UDF5 Test",
"udf6": "UDF6 Test",
"udf7": "UDF7 Test",
"udf8": "UDF8 Test",
"udf9": "UDF9 Test"
},
"callback": "{{callback_url}}",
"return": "{{return_url}}"
}
{
"invoice_id": 2072841,
"invoice_link": "https://secure.paytabs.com/payment/request/invoice/2072841/A8CB6A868206DB76382A"
}
The Payment Page Experienceβ
Reaching this point, you are now able to initiate an Invoice API request and as you now, the process involves several key steps that ensure a smooth payment and tracking experience for both you and customers. Hereβs how it works:
-
Initiating the Request: Once you initiate a payment request, you will receive a response that includes a redirect URL. This URL is crucial for guiding your customer through the payment process.
"invoice_link": "https://secure.paytabs.com/payment/request/invoice/2072841/A8CB6A4667A444E79E868206DB76382A",
-
Redirecting the Customer: You should redirect your customer to this URL as you normally would in a payment transaction. This step allows the customer to complete their payment securely and efficiently. Below are the resulted payment page that your customer will be redirected to:
-
Tracking in the Merchant Dashboard: After the payment is completed, the transaction will be displayed in your Merchant Dashboard. You can view the details of it in the transaction view.
This process ensures that you have full visibility and control over your split payouts, from initiating the transaction to tracking its completion in the dashboard.
Initiating an Invoice via Payment Endpoint
Initiating an Invoice via Payment Endpointβ
Here, we will walk you through the process of creating invoices efficiently using the Payment Endpoint. This endpoint offers a streamlined way to initiate invoices directly through your payment processing system. By leveraging this endpoint, businesses can automate the invoicing process, ensuring timely and accurate billing. This guide will highlight key features and best practices to optimize your workflow.
The Endpoint and Related Postman Collectionβ
In this section, we will rely on the PayTabs Invoice Payment Page API Endpoint, mentioned on PayTabs API endpoints postman collection, which you can access from PayTabs Postman APIs Collection. The endpoint will need to be accessed with a POST request on the below-mentioned URL
POST | {{domain}}/payment/request |
---|
Please note that not using the proper endpoint URL {domain} will lead to authentication issues within your responses. To find the your proper domain you can read ourWhat is my (Region)/(endpoint URL)?tutorial article.
- KSA
- UAE
- Egypt
- Oman
- Jordan
- Kuwait
- Global
https://secure.paytabs.sa/payment/request
https://secure.paytabs.com/payment/request
https://secure-egypt.paytabs.com/payment/request
https://secure-oman.paytabs.com/payment/request
https://secure-jordan.paytabs.com/payment/request
https://secure-kuwait.paytabs.com/payment/request
https://secure-global.paytabs.com/payment/request
Request Parametersβ
- The Minimum Required Parameters
- The Available Optional Parameters
To initiate a payment request using this integration type, there are minimum required parameters that need to be passed with valid information. The specification of these required parameters is clarified below:
Parameter | Data Type | Min | Max | Required |
---|---|---|---|---|
| INT | Accept only valid profile number. | β | |
The merchant Profile ID you can get from your PayTabs dashboard. For more information please check our How to get your account information from PT2 Dashboard? solution article. To know more about this parameter please click here. | ||||
| ||||
| STRING | Valid string from this enum list: sale auth void release capture refund register | β | |
The identification of the type of the transaction. To know more about these types please check our What is the "tran_type" (transaction type)? solution article. To know more about this parameter please click here. | ||||
| ||||
| STRING | Valid string from this list ecom recurring moto | β | |
The identification of the category/class this transaction will follow, such as eCommerce, Recurring, etc. To know more about these types please check our What is the "tran_class" (transaction class)? solution article. To know more about this parameter please click here. | ||||
| ||||
| STRING | 1 | 64 | β |
Indicates the cart/order id at the merchant end, to easily relate the PayTabs transaction to. To know more about this parameter please click here. | ||||
| ||||
| STRING | 1 | 128 | β |
Indicates the cart/order description at the merchant end, to easily relate the PayTabs transaction to. To know more about this parameter please click here. | ||||
| ||||
| STRING | 1 | 128 | β |
Indicates the transaction currency, which the customer will be charged with. To know more about this parameter please click here. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates the amount of the transaction the customer is about to be charged. Both min and max values are subjected to the merchant transaction limits. To know more about this parameter please click here. | ||||
| ||||
| OBJECT | At least line_items must be included. | β | |
This is the main object that holds other parameters related to invoice creation. Including this in your request is considered the main flag to be treated as an Invoice creation request, not a normal hosted payment page request. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
This is parameter will define the invoice page languages. | ||||
| ||||
| BOOLEAN | N/A | N/A | β |
This parameter will disable editing the invoice through the merchant dashboard. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates the shipping charges that the merchant would add to the total invoice amount if he or she has shippable items. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates any extra charges that the merchant would add to the total invoice amount. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates an extra discount that the merchant would exclude from the total invoice amount. | ||||
| ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates the total amount of the invoice which equals the total price of line_items plus shipping_charges + extra_charges minus extra_discount . Notes that if left as 0 or null it will be auto-calculated. | ||||
| ||||
| DATE | N/A | N/A | β |
Indicates the invoice activation date, which will make the invoice unavailable before this date. | ||||
| ||||
| DATE | N/A | N/A | β |
Indicates the invoice expiry date which will make the invoice unavailable after this date. | ||||
| ||||
| DATE | N/A | N/A | β |
Indicates the invoice due date which will make the invoice unavailable before this date. | ||||
| ||||
| OBJECT | N/A | N/A | β |
This is an array of the invoice objects/items that your customer purchased. Each item will be an object that holds its specific details. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| DECIMAL | 0.01 | 9999999999.99 | β |
Indicates this invoice item cost. It must be in the same currency passed already in the Initial Request Parameters. | ||||
| INT | 1 | 9999999999 | β |
Indicates the purchased quantity of this invoice item. | ||||
| STRING | N/A | N/A | β |
Indicates the SKU of a certain item to be included with item details. | ||||
| STRING | N/A | N/A | β |
Indicates the item description to be included with the item details. | ||||
| STRING | N/A | N/A | β |
Indicates the item URL to be included with the item details. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the net price of the current item without applying tax or discount. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the discount rate for the current item. The rate is a percentage value that will be multiplied by the net price of the item and will be included in the total price of the item. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the discount amount for the current item. This amount will be excluded. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the tax rate for the current item to be included in the total price of the item. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the tax total for the current item to be included in the total price of the item. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
This parameter indicates the total price of the current item to be included with the item details. | ||||
Besides the above-mentioned required parameters, PayTabs provides you with several optional parameters, each of which empowers you with a different feature and the ability to customize your invoice payment request as much as possible it could be. The specification of these optional parameters is clarified below:
Parameter | Data Type | Min | Max | Required |
---|---|---|---|---|
| STRING | N/A | 255 Characters (Valid URL) | β |
The return URL is the URL that PayTabs will redirect the customer to after he finishes the payment process (whether it's authenticated or not). It will redirect the customer with a POST response that is sent with the client/cardholder redirection through his browser containing the basic transaction information once the payment process ends (whether the customer cancels, paid, or failed to pay). It depends on the customer's actions, which means if the customer closes the browser right after the payment without waiting to be redirected back to your system, you will not receive this response. What is the Return URL vs the Callback URL? To know more about this parameter please click here. | ||||
| ||||
| STRING | N/A | 255 Characters (Valid URL) | β |
The callback response is a server-to-server POST response that is sent (to a pre-defined HTTPS URL) with the full detailed transaction information once the payment process has ended (whether the customer cancels, paid, or failed to pay). It does not depend on the customer's actions; the response will be sent anyway. What is the Return URL vs the Callback URL? To know more about this parameter please click here. | ||||
| ||||
| BOOLEAN | β | ||
Indicates whether to hide shipping and billing information or not from the payment page. Note: The customer details are still required and must be passed in case any of the details are missing or passed with invalid values; the hide_shipping option will be ignored, and the cardholder will be required to enter any of the missing details on the payment page. To know more about this parameter please click here. | ||||
| ||||
| OBJECT | β | ||
Indicates the customer details for this payment. If provided, the payment page will be prefilled with the provided data. To know more about this parameter please click here. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | 3 | 128 | β |
| STRING | N/A | N/A | β |
| STRING | N/A | N/A | β |
| STRING | 3 | 128 | β |
| STRING | 3 | 128 | β |
| STRING | 2 | 2 | β |
| STRING | N/A | N/A | β |
| STRING | N/A | N/A | β |
| OBJECT | β | ||
Indicates the customer shipping details for this payment. If provided, the payment page will be prefilled with the provided data.. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | 3 | 128 | β |
| STRING | N/A | N/A | β |
| STRING | N/A | N/A | β |
| STRING | 3 | 128 | β |
| STRING | 3 | 128 | β |
| STRING | 2 | 2 | β |
| STRING | N/A | N/A | β |
| STRING | N/A | N/A | β |
| BOOLEAN | β | ||
Indicates whether to preview the payment page within the current check page instead of redirection or not. If β, preview the redirect URL sent in the response in '<iframe>' HTML tag, which will preview the whole payment page within this frame. To know more about this parameter please click here. | ||||
| ||||
| BOOLEAN | β | ||
Indicates whether to reload the whole page on redirections or just reload the current frame. To know more about this parameter please click here. | ||||
| ||||
| BOOLEAN | β | ||
Indicates whether to reload the main base (could be div or another iFrame tag) that contained the payment page framed element. To know more about this parameter please click here. | ||||
| ||||
| URI | A valid HTTPS website URL of your domain (the recipient) that will receive the event. In order for the event to be dispatched, this domain must match exactly (including scheme, hostname, and port). | β | |
If you didn't have a return URL, PayTabs default return page (return: 'None'), to receive the message after the payment is done using the javascript, which gives your system the ability to close the iFrame after payment | ||||
| ||||
| STRING | Either en or ar | β | |
Indicates the payment page displaying language. To know more about this parameter please click here. | ||||
| ||||
| INT | Valid Theme ID (from PayTabs dashboard) | β | |
Allows you to choose between your list of themes that have been created on your PayTabs dashboard. This chosen theme will be applied to the created payment page. | ||||
| ||||
| OBJECT | β | ||
For more customizations, you can pass to the Transaction API request your own "user-defined fields" up to 9 fields, and accordingly, you would receive those fields in the callback response. To know more about this parameter please click here. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| STRING | 1 | 255 | β |
| Array | β | ||
To provide discounts for specific customers. To know more about this parameter please click here. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
Provide a comma-separated list of card prefixes (usually first 6, can be up to first 11) To know more about this parameter please $1. | ||||
| STRING | N/A | N/A | β |
Description of the discount that will be displayed for the customer on the hosted payment page. To know more about this parameter please $1. | ||||
| DECIMAL | 0.01 | 9999999999.99 | β |
The actual discount should be deducted from the cart_amount . To know more about this parameter please $1. | ||||
| DECIMAL | 0.01 | 100 | β |
The discount percentage that will be displayed for the customer on the hosted payment page. To know more about this parameter please $1. | ||||
| STRING | N/A | 255 character | β |
card_filter is one of the optional parameters that the request may have, which will allow you to accept only cards that start with a specific number/identifier/BIN code you want. | ||||
| ||||
| STRING | Pass one of the following list:
| β | |
The tokenization format the generated token should follow. Hosted Payment Page APIs | Token Based Transactions . To know more about this parameter please click here. | ||||
| ||||
| BOOLEAN | β | ||
For showing the βsave this cardβ option on the payment page. To know more about this parameter please click here. | ||||
| ||||
| STRING | 3 Characters | 3 Characters | β |
Indicates an alternative currency that you want to display your amount with it in your payment page. This will allow you to display the approximate amount of the payment cart amount in this alternative currency for this transaction.. | ||||
| ||||
| STRING | Pass one or more of the following list: click here | β | |
To know more about this parameter please click here. | ||||
| ||||
| STRING | β | ||
To know more about this parameter please click here. | ||||
| ||||
| STRING | β | ||
Indicates the Transaction Reference on the PayTabs side check details on [Response Parameters | tran_ref] | ||||
| ||||
| BOOLEAN | β | ||
If you set this parameter to true you will get a QR code image as encoded Base64 code within the response payload. | ||||
| ||||
| OBJECT | β | ||
To provide more customization on token, and modify it if you don't like to use the default one | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
it shows if the token will be used in monthly subscription or will be used in unscheduled time, or subscription but not fixed time | ||||
| STRING | N/A | N/A | β |
This is a response parameter that would specifics the payment frequency plan depending on how it's configured by the merchant. | ||||
| DECIMAL | 1 | 9999999999.99 | β |
indicates the minimum amount per transaction using the token created, it will be declined if the amount is less than this limit | ||||
| DECIMAL | 1 | 100 | β |
indicates the maximum amount per transaction using the token created, it will be declined if the amount is greater than this limit | ||||
| INT | 1 | 999 | β |
indicates the payment iteration/cycle number among it's valid/configured maximum rounds/counts it should be. Note that this value is validated on the processor/bank side, PayTabs has no upper hand to validate the credibility of such information. | ||||
| INT | 1 | 999 | β |
indicates the maximum payments integration/cycles number. Note that this value is validated on the processor/bank side, PayTabs has no upper hand to validate the credibility of such information. | ||||
| DATE | N/A | N/A | β |
indicates the date of starting using the token, the token cannot be used before this date | ||||
| DATE | N/A | N/A | β |
Indicates the expiry date of the token | ||||
| STRING | β | ||
this field detect shows which channel of integration/dashboard makes this transaction, this field will be returned in the IPN, callback and query transaction | ||||
| ||||
| OBJECT | β | ||
This object will contain 3Ds details of the card | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| INT | N/A | N/A | β |
This parameter indicates the agreement description which you can use to distinguish your agreements and you can also use it as a title for your agreement. | ||||
| STRING | N/A | N/A | β |
#TODO# | ||||
| STRING | N/A | N/A | β |
#TODO# | ||||
| STRING | N/A | N/A | β |
#TODO# | ||||
| STRING | N/A | N/A | β |
#TODO# | ||||
| STRING | N/A | N/A | β |
CAVV is a cryptographic value generated during a 3D Secure transaction (e.g., Visa Secure, Mastercard Identity Check, AMEX SafeKey). It proves that authentication was performed by the cardholder. | ||||
| STRING | N/A | N/A | β |
UCAF is a security field used to pass authentication data between merchants, payment processors, and card issuers. | ||||
| STRING | N/A | N/A | β |
This parameter shares 3Ds version which vary from card to another | ||||
| STRING | β | ||
Trace code (trace) is the parameter that Indicates the code that PayTabs can trace this response with | ||||
| ||||
| STRING | β | ||
Trace code (trace) is the parameter that Indicates the code that PayTabs can trace this response with | ||||
| ||||
| INT | β | ||
This parameter is a status code, that shows the code of the error and will be followed with message field that clarify the error | ||||
| ||||
| STRING | β | ||
This parameter is showing error message which is always shown after code parameter shown in the response | ||||
| ||||
| STRING | β | ||
Indicates the same as Transaction Reference on the PayTabs side check details on [Response Parameters | tran_ref], but it's used for forsa refund transactions | ||||
| ||||
| STRING | β | ||
it transaction reference related to forsa provider( payment method, it's differs from paytabs reference | ||||
| ||||
| STRING | β | ||
Indicates the same as Transaction Reference on the PayTabs side check details on [Response Parameters | tran_ref], but it's in the response of the refund of forsa #TODO#ADDFORSA ENDOINTHERE# | ||||
| ||||
| DECIMAL | 0.01 | 99999999.99 | β |
indicate the refunded amount from the normal detected transaction, means that you may partial refund not full | ||||
| ||||
| #boolean | β | ||
boolean field indicates if the refund is done or not | ||||
| ||||
| STRING | β | ||
Indicates the customer reference that is provided from the merchant side. | ||||
| ||||
| STRING | β | ||
Indicates the link to which customers should be directed to complete their invoice payment. | ||||
| ||||
| OBJECT | β | ||
Indicates the form of payment information in detail. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
The type of payment method used (e.g., 'Visa', 'Mastercard', 'ApplePay', 'Amex', etc). | ||||
| STRING | N/A | N/A | β |
Specifies whether the card is a 'Credit' or 'Debit' card. For all payments other than bank cards, this parameter will not be present. | ||||
| STRING | N/A | N/A | β |
The card network or brand (e.g., 'Visa', 'Mastercard', 'Amex'). For all payments other than bank cards, this parameter will be empty. | ||||
| STRING | N/A | N/A | β |
A masked representation of the card number for security purposes. For all payments other than bank cards, this parameter will shows the payment method name. | ||||
| INT | N/A | N/A | β |
The expiration month of the card (1-12). For all payments other than bank cards, this parameter will not be present. | ||||
| INT | N/A | N/A | β |
The expiration year of the card (e.g., 2027). For all payments other than bank cards, this parameter will not be present. | ||||
| STRING | N/A | N/A | β |
The two-letter country code (ISO 3166-1 alpha-2) of the payment method issuer (e.g., 'SA' for Saudi Arabia). | ||||
| STRING | N/A | N/A | β |
The name of the financial institution that issued the card, or funded the installment plan (for example, 'Valu', 'Arab National Bank', etc) | ||||
| OBJECT | β | ||
The main object containing contact transaction details. | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
A unique identifier for the transaction session. | ||||
| STRING | N/A | N/A | β |
The invoice number for tracking the payment plan. | ||||
| STRING | N/A | N/A | β |
The unique identifier of the client (customer ID). | ||||
| DECIMAL | N/A | N/A | β |
The total price of all items in the installment plan. | ||||
| DECIMAL | N/A | N/A | β |
The total down payment amount for all items. | ||||
| Array | N/A | N/A | β |
A list of items included in the contact transaction. | ||||
Nested Parameter | Data Type | Min | Max | Required |
| STRING | N/A | N/A | β |
The unique identifier of the item being purchased. | ||||
| DECIMAL | N/A | N/A | β |
The total price of the item in the installment plan. | ||||
| DECIMAL | N/A | N/A | β |
The initial amount paid upfront. | ||||
| INT | N/A | N/A | β |
The number of months (or installments) for repayment. | ||||
| DECIMAL | N/A | N/A | β |
Any administrative fees associated with the plan. | ||||
| BOOLEAN | N/A | N/A | β |
Indicates if the item qualifies for a bonus offer. | ||||
| DATE | Required for search by page for a specific day, created_date_from and created_date_to should be the same date, date format DD/MM/YYYY | β | |
Show invoices resuts in a spicic date. | ||||
| ||||
| DATE | Required for search by page for a specific day, created_date_from and created_date_to should be the same date, date format DD/MM/YYYY | β | |
Show invoices resuts in a spicic date. | ||||
| ||||
| INT | This field is only accepted if the search request is by date range only (so no cart ID/customer ref etc), and the date range is a single day (so from and to date must be the same). The value for page can be between 1 and 20. If no page value is provided, then 1 is assumed. | β | |
Show invoices resuts in a spicic page. | ||||
| ||||
| OBJECT | β | ||
this object will shows the paging paramters details | ||||
| ||||
Nested Parameter | Data Type | Min | Max | Required |
| INT | N/A | N/A | β |
the current page number | ||||
| INT | N/A | N/A | β |
the max number of items per page | ||||
| INT | N/A | N/A | β |
the actual number of items on this page | ||||
| INT | N/A | N/A | β |
the total items available over all pages. | ||||
Request & Response Payload Samplesβ
- Required Parameters Sample Payloads
- Optional Parameters Sample Payloads
The below sample request payload will show you how you can pass the above-mentioned required parameters, which are needed to be passed with valid values to perform a request. Along with the response payload received after using this request payload.
- Sample Request Payload
- Sample Response Payload
{
"profile_id": "987###",
"tran_type": "sale",
"tran_class": "ecom",
"cart_id": "CART#1001",
"cart_currency": "SAR",
"cart_amount": 500,
"cart_description": "Description of the items/services",
"invoice": {
"line_items": [
{
"unit_cost": 100,
"quantity":5
}
]
}
}
{
"tran_ref": "TST22********159",
"tran_type": "Sale",
"cart_id": "CART#1001",
"cart_description": "Description of the items/services",
"cart_currency": "SAR",
"cart_amount": "500",
"return": "none",
"redirect_url": "https://secure.paytabs.com/payment/page/5994585B6B*************B481739688688",
"invoice": {
"line_items": [
{
"unit_cost": "100",
"quantity": "5",
}
]
},
"serviceId": 2,
"profileId": 9*****4,
"merchantId": 1*****7,
"trace": "PMN****4.63****A8.00****C4"
}
The below sample request payload will show you how you can pass the above-mentioned optional parameters, which are needed to be passed with valid values to perform a request. Along with the response payload received after using this request payload.
- Sample Request Payload
- Sample Response Payload
{
"profile_id": **Your profile ID**,
"tran_type": "sale",
"tran_class": "ecom",
"cart_description": "Description of the items/services",
"cart_id": "Unique order reference00",
"cart_amount": 500,
"cart_currency": "SAR",
"paypage_lang": "en",
"return":"** Valid Return URL **",
"callback":"** Valid callback URL **",
"customer_details": {
"name": "FirstName LastName",
"email": "[email protected]",
"phone": "0522222222",
"street1": "address street",
"city": "cc",
"state": "C",
"country": "AE",
"zip": "12345"
},
"shipping_details": {
"name": "FirstName LastName",
"email": "[email protected]",
"phone": "971555555555",
"street1": "street2",
"city": "dubai",
"state": "dubai",
"country": "AE",
"zip": "54321"
},
"invoice": {
"id": 3128281,
"shipping_charges": "0",
"extra_charges": "0",
"extra_discount": "0",
"total": "500",
"activation_date": 0,
"expiry_date": 0,
"due_date": 0,
"issue_date": 1733496740,
"line_items": [
{
"unit_cost": "100",
"quantity": "5",
"net_total": "500",
"discount_rate": "0",
"discount_amount": "0",
"tax_rate": "0",
"tax_total": "0",
"total": "500"
}
]
},
"user_defined": {
"udf1": "UDF1 Test",
"udf2": "UDF2 Test",
"udf3": "UDF3 Test",
"udf4": "UDF4 Test",
"udf5": "UDF5 Test",
"udf6": "UDF6 Test",
"udf7": "UDF7 Test",
"udf8": "UDF8 Test",
"udf9": "UDF9 Test"
},
}
{
"tran_ref": "TST22********159",
"tran_type": "Sale",
"cart_id": "CART#1001",
"cart_description": "Description of the items/services",
"cart_currency": "SAR",
"cart_amount": "500.00",
"return":"** Valid Return URL **",
"callback":"** Valid callback URL **",
"redirect_url": "https://secure.paytabs.com/payment/page/599455B6B************B4817FD44688",
"invoice": {
"id": 3128281,
"shipping_charges": "0",
"extra_charges": "0",
"extra_discount": "0",
"total": "500",
"activation_date": 0,
"expiry_date": 0,
"due_date": 0,
"issue_date": 1733496740,
"line_items": [
{
"unit_cost": "500",
"quantity": "5",
"net_total": "500",
"discount_rate": "0",
"discount_amount": "0",
"tax_rate": "0",
"tax_total": "0",
"total": "500"
}
]
},
"customer_details": {
"name": "FirstName LastName",
"email": "[email protected]",
"phone": "0522222222",
"street1": "address street",
"city": "cc",
"state": "C",
"country": "AE",
"zip": "12345"
},
"shipping_details": {
"name": "FirstName LastName",
"email": "[email protected]",
"phone": "971555555555",
"street1": "street2",
"city": "dubai",
"state": "dubai",
"country": "AE",
"zip": "54321"
},
"user_defined": {
"test": "UDF1 Test",
"test2": "UDF2 Test",
"udf3": "UDF3 Test",
"udf4": "UDF4 Test",
"udf5": "UDF5 Test",
"udf6": "UDF6 Test",
"udf7": "UDF7 Test",
"udf8": "UDF8 Test",
"udf9": "UDF9 Test"
},
"serviceId": 2,
"profileId": 9*****4,
"merchantId": 1*****7,
"trace": "PMN****4.63****A8.00****C4"
}
The Payment Page Experienceβ
Reaching this point, you are now able to initiate an Invoice through the payment endpoint API request and as you now, the process involves several key steps that ensure a smooth payment and tracking experience for both you and customers. Hereβs how it works:
-
Initiating the Request: Once you initiate a payment request, you will receive a response that includes a redirect URL. This URL is crucial for guiding your customer through the payment process.
"redirect_url": "https://secure.paytabs.com/payment/page/599458B182E5B6B********************B4817FD44318539688688",
-
Redirecting the Customer: You should redirect your customer to this URL as you normally would in a payment transaction. This step allows the customer to complete their payment securely and efficiently. Below are the resulted payment page that your customer will be redirected to:
-
Tracking in the Merchant Dashboard: After the payment is completed, the transaction will be displayed in your Merchant Dashboard. You can view the details of it in the transaction view.
This process ensures that you have full visibility and control over your split payouts, from initiating the transaction to tracking its completion in the dashboard.