diff --git a/docs/developers/apis/create-invoice.RequestSchema.json b/docs/developers/apis/create-invoice.RequestSchema.json index 68abde9..26095ad 100644 --- a/docs/developers/apis/create-invoice.RequestSchema.json +++ b/docs/developers/apis/create-invoice.RequestSchema.json @@ -1 +1 @@ -{"title":"Body","body":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer class for `Invoice` instances, inheriting from `BaseInvoiceSerializer` and\n`CheckoutSerializer`. It provides methods for creating invoices, invoice items, and transactions.","properties":{"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"due_date":{"type":"string","format":"date","description":"The date by which the customer is expected to make payment for the invoice."},"invoice_items":{"type":"array","items":{"type":"object","description":"Serializer to use for `InvoiceItem` instances.\n\nThe unit_price, quantity, description and sku fields are required.\nThe rest are optional.\n\nThe class includes a method to calculate the discount on the invoice and another to calculate the total values.","properties":{"id":{"type":"integer","readOnly":true},"invoice":{"type":["integer","null"],"description":"Associated invoice."},"sku":{"type":"string","description":"Unique identifier for the invoice item.","maxLength":255},"description":{"type":"string","description":"Product name or a brief description of the item.","maxLength":255},"quantity":{"type":"string","format":"decimal","description":"Number of units of the product."},"unit_price":{"type":"string","format":"decimal","description":"Price per unit of the product, excluding tax."},"tax_rate":{"type":"string","format":"decimal","description":"Tax rate applied to the invoice item."},"tax_amount":{"type":"string","format":"decimal","description":"Total tax amount for the invoice item."},"discount_percentage":{"type":"string","format":"decimal","description":"Percentage-based discount applied to the invoice item. The calculated discount cannot exceed theitem's total value, including tax."},"discount_amount":{"type":"string","format":"decimal","description":"Fixed amount discount applied to the invoice item. The discount cannot exceed the item's total value, including tax."},"total_excl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, excluding tax. This is calculated as (unit_price * quantity) - discount."},"total_incl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, including tax. This is calculated as (unit_price * quantity) - discount + applicable tax."},"currency_code":{"type":"string","description":"For internal purposes: it'll be overridden by the main currency_code"}},"required":["currency_code","description","id","quantity","sku","unit_price"],"title":"InvoiceItem"},"description":"The list of items for the invoice."},"invoice_number":{"type":"string","description":"A unique identifier for the invoice, typically used for tracking and referencing purposes.","maxLength":255},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"company_name":{"type":"string","description":"The company name is used for invoice API.","maxLength":64},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"discount_amount":{"type":"string","format":"decimal","description":"The fixed amount discount applied to the full invoice amount, including taxes. If set, the discount_percentage field will be set to null. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"discount_percentage":{"type":"string","format":"decimal","description":"The percentage-based discount applied to the full invoice amount, including taxes. If set, the discount_amount field will be automatically calculated. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"invoice_id":{"type":"integer","readOnly":true},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shipping_excl_tax":{"type":"string","format":"decimal","title":"Shipping Excl. Tax","description":"The cost of shipping for the invoice, excluding taxes."},"shipping_incl_tax":{"type":"string","format":"decimal","title":"Shipping Incl. Tax","description":"The cost of shipping for the invoice, including all applicable taxes."},"shipping_method":{"type":"string","description":"The method or service used for shipping the items associated with the invoice."},"shipping_tax_rate":{"type":"string","format":"decimal","description":"The tax rate applied to the shipping cost, expressed as a percentage. "},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"status":{"enum":["sent","paid","overdue","canceled"],"type":"string","x-spec-enum-id":"c131c51a82b6f22a","readOnly":true,"description":"Current status of the invoice. Can be one of the following: `sent`, `paid`, `overdue`, `canceled`.\n\n* `sent` - Sent\n* `paid` - Paid\n* `overdue` - Overdue\n* `canceled` - Canceled"},"subtotal":{"type":"string","format":"decimal","description":"Sum of total_incl_tax's of all invoice items."},"tax_amount":{"type":"string","format":"decimal","description":"The total amount of tax applied to the invoice."},"tax_rate":{"type":"string","format":"decimal","title":"Tax","description":"The tax rate applied to the invoice, expressed as a percentage."},"total_excl_tax":{"type":"string","format":"decimal","title":"Total Excl. Tax","description":"The total amount of the invoice, excluding taxes."},"total_incl_tax":{"type":"string","format":"decimal","title":"Total Incl. Tax","description":"The total amount of the invoice, including all applicable taxes."},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","due_date","invoice_id","invoice_items","invoice_number","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","status","type"],"example":{"type":"payment_request","invoice_number":"INV-001","due_date":"2030-12-31","currency_code":"KWD","pg_codes":["knet"],"invoice_items":[{"sku":"ITEM-001","description":"Product description","unit_price":"10.000","quantity":"1"}]},"title":"InvoicePOSTRequest"}},"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Serializer class for `Invoice` instances, inheriting from `BaseInvoiceSerializer` and\n`CheckoutSerializer`. It provides methods for creating invoices, invoice items, and transactions.","properties":{"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"due_date":{"type":"string","format":"date","description":"The date by which the customer is expected to make payment for the invoice."},"invoice_items":{"type":"array","items":{"type":"object","description":"Serializer to use for `InvoiceItem` instances.\n\nThe unit_price, quantity, description and sku fields are required.\nThe rest are optional.\n\nThe class includes a method to calculate the discount on the invoice and another to calculate the total values.","properties":{"id":{"type":"integer","readOnly":true},"invoice":{"type":["integer","null"],"description":"Associated invoice."},"sku":{"type":"string","description":"Unique identifier for the invoice item.","maxLength":255},"description":{"type":"string","description":"Product name or a brief description of the item.","maxLength":255},"quantity":{"type":"string","format":"decimal","description":"Number of units of the product."},"unit_price":{"type":"string","format":"decimal","description":"Price per unit of the product, excluding tax."},"tax_rate":{"type":"string","format":"decimal","description":"Tax rate applied to the invoice item."},"tax_amount":{"type":"string","format":"decimal","description":"Total tax amount for the invoice item."},"discount_percentage":{"type":"string","format":"decimal","description":"Percentage-based discount applied to the invoice item. The calculated discount cannot exceed theitem's total value, including tax."},"discount_amount":{"type":"string","format":"decimal","description":"Fixed amount discount applied to the invoice item. The discount cannot exceed the item's total value, including tax."},"total_excl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, excluding tax. This is calculated as (unit_price * quantity) - discount."},"total_incl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, including tax. This is calculated as (unit_price * quantity) - discount + applicable tax."},"currency_code":{"type":"string","description":"For internal purposes: it'll be overridden by the main currency_code"}},"required":["currency_code","description","id","quantity","sku","unit_price"],"title":"InvoiceItem"},"description":"The list of items for the invoice."},"invoice_number":{"type":"string","description":"A unique identifier for the invoice, typically used for tracking and referencing purposes.","maxLength":255},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"company_name":{"type":"string","description":"The company name is used for invoice API.","maxLength":64},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"discount_amount":{"type":"string","format":"decimal","description":"The fixed amount discount applied to the full invoice amount, including taxes. If set, the discount_percentage field will be set to null. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"discount_percentage":{"type":"string","format":"decimal","description":"The percentage-based discount applied to the full invoice amount, including taxes. If set, the discount_amount field will be automatically calculated. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"invoice_id":{"type":"integer","readOnly":true},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shipping_excl_tax":{"type":"string","format":"decimal","title":"Shipping Excl. Tax","description":"The cost of shipping for the invoice, excluding taxes."},"shipping_incl_tax":{"type":"string","format":"decimal","title":"Shipping Incl. Tax","description":"The cost of shipping for the invoice, including all applicable taxes."},"shipping_method":{"type":"string","description":"The method or service used for shipping the items associated with the invoice."},"shipping_tax_rate":{"type":"string","format":"decimal","description":"The tax rate applied to the shipping cost, expressed as a percentage. "},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"status":{"enum":["sent","paid","overdue","canceled"],"type":"string","x-spec-enum-id":"c131c51a82b6f22a","readOnly":true,"description":"Current status of the invoice. Can be one of the following: `sent`, `paid`, `overdue`, `canceled`.\n\n* `sent` - Sent\n* `paid` - Paid\n* `overdue` - Overdue\n* `canceled` - Canceled"},"subtotal":{"type":"string","format":"decimal","description":"Sum of total_incl_tax's of all invoice items."},"tax_amount":{"type":"string","format":"decimal","description":"The total amount of tax applied to the invoice."},"tax_rate":{"type":"string","format":"decimal","title":"Tax","description":"The tax rate applied to the invoice, expressed as a percentage."},"total_excl_tax":{"type":"string","format":"decimal","title":"Total Excl. Tax","description":"The total amount of the invoice, excluding taxes."},"total_incl_tax":{"type":"string","format":"decimal","title":"Total Incl. Tax","description":"The total amount of the invoice, including all applicable taxes."},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","due_date","invoice_id","invoice_items","invoice_number","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","status","type"],"example":{"type":"payment_request","invoice_number":"INV-001","due_date":"2030-12-31","currency_code":"KWD","pg_codes":["knet"],"invoice_items":[{"sku":"ITEM-001","description":"Product description","unit_price":"10.000","quantity":"1"}]},"title":"InvoicePOSTRequest"}},"multipart/form-data":{"schema":{"type":"object","description":"Serializer class for `Invoice` instances, inheriting from `BaseInvoiceSerializer` and\n`CheckoutSerializer`. It provides methods for creating invoices, invoice items, and transactions.","properties":{"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"due_date":{"type":"string","format":"date","description":"The date by which the customer is expected to make payment for the invoice."},"invoice_items":{"type":"array","items":{"type":"object","description":"Serializer to use for `InvoiceItem` instances.\n\nThe unit_price, quantity, description and sku fields are required.\nThe rest are optional.\n\nThe class includes a method to calculate the discount on the invoice and another to calculate the total values.","properties":{"id":{"type":"integer","readOnly":true},"invoice":{"type":["integer","null"],"description":"Associated invoice."},"sku":{"type":"string","description":"Unique identifier for the invoice item.","maxLength":255},"description":{"type":"string","description":"Product name or a brief description of the item.","maxLength":255},"quantity":{"type":"string","format":"decimal","description":"Number of units of the product."},"unit_price":{"type":"string","format":"decimal","description":"Price per unit of the product, excluding tax."},"tax_rate":{"type":"string","format":"decimal","description":"Tax rate applied to the invoice item."},"tax_amount":{"type":"string","format":"decimal","description":"Total tax amount for the invoice item."},"discount_percentage":{"type":"string","format":"decimal","description":"Percentage-based discount applied to the invoice item. The calculated discount cannot exceed theitem's total value, including tax."},"discount_amount":{"type":"string","format":"decimal","description":"Fixed amount discount applied to the invoice item. The discount cannot exceed the item's total value, including tax."},"total_excl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, excluding tax. This is calculated as (unit_price * quantity) - discount."},"total_incl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, including tax. This is calculated as (unit_price * quantity) - discount + applicable tax."},"currency_code":{"type":"string","description":"For internal purposes: it'll be overridden by the main currency_code"}},"required":["currency_code","description","id","quantity","sku","unit_price"],"title":"InvoiceItem"},"description":"The list of items for the invoice."},"invoice_number":{"type":"string","description":"A unique identifier for the invoice, typically used for tracking and referencing purposes.","maxLength":255},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"company_name":{"type":"string","description":"The company name is used for invoice API.","maxLength":64},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"discount_amount":{"type":"string","format":"decimal","description":"The fixed amount discount applied to the full invoice amount, including taxes. If set, the discount_percentage field will be set to null. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"discount_percentage":{"type":"string","format":"decimal","description":"The percentage-based discount applied to the full invoice amount, including taxes. If set, the discount_amount field will be automatically calculated. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"invoice_id":{"type":"integer","readOnly":true},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shipping_excl_tax":{"type":"string","format":"decimal","title":"Shipping Excl. Tax","description":"The cost of shipping for the invoice, excluding taxes."},"shipping_incl_tax":{"type":"string","format":"decimal","title":"Shipping Incl. Tax","description":"The cost of shipping for the invoice, including all applicable taxes."},"shipping_method":{"type":"string","description":"The method or service used for shipping the items associated with the invoice."},"shipping_tax_rate":{"type":"string","format":"decimal","description":"The tax rate applied to the shipping cost, expressed as a percentage. "},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"status":{"enum":["sent","paid","overdue","canceled"],"type":"string","x-spec-enum-id":"c131c51a82b6f22a","readOnly":true,"description":"Current status of the invoice. Can be one of the following: `sent`, `paid`, `overdue`, `canceled`.\n\n* `sent` - Sent\n* `paid` - Paid\n* `overdue` - Overdue\n* `canceled` - Canceled"},"subtotal":{"type":"string","format":"decimal","description":"Sum of total_incl_tax's of all invoice items."},"tax_amount":{"type":"string","format":"decimal","description":"The total amount of tax applied to the invoice."},"tax_rate":{"type":"string","format":"decimal","title":"Tax","description":"The tax rate applied to the invoice, expressed as a percentage."},"total_excl_tax":{"type":"string","format":"decimal","title":"Total Excl. Tax","description":"The total amount of the invoice, excluding taxes."},"total_incl_tax":{"type":"string","format":"decimal","title":"Total Incl. Tax","description":"The total amount of the invoice, including all applicable taxes."},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","due_date","invoice_id","invoice_items","invoice_number","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","status","type"],"example":{"type":"payment_request","invoice_number":"INV-001","due_date":"2030-12-31","currency_code":"KWD","pg_codes":["knet"],"invoice_items":[{"sku":"ITEM-001","description":"Product description","unit_price":"10.000","quantity":"1"}]},"title":"InvoicePOSTRequest"}}},"required":true}} \ No newline at end of file +{"title":"Body","body":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer class for `Invoice` instances, inheriting from `BaseInvoiceSerializer` and\n`CheckoutSerializer`. It provides methods for creating invoices, invoice items, and transactions.","properties":{"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"due_date":{"type":"string","format":"date","description":"The date by which the customer is expected to make payment for the invoice."},"invoice_items":{"type":"array","items":{"type":"object","description":"Serializer to use for `InvoiceItem` instances.\n\nThe unit_price, quantity, description and sku fields are required.\nThe rest are optional.\n\nThe class includes a method to calculate the discount on the invoice and another to calculate the total values.","properties":{"id":{"type":"integer","readOnly":true},"invoice":{"type":["integer","null"],"description":"Associated invoice."},"sku":{"type":"string","description":"Unique identifier for the invoice item.","maxLength":255},"description":{"type":"string","description":"Product name or a brief description of the item.","maxLength":255},"quantity":{"type":"string","format":"decimal","description":"Number of units of the product."},"unit_price":{"type":"string","format":"decimal","description":"Price per unit of the product, excluding tax."},"tax_rate":{"type":"string","format":"decimal","description":"Tax rate applied to the invoice item."},"tax_amount":{"type":"string","format":"decimal","description":"Total tax amount for the invoice item."},"discount_percentage":{"type":"string","format":"decimal","description":"Percentage-based discount applied to the invoice item. The calculated discount cannot exceed theitem's total value, including tax."},"discount_amount":{"type":"string","format":"decimal","description":"Fixed amount discount applied to the invoice item. The discount cannot exceed the item's total value, including tax."},"total_excl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, excluding tax. This is calculated as (unit_price * quantity) - discount."},"total_incl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, including tax. This is calculated as (unit_price * quantity) - discount + applicable tax."},"currency_code":{"type":"string","description":"For internal purposes: it'll be overridden by the main currency_code"}},"required":["currency_code","description","id","quantity","sku","unit_price"],"title":"InvoiceItem"},"description":"The list of items for the invoice."},"invoice_number":{"type":"string","description":"A unique identifier for the invoice, typically used for tracking and referencing purposes.","maxLength":255},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"company_name":{"type":"string","description":"The company name is used for invoice API.","maxLength":64},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"discount_amount":{"type":"string","format":"decimal","description":"The fixed amount discount applied to the full invoice amount, including taxes. If set, the discount_percentage field will be set to null. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"discount_percentage":{"type":"string","format":"decimal","description":"The percentage-based discount applied to the full invoice amount, including taxes. If set, the discount_amount field will be automatically calculated. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"invoice_id":{"type":"integer","readOnly":true},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shipping_excl_tax":{"type":"string","format":"decimal","title":"Shipping Excl. Tax","description":"The cost of shipping for the invoice, excluding taxes."},"shipping_incl_tax":{"type":"string","format":"decimal","title":"Shipping Incl. Tax","description":"The cost of shipping for the invoice, including all applicable taxes."},"shipping_method":{"type":"string","description":"The method or service used for shipping the items associated with the invoice."},"shipping_tax_rate":{"type":"string","format":"decimal","description":"The tax rate applied to the shipping cost, expressed as a percentage. "},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"status":{"enum":["sent","paid","overdue","canceled"],"type":"string","x-spec-enum-id":"c131c51a82b6f22a","readOnly":true,"description":"Current status of the invoice. Can be one of the following: `sent`, `paid`, `overdue`, `canceled`.\n\n* `sent` - Sent\n* `paid` - Paid\n* `overdue` - Overdue\n* `canceled` - Canceled"},"subtotal":{"type":"string","format":"decimal","description":"Sum of total_incl_tax's of all invoice items."},"tax_amount":{"type":"string","format":"decimal","description":"The total amount of tax applied to the invoice."},"tax_rate":{"type":"string","format":"decimal","title":"Tax","description":"The tax rate applied to the invoice, expressed as a percentage."},"total_excl_tax":{"type":"string","format":"decimal","title":"Total Excl. Tax","description":"The total amount of the invoice, excluding taxes."},"total_incl_tax":{"type":"string","format":"decimal","title":"Total Incl. Tax","description":"The total amount of the invoice, including all applicable taxes."},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","due_date","invoice_id","invoice_items","invoice_number","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","status","type"],"example":{"type":"payment_request","invoice_number":"INV-001","due_date":"2030-12-31","currency_code":"KWD","pg_codes":["knet"],"invoice_items":[{"sku":"ITEM-001","description":"Product description","unit_price":"10.000","quantity":"1"}]},"title":"InvoicePOSTRequest"}},"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Serializer class for `Invoice` instances, inheriting from `BaseInvoiceSerializer` and\n`CheckoutSerializer`. It provides methods for creating invoices, invoice items, and transactions.","properties":{"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"due_date":{"type":"string","format":"date","description":"The date by which the customer is expected to make payment for the invoice."},"invoice_items":{"type":"array","items":{"type":"object","description":"Serializer to use for `InvoiceItem` instances.\n\nThe unit_price, quantity, description and sku fields are required.\nThe rest are optional.\n\nThe class includes a method to calculate the discount on the invoice and another to calculate the total values.","properties":{"id":{"type":"integer","readOnly":true},"invoice":{"type":["integer","null"],"description":"Associated invoice."},"sku":{"type":"string","description":"Unique identifier for the invoice item.","maxLength":255},"description":{"type":"string","description":"Product name or a brief description of the item.","maxLength":255},"quantity":{"type":"string","format":"decimal","description":"Number of units of the product."},"unit_price":{"type":"string","format":"decimal","description":"Price per unit of the product, excluding tax."},"tax_rate":{"type":"string","format":"decimal","description":"Tax rate applied to the invoice item."},"tax_amount":{"type":"string","format":"decimal","description":"Total tax amount for the invoice item."},"discount_percentage":{"type":"string","format":"decimal","description":"Percentage-based discount applied to the invoice item. The calculated discount cannot exceed theitem's total value, including tax."},"discount_amount":{"type":"string","format":"decimal","description":"Fixed amount discount applied to the invoice item. The discount cannot exceed the item's total value, including tax."},"total_excl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, excluding tax. This is calculated as (unit_price * quantity) - discount."},"total_incl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, including tax. This is calculated as (unit_price * quantity) - discount + applicable tax."},"currency_code":{"type":"string","description":"For internal purposes: it'll be overridden by the main currency_code"}},"required":["currency_code","description","id","quantity","sku","unit_price"],"title":"InvoiceItem"},"description":"The list of items for the invoice."},"invoice_number":{"type":"string","description":"A unique identifier for the invoice, typically used for tracking and referencing purposes.","maxLength":255},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"company_name":{"type":"string","description":"The company name is used for invoice API.","maxLength":64},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"discount_amount":{"type":"string","format":"decimal","description":"The fixed amount discount applied to the full invoice amount, including taxes. If set, the discount_percentage field will be set to null. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"discount_percentage":{"type":"string","format":"decimal","description":"The percentage-based discount applied to the full invoice amount, including taxes. If set, the discount_amount field will be automatically calculated. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"invoice_id":{"type":"integer","readOnly":true},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shipping_excl_tax":{"type":"string","format":"decimal","title":"Shipping Excl. Tax","description":"The cost of shipping for the invoice, excluding taxes."},"shipping_incl_tax":{"type":"string","format":"decimal","title":"Shipping Incl. Tax","description":"The cost of shipping for the invoice, including all applicable taxes."},"shipping_method":{"type":"string","description":"The method or service used for shipping the items associated with the invoice."},"shipping_tax_rate":{"type":"string","format":"decimal","description":"The tax rate applied to the shipping cost, expressed as a percentage. "},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"status":{"enum":["sent","paid","overdue","canceled"],"type":"string","x-spec-enum-id":"c131c51a82b6f22a","readOnly":true,"description":"Current status of the invoice. Can be one of the following: `sent`, `paid`, `overdue`, `canceled`.\n\n* `sent` - Sent\n* `paid` - Paid\n* `overdue` - Overdue\n* `canceled` - Canceled"},"subtotal":{"type":"string","format":"decimal","description":"Sum of total_incl_tax's of all invoice items."},"tax_amount":{"type":"string","format":"decimal","description":"The total amount of tax applied to the invoice."},"tax_rate":{"type":"string","format":"decimal","title":"Tax","description":"The tax rate applied to the invoice, expressed as a percentage."},"total_excl_tax":{"type":"string","format":"decimal","title":"Total Excl. Tax","description":"The total amount of the invoice, excluding taxes."},"total_incl_tax":{"type":"string","format":"decimal","title":"Total Incl. Tax","description":"The total amount of the invoice, including all applicable taxes."},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","due_date","invoice_id","invoice_items","invoice_number","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","status","type"],"example":{"type":"payment_request","invoice_number":"INV-001","due_date":"2030-12-31","currency_code":"KWD","pg_codes":["knet"],"invoice_items":[{"sku":"ITEM-001","description":"Product description","unit_price":"10.000","quantity":"1"}]},"title":"InvoicePOSTRequest"}},"multipart/form-data":{"schema":{"type":"object","description":"Serializer class for `Invoice` instances, inheriting from `BaseInvoiceSerializer` and\n`CheckoutSerializer`. It provides methods for creating invoices, invoice items, and transactions.","properties":{"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"due_date":{"type":"string","format":"date","description":"The date by which the customer is expected to make payment for the invoice."},"invoice_items":{"type":"array","items":{"type":"object","description":"Serializer to use for `InvoiceItem` instances.\n\nThe unit_price, quantity, description and sku fields are required.\nThe rest are optional.\n\nThe class includes a method to calculate the discount on the invoice and another to calculate the total values.","properties":{"id":{"type":"integer","readOnly":true},"invoice":{"type":["integer","null"],"description":"Associated invoice."},"sku":{"type":"string","description":"Unique identifier for the invoice item.","maxLength":255},"description":{"type":"string","description":"Product name or a brief description of the item.","maxLength":255},"quantity":{"type":"string","format":"decimal","description":"Number of units of the product."},"unit_price":{"type":"string","format":"decimal","description":"Price per unit of the product, excluding tax."},"tax_rate":{"type":"string","format":"decimal","description":"Tax rate applied to the invoice item."},"tax_amount":{"type":"string","format":"decimal","description":"Total tax amount for the invoice item."},"discount_percentage":{"type":"string","format":"decimal","description":"Percentage-based discount applied to the invoice item. The calculated discount cannot exceed theitem's total value, including tax."},"discount_amount":{"type":"string","format":"decimal","description":"Fixed amount discount applied to the invoice item. The discount cannot exceed the item's total value, including tax."},"total_excl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, excluding tax. This is calculated as (unit_price * quantity) - discount."},"total_incl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, including tax. This is calculated as (unit_price * quantity) - discount + applicable tax."},"currency_code":{"type":"string","description":"For internal purposes: it'll be overridden by the main currency_code"}},"required":["currency_code","description","id","quantity","sku","unit_price"],"title":"InvoiceItem"},"description":"The list of items for the invoice."},"invoice_number":{"type":"string","description":"A unique identifier for the invoice, typically used for tracking and referencing purposes.","maxLength":255},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"company_name":{"type":"string","description":"The company name is used for invoice API.","maxLength":64},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"discount_amount":{"type":"string","format":"decimal","description":"The fixed amount discount applied to the full invoice amount, including taxes. If set, the discount_percentage field will be set to null. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"discount_percentage":{"type":"string","format":"decimal","description":"The percentage-based discount applied to the full invoice amount, including taxes. If set, the discount_amount field will be automatically calculated. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"invoice_id":{"type":"integer","readOnly":true},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shipping_excl_tax":{"type":"string","format":"decimal","title":"Shipping Excl. Tax","description":"The cost of shipping for the invoice, excluding taxes."},"shipping_incl_tax":{"type":"string","format":"decimal","title":"Shipping Incl. Tax","description":"The cost of shipping for the invoice, including all applicable taxes."},"shipping_method":{"type":"string","description":"The method or service used for shipping the items associated with the invoice."},"shipping_tax_rate":{"type":"string","format":"decimal","description":"The tax rate applied to the shipping cost, expressed as a percentage. "},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"status":{"enum":["sent","paid","overdue","canceled"],"type":"string","x-spec-enum-id":"c131c51a82b6f22a","readOnly":true,"description":"Current status of the invoice. Can be one of the following: `sent`, `paid`, `overdue`, `canceled`.\n\n* `sent` - Sent\n* `paid` - Paid\n* `overdue` - Overdue\n* `canceled` - Canceled"},"subtotal":{"type":"string","format":"decimal","description":"Sum of total_incl_tax's of all invoice items."},"tax_amount":{"type":"string","format":"decimal","description":"The total amount of tax applied to the invoice."},"tax_rate":{"type":"string","format":"decimal","title":"Tax","description":"The tax rate applied to the invoice, expressed as a percentage."},"total_excl_tax":{"type":"string","format":"decimal","title":"Total Excl. Tax","description":"The total amount of the invoice, excluding taxes."},"total_incl_tax":{"type":"string","format":"decimal","title":"Total Incl. Tax","description":"The total amount of the invoice, including all applicable taxes."},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","due_date","invoice_id","invoice_items","invoice_number","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","status","type"],"example":{"type":"payment_request","invoice_number":"INV-001","due_date":"2030-12-31","currency_code":"KWD","pg_codes":["knet"],"invoice_items":[{"sku":"ITEM-001","description":"Product description","unit_price":"10.000","quantity":"1"}]},"title":"InvoicePOSTRequest"}}},"required":true}} \ No newline at end of file diff --git a/docs/developers/apis/create-invoice.StatusCodes.json b/docs/developers/apis/create-invoice.StatusCodes.json index 81b6b37..2622a84 100644 --- a/docs/developers/apis/create-invoice.StatusCodes.json +++ b/docs/developers/apis/create-invoice.StatusCodes.json @@ -1 +1 @@ -{"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer class for `Invoice` instances, inheriting from `BaseInvoiceSerializer` and\n`CheckoutSerializer`. It provides methods for creating invoices, invoice items, and transactions.","properties":{"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"due_date":{"type":"string","format":"date","description":"The date by which the customer is expected to make payment for the invoice."},"invoice_items":{"type":"array","items":{"type":"object","description":"Serializer to use for `InvoiceItem` instances.\n\nThe unit_price, quantity, description and sku fields are required.\nThe rest are optional.\n\nThe class includes a method to calculate the discount on the invoice and another to calculate the total values.","properties":{"id":{"type":"integer","readOnly":true},"invoice":{"type":["integer","null"],"description":"Associated invoice."},"sku":{"type":"string","description":"Unique identifier for the invoice item.","maxLength":255},"description":{"type":"string","description":"Product name or a brief description of the item.","maxLength":255},"quantity":{"type":"string","format":"decimal","description":"Number of units of the product."},"unit_price":{"type":"string","format":"decimal","description":"Price per unit of the product, excluding tax."},"tax_rate":{"type":"string","format":"decimal","description":"Tax rate applied to the invoice item."},"tax_amount":{"type":"string","format":"decimal","description":"Total tax amount for the invoice item."},"discount_percentage":{"type":"string","format":"decimal","description":"Percentage-based discount applied to the invoice item. The calculated discount cannot exceed theitem's total value, including tax."},"discount_amount":{"type":"string","format":"decimal","description":"Fixed amount discount applied to the invoice item. The discount cannot exceed the item's total value, including tax."},"total_excl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, excluding tax. This is calculated as (unit_price * quantity) - discount."},"total_incl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, including tax. This is calculated as (unit_price * quantity) - discount + applicable tax."},"currency_code":{"type":"string","description":"For internal purposes: it'll be overridden by the main currency_code"}},"required":["currency_code","description","id","quantity","sku","unit_price"],"title":"InvoiceItem"},"description":"The list of items for the invoice."},"invoice_number":{"type":"string","description":"A unique identifier for the invoice, typically used for tracking and referencing purposes.","maxLength":255},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"company_name":{"type":"string","description":"The company name is used for invoice API.","maxLength":64},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"discount_amount":{"type":"string","format":"decimal","description":"The fixed amount discount applied to the full invoice amount, including taxes. If set, the discount_percentage field will be set to null. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"discount_percentage":{"type":"string","format":"decimal","description":"The percentage-based discount applied to the full invoice amount, including taxes. If set, the discount_amount field will be automatically calculated. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"invoice_id":{"type":"integer","readOnly":true},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shipping_excl_tax":{"type":"string","format":"decimal","title":"Shipping Excl. Tax","description":"The cost of shipping for the invoice, excluding taxes."},"shipping_incl_tax":{"type":"string","format":"decimal","title":"Shipping Incl. Tax","description":"The cost of shipping for the invoice, including all applicable taxes."},"shipping_method":{"type":"string","description":"The method or service used for shipping the items associated with the invoice."},"shipping_tax_rate":{"type":"string","format":"decimal","description":"The tax rate applied to the shipping cost, expressed as a percentage. "},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"status":{"enum":["sent","paid","overdue","canceled"],"type":"string","x-spec-enum-id":"c131c51a82b6f22a","readOnly":true,"description":"Current status of the invoice. Can be one of the following: `sent`, `paid`, `overdue`, `canceled`.\n\n* `sent` - Sent\n* `paid` - Paid\n* `overdue` - Overdue\n* `canceled` - Canceled"},"subtotal":{"type":"string","format":"decimal","description":"Sum of total_incl_tax's of all invoice items."},"tax_amount":{"type":"string","format":"decimal","description":"The total amount of tax applied to the invoice."},"tax_rate":{"type":"string","format":"decimal","title":"Tax","description":"The tax rate applied to the invoice, expressed as a percentage."},"total_excl_tax":{"type":"string","format":"decimal","title":"Total Excl. Tax","description":"The total amount of the invoice, excluding taxes."},"total_incl_tax":{"type":"string","format":"decimal","title":"Total Incl. Tax","description":"The total amount of the invoice, including all applicable taxes."},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","due_date","invoice_id","invoice_items","invoice_number","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","status","type"],"title":"InvoicePOSTResponse"}}},"description":""},"400":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"This field is required."}}},"title":"FieldErrors"},{"type":"object","properties":{"field_name":{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"To use sms notifications provide the `customer_phone` field."}}},"required":["field_name"],"title":"Nested"}},"required":["field_name"],"title":"NestedFieldErrors"},{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}],"title":"InvoiceClientErrors"}}},"description":""}}} \ No newline at end of file +{"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer class for `Invoice` instances, inheriting from `BaseInvoiceSerializer` and\n`CheckoutSerializer`. It provides methods for creating invoices, invoice items, and transactions.","properties":{"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"due_date":{"type":"string","format":"date","description":"The date by which the customer is expected to make payment for the invoice."},"invoice_items":{"type":"array","items":{"type":"object","description":"Serializer to use for `InvoiceItem` instances.\n\nThe unit_price, quantity, description and sku fields are required.\nThe rest are optional.\n\nThe class includes a method to calculate the discount on the invoice and another to calculate the total values.","properties":{"id":{"type":"integer","readOnly":true},"invoice":{"type":["integer","null"],"description":"Associated invoice."},"sku":{"type":"string","description":"Unique identifier for the invoice item.","maxLength":255},"description":{"type":"string","description":"Product name or a brief description of the item.","maxLength":255},"quantity":{"type":"string","format":"decimal","description":"Number of units of the product."},"unit_price":{"type":"string","format":"decimal","description":"Price per unit of the product, excluding tax."},"tax_rate":{"type":"string","format":"decimal","description":"Tax rate applied to the invoice item."},"tax_amount":{"type":"string","format":"decimal","description":"Total tax amount for the invoice item."},"discount_percentage":{"type":"string","format":"decimal","description":"Percentage-based discount applied to the invoice item. The calculated discount cannot exceed theitem's total value, including tax."},"discount_amount":{"type":"string","format":"decimal","description":"Fixed amount discount applied to the invoice item. The discount cannot exceed the item's total value, including tax."},"total_excl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, excluding tax. This is calculated as (unit_price * quantity) - discount."},"total_incl_tax":{"type":"string","format":"decimal","description":"Total value of the invoice item, including tax. This is calculated as (unit_price * quantity) - discount + applicable tax."},"currency_code":{"type":"string","description":"For internal purposes: it'll be overridden by the main currency_code"}},"required":["currency_code","description","id","quantity","sku","unit_price"],"title":"InvoiceItem"},"description":"The list of items for the invoice."},"invoice_number":{"type":"string","description":"A unique identifier for the invoice, typically used for tracking and referencing purposes.","maxLength":255},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"company_name":{"type":"string","description":"The company name is used for invoice API.","maxLength":64},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"discount_amount":{"type":"string","format":"decimal","description":"The fixed amount discount applied to the full invoice amount, including taxes. If set, the discount_percentage field will be set to null. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"discount_percentage":{"type":"string","format":"decimal","description":"The percentage-based discount applied to the full invoice amount, including taxes. If set, the discount_amount field will be automatically calculated. Both discount_amount and discount_percentage cannot be set simultaneously. The discount cannot be higher than the `total_excl_tax` field."},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"invoice_id":{"type":"integer","readOnly":true},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shipping_excl_tax":{"type":"string","format":"decimal","title":"Shipping Excl. Tax","description":"The cost of shipping for the invoice, excluding taxes."},"shipping_incl_tax":{"type":"string","format":"decimal","title":"Shipping Incl. Tax","description":"The cost of shipping for the invoice, including all applicable taxes."},"shipping_method":{"type":"string","description":"The method or service used for shipping the items associated with the invoice."},"shipping_tax_rate":{"type":"string","format":"decimal","description":"The tax rate applied to the shipping cost, expressed as a percentage. "},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"status":{"enum":["sent","paid","overdue","canceled"],"type":"string","x-spec-enum-id":"c131c51a82b6f22a","readOnly":true,"description":"Current status of the invoice. Can be one of the following: `sent`, `paid`, `overdue`, `canceled`.\n\n* `sent` - Sent\n* `paid` - Paid\n* `overdue` - Overdue\n* `canceled` - Canceled"},"subtotal":{"type":"string","format":"decimal","description":"Sum of total_incl_tax's of all invoice items."},"tax_amount":{"type":"string","format":"decimal","description":"The total amount of tax applied to the invoice."},"tax_rate":{"type":"string","format":"decimal","title":"Tax","description":"The tax rate applied to the invoice, expressed as a percentage."},"total_excl_tax":{"type":"string","format":"decimal","title":"Total Excl. Tax","description":"The total amount of the invoice, excluding taxes."},"total_incl_tax":{"type":"string","format":"decimal","title":"Total Incl. Tax","description":"The total amount of the invoice, including all applicable taxes."},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","due_date","invoice_id","invoice_items","invoice_number","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","status","type"],"title":"InvoicePOSTResponse"}}},"description":""},"400":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"This field is required."}}},"title":"FieldErrors"},{"type":"object","properties":{"field_name":{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"To use sms notifications provide the `customer_phone` field."}}},"required":["field_name"],"title":"Nested"}},"required":["field_name"],"title":"NestedFieldErrors"},{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}],"title":"InvoiceClientErrors"}}},"description":""}}} \ No newline at end of file diff --git a/docs/developers/apis/create-invoice.api.mdx b/docs/developers/apis/create-invoice.api.mdx index 81af72d..953a3af 100644 --- a/docs/developers/apis/create-invoice.api.mdx +++ b/docs/developers/apis/create-invoice.api.mdx @@ -5,7 +5,7 @@ description: "Create a new Invoice" sidebar_label: "Create a new Invoice" hide_title: true hide_table_of_contents: true -api: eJzsvftWG0m2PvgqseiZnzEtVNx8gbXOnIUBY8qGoi1sn+qiBoUyQ1K2U5nqzBSg7qq15iHmCedJZn1774iMvAiEcZ3VfX78YRlQZlx27IjY12//cyWdmkwXUZqchCt7K0FmdGGuouQ6jQKz0lkJTR5k0RQPrOytHNDXSqvE3KgTfugy+dOf/qTOTTaJ8jxKk/wyuUx+U/uzYqxOTTFOQ/Wb+mj+PosyE/rPqd8uk9/W19fpH175Zf/8RL03819XfwjNtYkxtPyHkSmKKBmt54XOChP+oGfF2CRFFNCof/iTnkbrX818HX9/rn5T+3Gspl4vqzqcRInSQWDy/Lnint7oPApojA/rbID3XFf9A50oHYZqqucTkxQqM3+fmbzI+yrNym/NepBOJiYLjH0w76s/l98LIfsY22Xyf6m1tWNdmBs99+axtrbHL8xyo6ajqyANTV8N00wVY6MKnY1MoX6x4xjx+9W52b7tD+sTWp38h+eXyUpnpdCjfGXvlxUZjdo/P1n5tbMiU3qThvOVvX+uBGlSmKTAj3o6jS1h/paDP/65kgdjM9H4qZhPzcreSjr4mwmKBiP1TBbpOPqHyVQQ6zynmfQdIaIkL3QSmLyjomRssgiLooZZOlH9Nzo38mDZSl/pJLxM+gdjE3xNZ4X3TVedFGqapddRaHIlc6b+iNnRsLA79caTjwozyTtoVBWZTnIdYOB5d6WzMs1AziIyOdFjlmUmCea0IN688yKLklFj3hdjo/KpCaJhZEJlX1aZmWYmx+LQcoYmSSdRQqRV6ZCXuBxG98xcm6wYm9jkGHOhwtTkybNCJQZMrrMonquJTkJsVssTUaKKcZQrc6uDwnXdPZwZVaRqmmJZIx2XgwrS5NpkvInSTJnbYKyTEaiE8QyjBA+PwXlqoudqYNCFVmE0HJoMPbo+Vn7vrIQzc4XxtNFomGYTXazsrdADbTSjmQzm6mYcBWPqP5jlRToxmaIpTU1QmBATmeiv5Zzt/pBlpYHIz1e0xN5odJbp+Upnpf73+zm4SGlX+ix8UpiJx8ZdbGzMY5ZExdU0iwLTUX+f6aSIinlHeS0Ty+VfZ2oYmTjMlc4MnSo4PLvcRmbygv6e0hs6dq3zVoqSIJ6B17VwOwYY6DiYxaAiMViUB+ksKVSa+PShznWSFmOeVfWlIi10rK51PDMtGyEKPZpFSWFGJlvB8aHDn5J4vrJXZDNTkr98+Bfv6WQWxzh0qqTez/M0iDQW2F/I/Ovs/g33KYn+PjMqCsHdw8hkdZ6grY7pTPTtB5OMivHK3taLF7/XGrqvn/MsDWdBoRI9MdgtWg2yyAwrSys7eWGHliHu3iImiCY6bgzgbDYZmAx9gMdy29mUx0UEK5nvm3o4x5u4kqiHWgcdnA/xLMRxWuhb6q/Qt1fZvVt+QW8X+lZlJGzgmuG93Vw26UVPwM3f1g9xdaFvFTeygD/AD7Jprqa4ypNCj76Rju719YHOTVjuxrumqmiD2w3pvRToJEkLkN/g1bHB489yf7t25EzwF8fN5hG0exvdmtDSbflZLB66Wm7s9PUVGO6q0LePWHbqwe1Lb6B1dlYXuDqj3F8BnavVckupNXegP1frbo7eeDGPP268VSp983jVn5XIdYPYOII/UMp5m2YKh3oGEWE6y6ZpbvI9FRXP4hhyQnptsiwKQ5PgTsdcJjpKVLWX339n4RM3H26J6rfVLju4frwDlC+Hyon3a2eliIoYo/bu6JX6OU/SRhzldL6RKHCnEJHQqXs/RfZxZt59EXVUMZ9GgY7jOcSJkL/PdPAVi4qbOTMkWAX43VK19SIR/WAZ6UbG+3tJHdE9WsUwS5ianqGoN5bPWULTpXwW6ETlJjZBQXKmycDrfHVwK9Q5jeafKyaZTbDY5sqqTBA0+LkrUUVoKWvUvl2HVL2O19chiazocHv39evtjeDV7quN4YZunQ5acfeYTMmXs3kXkSRWF9GF/vW3sUyYMJg8oW9zyOrYBplZD80wSiD3j0ndILltTfXLyfbVujqyv9B3tbnjgXPp66OQ4/fOyiCK4ygZXekwzEy+hPR6ZnIcCXlFiM31tVH73AQkbo1NnNr+LkrCNIS/OErMZtsu8Fhzc+t1Q4Yep7M4BLGGURybEKdBXmTGFOp/qXEKoRrDoB2HLrYe3sV+GEYsJSvtzwybSwfBLNOinwQLBC+v+Z2NNibCi+pmbDLT0Evi6Lrcu6MoLwykeJJdiwVy0Z3d9fCWZTnb0bOch7CapxNTRBPDDJpDENX8M75/zrPEGZ/N/a22/3als7L/YaWzcvhX/NTDxyE+fsLHCT7+go9jfHzExyk+vuDjEz4u8IF33+DdN+/wgQbevMHHz/g4wgc98iM+0MAbvPYGfbxB82/28YFG33zGBzo6oW/P8IHO32CkbzCgAzzyHh0doKkDvPseHR3gkQt0foAZHeDdg//CxwE+0N57egPtHdBz7/GB3t7h4wAzOsAwDqg9jPkAXR7iuUOM/hANHKKpIzR6hKZ6GNAx5nGEVo4w3x7ePcIs3+Ldt3jjLRp4i/be4rljDPecxoyPY8zjGM0fo4FDfBxjlsd445jewLSOMfDjc3xguMfo4xjDOMZ8jzH6Y4z+Hb54h/Y+o+V3+PYdxvIOr51gtU7wtxO0d0IUxxRO0O8JXjtBbydo5Uf8+iO6/BHf/kiUxATf49f3GN97fPserbzHCN5jQB/Q7wcQ5wOY4QO6/IBHPmB8H/DaBzT/AQM6RaOneO0UDZzikVO8e4phnOK5U1DjFIM8RSuneO1n+gKL/BaDPMVkTrEyp5jbKcZ3in5PMZZTjPkUz53h1zO0coaBn6GPM7x2hkfOMLQzvHuGAZ2hozOs0Snod0pvYLg/oalz/O0cYz5HR+do+RyvnWMK52jlHAM/x4DO0dE5xnyOzv+Chz+iqY/o4yNa+UjbBc/18Np7vPaBZkT8QguKX7+gtx5+7aG9Hprq4eGP9AUe6VErxKKgUA8j7WFuPaxHD/3+lbiO3sDHEa0RPQdK9jDIHti2h1EdYEA9TOsCI73AFxcg2AW+uEBvF+jtAg1coPkLDO0Co7rASC8wqgus6gVa/oSHP2EE+8TtGNUnjOATHv6Ejj6h+c8gzmc88hlNfcZrnzGPLyDJETr/Gd/+Fa/9lc6m/2oTFGr2bO8M5ZOxo3456f2ktjdfvlzfVPvxdKzXt0i++XV1XBTTfO+HH0zSvYm+RlMTRrqbZqMf8NsPJ72frvi1K82vPe+qLxFLvNc6jkKWwkcaZiFlbqOcjI/cccSiXEOOeb3x8tXOi5fD4c7u5qvXW7s4xKdpDn1ikSxeuRAbyie9SxNSqzDbjXHplza7mN6k69Ez5Nkh4hKpi+Usb9uLpSOygCdui0RBckqmE+goV2y6ItlBx/FPw5W9X5oiS1XGsJKQWHDbZBztLvvzyqt3N1yY21b1t0q4wyifxnqu8HRHme6oq569A+22N/5PlQ6Hz+R+jdMl1IF35lbRo7wQzozvtf2nt2/fvt3YeAZjEv3yjGxuuoBatbK38n//afWX/fW3en24sb776z9f/v6b/+v278//D4xnmCbF1Y2JRuOi1TwXmqGexcXK3quNhrRx0OspvL/O74vyuUrD29nYgEgzi3XWUS82NtTEhNFs0lEvNzZUbibRII3Djnq1saHw0/OuOuSeoNvjzy2MRKTr8HJ47PNGeIbVtfpbda5oefEn4bXff+2s3GRRYUp7ZItpZr3qHVGWZUXeiv7BVnlxKIROgTUZzONFV33KnTpgR9X9p2hkv5OYPZtO4zk0bmIoJ44aHYytRtVVGKR19ORKdA9Y2GttqxscMbSLn9W31zNrCw7Z+m+iTOXh16vcFLPp1TQzcarDq6me4/9uvWGDDU06isdFapjGcXqTK3AHeQiSgt1sj2YJCNGJSidRUYiUHKdzHbNYniZmqVPCJDBc+LboQZrGRieNPWhdkl3VM6Sa9sERffYhZF/ZWeJpgxCmTRyNIhhGsF4yOpWZG52FeVd9wfillf2zQ1YMeQVZo8fim6KITd2jw8pC8pWfgVswKKJro250HJsCato1TDY3Y6icwnqZCk0Q60zk/f75T72Lq/NPHw/e7feOrj4efdn/eNhXgZ7qQRSTgsAWlCKeq97FgfpLVOjh805VaTE6S3I1TSPoualjNpXPyH1K3NBjH6nqD3Wcm75aTTNeNTI+jQ0YJ8qM6guB+orX6jlYHquTW5LJwVejs7k2iYqGStenD3NWmgyj0cyqUdYisoRN6idxlridup5HofEWUVpSq4GeTHU0StTJYQfEHmV6Qud0R5ki6D7vqrdphvGXNk7bilsaUbzMrRjByubdlJkGyvnfq/uhxiDPctVPs9BkV0nar22Uugr8e2dlYgqNc+UBl2TDEOYIlk41LFdfzfwHvgKmOspo7e4nQtmZIs/xbdFVFxREQPZIrQaxDr6qQXqLg/Snopip/+//+X+xW4azmJX0otDBGKxVLhw7UAMFlzVYc4y2vGXLOyo3owmLLiE8lmhoFkZFuRB58wayZ4d3h3yQE+j3jiMk+ah+bzipTu3o3M1g6RGRx7yV1+2ZIT3/x91nx1TPlz0oomJsGcw/Aejuvmfzu2W88xBYW3uX3sD1fJNmX/O1Nfxts6ssFXDO5e4E6FbnlyYqED+9+ODTpHuZbHXVgTMappNpbArcfNL5daSVTubq/Pj05NA7B9iFGeXlDXyZbHfVCYwkupDHx+C1O4m11BHaoUbyeRKMszRJZ24T/y0dqGGEo1gPC5M1jncDY3iu+uf7J4d9Rcaf7mWyw+6Q+kGANc6L1M2t2hS5aGdFOtGFGIszWBjBIqu4CtOM91s856XLyKmfmeEsCfPnOFfb7h6NUfND5GfGAp/bfczWW3k0msA7EBVra7RTactOo+ArH3gZyQiWhQY6+GqSULGbSyZDK/Isl1VYt6tgV5RI0FF56hY0V2Gq4CdKDLP91yS9ETuzd+bQMZ3NklzpgjqyxukYITBdGDZxiiByqX5S5bIzTnWolWz559btnquEth5kJMUhEGzCG0fT6b+h0fVDyjE7KjSFjuLcs11iSrzTnWE2NHF0DbOlKtKu+p9osL1v0t9urqVgHzLZLt3bkxX3yYr7ZMV9suI+WXEfYMU9NLCk8qX2ZMZd0ozbWRlGWV5cIWDtnu5f7jQdt3KLZSaIphGpN2iNwt/49tffsW00VjZtJjqK7wyi4Sfu9z43OqIXrdxBnU3HaXLv8rxcomlqSHG8yBJWdDsFb5F8olozux2gp7L2RC71zO56lBkzsWHbC+3tdwW4jtOYI7QyAzMSOF6EVaY6q3A26shOjRhwYMgJTvFEKSt8fjM2LJ2DrUlByC8TaYFVO7+TuwNPF5wQJ6ztQT+D0WFxLI6jlDJ5oQdxlI9NWGqIUz03GWtt++7Jk0MFQy4aDrJZQOpWGpPYppN6J0GaZYbjscqJl/Gt1JMXPEM2H0XhVBIkNI5G4xhalrW2kVaEpiOyYl7rbF5VuFq67FLEf8NsxJF8V9c6i0Tj9UXMIaL9Vjor/HVslorDefFid/jq9e7LYHcn2NjdetG2NBwWk1vd1MXSTGyQIE+KaENGcl97xV/ZuF0uXlcdJbPJnurTkPsd1bdj7ltxPiseG42Ovl00esk3VV4hs02WwmxSrvfAjKKEjxdzO42y+SOGwmH4NKBZUkRx65gynCZJztcX9TtxQbOIZr0K5kH8jWG6tqNwfTZNEzXRt9FkNvGDabEJkjC6jsIZ4qBkdb11g0JsmB40kCuKHbzW8VWo53mr30q6WdnbfvmyszKJEv5ts214iYuMRnNqYIobYxLmpMYx5MVr0lju6X53d/e+7jmWtRyEJQA338q/KhQ7CN/TFPuVBJXNGGXia8GK6CjGnXFjzFf6Ad6Wq0maFGP6tfzp7zOkNWXlQzpJZrAVrXRW5kbzFxT+v9TmHr4Kt7devR6Yjd2tzdfDjRbuiHKE/BXEfmIndvPxqJE3+YHOT+IsRZxVP4R7bPfdU31HC+x0IgZ+YGrgJ5k/fnQEwC8VCuAPTII+5/30iQ5959aZT00fZk2Mqz9LkOkUzmI+XtyU+lavtw+WY8OZ2xbpCA/aFR3YCM9Exkgc010NCUG4k0JZXY8PWiP96rXeePFquLGxFb7WrwPf6VvpYHF4pAQk4mIrWZSsq+U5BwurWyFrudtTfddDX62Kf+N5p0E/JnVH9T1q4FePHJZ+uYljjrhdNnBgkRTanHBGFjEKBykyzeZCkjpb7sp8nGaLJdyaTWswyMx1VMnnWtBXR+WzqNDWx0jEfZazGYmPBnYbd+tiNA5PXZhRmi0bpb2vdtbDaBSxk4STh6Lh3MoV3gAHsxwXdG6d3ZYxRin8xGlmTem5oryQocnqcckvd373Qoyd7NTjxWx6Uw7FNqkHcBL4w+lYMaFkxYgdiR6zlILOSmu/LT3uJxWRD96qTAcFrizETiejtuu9Y8OdZ8U4zaJ/mFzN0xn7eYNZZuI5W/I5q2s2yOmYgAd2VkSQrcUpX+boOUGXpuQ8XS7cm0OSAzpjTAI3CVK+vBHCP/S1Vb4e+gtlvWaTdBDFhsZmiUFpkI6UkqNSaWU6w/7O4Vir9Ey3fbg+TgNJDJTB6IBzC4p0uj6bsjuORlMgRzFDdEI4y4sMFnmIdYF9cWoSMtTb1vASEmKhgE/JQcWrrOCxOEsLswfHzzydZeJ1s+6UNMZaYF1oOSy9rQlcQu1dnqeKkqhgiVxYnk85uaCGs2KWGfKeifNpqjM9MXCijLJ0NrW3ALwWA3bg0VX+iFybj9X4c5YqRMpaHMJuGdTlBLJCkJfvyFKGkuzg88hgVkgaDG7jZO57c4fG0MOyMjQ58tRaNXPhBGdZ1HIUITCHTz2KtqfbBSnb04I9d65teB5IkaR80zK6hVX3JIWuxQ6OXFHIjEgdTqXKzEhnoZxy5d7jS1/HObWsr3UUu1M4TG8Scv9Yjcp6L6d6ZCpZApII6zy27GCqDoB1vJKU/qanzoIZBsR/sJobzyIq9x5roV5CkBtD6VnQTCy+F7vqE8QoceLCvZ7PBpJdzo5gpN9TNFFmilnGU/308UOFBPZ24AWB5hnFpquq63/Fl+Msu9tMw5xQzRBtcga1ReMgpoD324mSHlvUlWjZlizU8xKhDZepXOOcH/JJ/gjuoYXjm9m0swn56xE6VW2vSJXROfK1GaCgNq1ujbCzKYVsLaDst28q+oq85DHWAzQyieLeyggPsqFk1TjE1f/cm4bD3/42NaPfpsnotzAN8O/2t79NR7/dxjn+3f5W3BYckCiZKm2jv5sRWCLAgcwtVLZNmfzGfytcWmIuNlCOtaNMDH0jScx8l7F2HiWjrjpIE9ZUBqnc8nzMVvzvfORypvTcT5ajI9HKBxFYBdc3RRx4OfV8loYq1gMTi9Krs/CK1wXZ4lcBghSzSD9EyJ1EyZUYE+A9vE9pfnGX1toTgAJmRnmutOmRFQE+1KnJojSEtECadYfvf4XpyAFdiZdzm/FkSOpRkartDe9Nc6sR9NGhBnL7CE3K+OphYm4LRTqduil9qAEMoiG7+W0EBGMjeFFV0h8HUFHIhw16ZPUuylUfwRVXoRlERZ+GilXmjHh3v0L8hVRBcREm7CBCQLqRE5m+LUhl8eTPA52F+26dD+wyN4VR70bRHG4pYiWbykq5MJvFwk9BmvDEc9nnvA6TWV6oiWFaLlyRi7HJ4auOpsgVpUY0BanycQecCVwyN2NDhPCz+8Yp5FIbngRFYaQ0RTWEPAJEB06Z/AA7YewY+saFPfsBUW84YCPTI3vV9Bftj36HyAJPDMsy6Q2fqKDRejFLDIuCdt3KrY6gBShL847CqZKSoFz2IGSlExsRZbSpqSmnCcHqSmFmwSzDXrCirICGZFH+FQgcWtSGaYqgGZvyt3bErA5QF5ZXEbiCI5nErRxHho2LocWEZpdRFHBIwCCkQpB8YSbRbOKWI2eKTCgKBxvIkoqbSRFTLJeQL+1S4iYMy+sF7NRBZhAqx9uQ5PDPJ719dQ7WSGYTuU1Nks84+FQXni27JBgHQPJ8QCLQxUVTpyKmW2Gzqz6aiSEbGZwENrwLjeTGn0Y6G42L4SyO513VK7Loq9NXadIDHdMKWiufXaCOLElURCMJMcJ4Zjni3m5xklF0phXlKXWb1wpqBRbq4k5WlN0a5f6NQPTm+ydD/mvF1QHdAN+NU4kKIknM11w7K1aCuIIE8V3kqbcZAfiEyiLlqE9ZXE8i3tjY8Dv/Y6Q5CHLEPB2JZ52aBGcpmA/UckJeVYxyYZQLZbt8rDPfaePLWk4CmzQlLz5FOe7Q16cqAn6Uyy5yCoKYI/o0s2g4v3J0m2Wxxxdyn11kM1Nd2+9BWCceO9rVJo7fKVbPrfs5qOkCk+aSp12ZudOPSdpxM7bf+lhKjXNczjUbs0eLUmmb1h9IAKp32sMt8WWsi3x/Ou0Qmk6/yX4MqGN0KEFQk6lO5kua4Cjwi99gjJYoL7PsoxLyqtWuJnS8GkRZMV7WV+MufbsKh5K8+wat3JWKFsqD1B2kq59//vnn9dPT9cNDkW+7HkdKurmbDJb12mROkSEtHWwd0cFoLUnwMXjmIV8OXvHnvLy3vUnwiju9nrfM/GqXgUxmSYmkVlXFOIM6MNG0kAu2Puthpmch7kNJSKlvWkbDSjO+hnBMxzeQBH0lr4ZqQMBhOFOsUaCWTFP6ZGVoHZ4wD7ChDTpCw2bQZlF2JL87MKPNB2hDL0rjsg07qJqG6lRx5IN/FPHMMPXPklIFFivhnbPtnfY6rfpvZcZ1Yt5BeBypFsms3dBtKbWM7//C57mTQ1r7OyIAKmYaWWjrz4Ahfp4Tjs1JwUyUp0xEzXBbEv1+V7tgjjJeIKIobg4YQG/pV5NIjlmXoAzrqf4klN1IPFKr0ePk8E6a3RmZ0wL5of835a2FkT/t53YlwKdlYep0Yhn9nsHSQWKmRmTmxI9rJ+UWsy6yaDRirSyOgq9WFbNhB60Ew8pWBkwc9ccfdC8bFL5qjRFvXJ6evZQX5q5t/ixvPC/zJO+RTuYVZrV3yTT0Lf5lDE5zWhyRQ3928lTv8H3bbL8HzhYf8ktgbUEvKsH86NkaMhQ0Lba/sM23BdRMqGLPGJFbkfbUVW9gGKtNyXJBox2B95I28mgyiwudmHSWx/N2JLCBITWUhQOx0FTBvkSg/q6AbLQZlgVlewSJbUxMhbzVXJ4SrutfjdYC31kzLrZLv+v0VLmLgTFKQi2F+PF3C6Kq7BNVsE/nH4XYeqfHZWziKeKdIgkm9HWgNuVODcwwFc0klGGWUaZX7rJ7AJZWQzRupFbu012o13MDYwPOHAusVZGYjfVruyRSOxhkAltXTWDYwmyT+NBCbk16/ivCcN/TaVbGsNHLddPzomjModgxww5ZV1v8lrnEiYZqwqsjHFpi57LxmWQQsIsepd4MyzhtsitPyW4d1fQPuAkmYpn0WWNCRkix53YsaK6do+241Oi3dpD6lIkZjRThSMQlz2/gEh2FeY2GD5n41drSKqa0KjWgPMuFjrln6WRaxJwHNTIJEgfN1d+zeuBHmfregnsgMUCUxN2yQjI5epoPB2nfN2tYinvwBCwi5tM0gY+SXY44cchlU9QyTu371uZTHrO+dcQ5sfMWMwZLGQTJR3x91QA4+B4EIYgASt5lkuB/6ZDG9GwhrMIzlzsoxIGXtSTQhZiy+AkxLtklDdnwEmK33rTEGjBjUjomIk3KFatycMQhMpiXC7JeZsC0OnJV2FNDSE3REWlNASs9Tfbgdw+2HvhkfMVJVkZb0NLLTnFu7da4Bshx1iLVsNDZ1HXMtnZBEKIi9WpPmAWhE10Fy69YKRYGWKgbnYvXQ9DrKRhI+SSyAqYsEI489hKxbR/h2WCHMJecbpdTsn9wcfL5iOlkYyNJ/6zgWC8JvBzrZDQTEckFH2Ir6CUDCYPNVy9ehS9fvd7dCDclktsGEpomvoa3JHnFoWgHIh4ppydW9MOm+bYiZdXkcU8zcbqKr0Faby378WqKaDXEopUVLFBjQgCNyQhBYvQXneEv+5keRAEWpXKVPsR/WzezNWQMu2TCteSDJ9DTAGY9jgodkod8Ra5k+slFplHkfgpgAmIOzvSm16e4iML706zWVF86x5y5FEQoIJVRyMiUEf/BjokelJ/pCx4h/vyWfmKy8miJtvwj09YNnWjsfqMveSr44jP9RH+008KfP8rPMh6eJI9HJtzG47s7L16+3tkKh7s7269f7TRFN5sJJko3jmiOT2RcHArj9HiAwEwKBClb0nWEXB2PSh1HmE5JjU6FAh035Y43z443NcE8aD+l6GfrHqZDZm3NZFmara1JijJvkRaJkMJCBuxLK9Rs6ixaa2s8aNuEi4erX/BWRrXN20jeu+H3nxj+ieH/Gxgezqc/jN17pz1h9hs4t/R0+sdy/L8NS7fx4s721u729vbrQbAzDAebmsHerCh5VrlZf/+1/RvC14qSUd4SDfdj76czPxIusNFeFFTU1kjD2VwTQZ08AiYCP7Xo0x3YuG8MrKuCCXXtYqWdgWPuWduSgtFIOuqZLNWzjnqG5cH/vBPwk12fZw6WarFVpIynIN+ZINmZxsxL7d9FlLC/rMUEUYwzxGLY+PyaH5H0BAdp8/Bwv2oMmk04KDFyWHYUNPFKmHbNhec02b6NnO13Ko/m6SwjFCBeAFZEYxtzHlaacOx8RxukwbFhT5jdKV2STyBFc2yPEx0i5FNpgeGB9YDJJ4Bfyzlqmi4t5HOMEivZtnOx9WQ1Eeedo1gcpqBBDexQydEoTrE2p6aNr4PnPpvZ4PDFaH61TTudxgZYOF6GhGunkQjsvrqqJ1nBhmug4C6l6ezsBi82Xr3c3tzaDl6Hr0xF0ymbauTke+GBe8oNXXQH9x4OwrIRJpE1Uyybm31gzVUlgchziLi2WYDrcRF86qGgwi3b01ESZPMp1KPmWhDCXL0fKRm1BM/SgOVxd+QdHVxdbz57TnJIFcBuQTPlACvDgnwZjRIyst3fSM8+Wk+lsG2NjQ7vyzpbxLr8rr1usLUMj9kDYWrqg9OxmaBwwPlsEEfBe9OKdVQjhX1HTeklQPZxZK3rj/jNtvhO5+MlsGp1PrZk8RzhZReU1VieKCdL+OSlKlMFhcydWw1whOqA6535SMOg+bmevyOK97gWXTO69gDEAF7YdBwFsjyNToW55VufmzqOx1u6Pi+32cL+F7Os/M5lE7+N26rBWQv5S7y2Z0vFAVjsYwoDsDv1c5Rrtbm1vcO7NTEFoACXcJgj9FeerjTG7dije4lGSCqwLVDENpqor6M30XKU0s/iBeQlWLiE51Uqe7kIjd3g2Pr+hI3yMF9yY3hnep15Fo2ifcq4gBZOtslcfNmIohOy46N8Cp5wda5zm21mXSv0EjMwVyFEHGVeNgOTH8TJSRo6ibSrTmzqmjdbtWrsHnreUZWJW45vFG8sadCEX7FXcAtxTkqBwwMBXbANj9N09F0ElhE1tLTEsr27M3y5Y4Yb2y9ehzuDVxWJxWvrbpGlHL3ILOWbEFq8dh4ptbSQicBkFksvehp9bggWPoz5glWATb4mYmzRMVM2eBolFcj2Ra2iqQmerTe48bxxdD9UymohiD2/22Ss5c7I2hlVOS0P9j8eipT1oCqH9cul/JI8EsP0G2cdcBZweYo26qzqLDx73BVz0tvnKaMtSTC/v60PiH/bUZQoTzGseLuJ3+Q12akM1jtSeL50pgzTxdJJnRQESFKGBT6Ct/xmHsNZF347Fb463//59Ojs4up4/+Loy/7PcqXj8W+R5PnFOq35r80b3JH3okathaS+qNNDMIbcQNoHUKs8B65vWaI7BnhePyuWlTPoSmssYn183mHZPOjaTqoFY7xTKFh0hleFAu+pBVKBf6t/u2xQzrImDhy6VW3QbSkxwNuzD5ADiLGqyAmeIMBh+rMiXSeh9SFyATPkMiLB7stN8zIY6tevN17t7my+rogEdgvdJQ2wfr66j3EeYpzPRSqglyEQyO74JllA2ItNTi3UWi3p87x5Si13oJxXpNU0UwefP5cFV8oOqlHXC84bjyeIMuUWWXSw1Htx8b/nHirAdOEYfe6nvUT5chUuluS5pRjZDvpBfNzTk3yWjL6DQJtzS8tLtNtm6+Xg9SsdbA/1y2Crwr5+Y3czsTcB4V7vXfCw39TjOdnr7luZtrwF24hPjSzBovLunUy6sP0a3/nPVQ9xfnrp43oZNi0Hfg+jLs15jDO/FNMN9I4eDoNXm6/M1nC4HVaYTtq5m9++0EM2XoRfAZvJy4/jsHysp1Jmvjbf/5CeqONPko9CkXgABZw44FoOW+/LmEsK87A/24f6EDQuE2nDApIgSZWkAecS7ctkbDigWAmlvgJhLibFZZIOyzz7cuD9JpQnv7gkfBXn46YhCkoMrXsFftc+z0Ym2eMzss/Z84Oo6Cpb+Ydj6hbR0sMjtSUkylhUZBTINL1SFFxFgOIT/ywlNjj2GuDEyOmWrHPE/6XxtTi3svSGHSsE7BRaxzICwnPVtzUKujT41W63+7zv0IejormpfCJ6G8sRZcFpwN/7UoqtC6VOgSHAMVxzy9RXTPmcY6bq80OFhlzcmx59hGJuJZY5EHhc/mHgfdlgZE8T9wvFLRuFtTzn5fFsxPd0zWPAvdZqtf2yrtf/sb/+14313atf/0xAKMtnYPnJV/Ve/mVLJ3+30saL02YWQW1KpgR7iMWL6zvrgdPyLVXNOcPIA3Jx52DNZuNKRUteYKKARb6ztfmKXqv5SbcB8WmWTfU0bkqLXN4r3N7Vgww7XuiAHDg2VnNgpA5TFf/Lt1APDVLwOBSmd/heQub51dKtbrPEELweJYyCJznI1Sx/yVujCGu/Vjg82g4OsOquoxEcSRA9RWan2TTFYeQDY0UJ5cgZzUmY11FOSCgTnSTVfE83lk8nXA4uItcdT3qqmQNKjIskXEeILjNVFLTT+078MzpRrkeEYiBTQjsLGMz186Cz7cYMpt80MLz4kJHl163wTt+XALWLA312eIre9XAS2FihZm+fPn7Il53RdHS1BLkXwqej5fNjFaeUo1KMJbiG/4AZkzgwK1rhzSvU/KUkJ5Uh+/WBMBF9W9TNpnapTwTxhdgTDCZKVO/zsYAMUCQLhb+4kmaMW6K+mMG5iiaI4UboiKCEdZTmb6x9vD3FzSU3SI3LLtYdKHKc5cLgKvj2kKs+zWSELnxbIBAoqm4BT99DhVMLBuDIwCm5kHMGppyuiajDwVwGwdhG3uxtsBDlKKMYmjfj9TKLwyUGEXEBybcalVStRm6FKVWcskBt7pWcym1RcFGmc8r+wBAEoOf87BhD+PH86JiD2+xIqERnJuHtGLlUZxiYJRDkJG2w9P3KfiFeWaXTMNaMMBcl6uiM+GP/4/M6nsyLF/X9ygPoLNi3pyeH2LotO9dDwbQpc5MopA3sF4dkJWk6miCm0YUE4mKM05v2eZeQyLyo7dcvoce0iD7eYWEbqOK63L9zW48or3KUCzIt8R2raVMSDFfJNX9s0eWn2sj/RrWRF9ekpJLDkXHJ+rVixo0wV2FndS55fXTsONA8F/5XFkG2sF6uVBs3JwUsrwm5y6g6JzZKDkfJdFa4rOO6W4M1gQ5raXXxnYXopugrEpkVmETxajpnKj6Z/G2afbQHAeh6D6xVQjjIcz/GSwt2Rx0sKTRZaVpjI4oUee7z9LvqCJUJxBdiSwP4zVcKoohMrBVy0OKGOuArPnBgkqhjLRt9/6zqexeH/XsjhbpF4XhWso3LxfRRFX3dFHgP6XDIQeuCsohbQF+bK/KrLmWl29Lm5cbw1e7m693N16Ya7FD2UDtP5dB2RvgDAi5UfXmh7wMiCqhdinKDzPtpIoVCQWuGf6Y0ssgCUNvmPPTIlhZJwKlIQ6EJZ4whafFQSuTuxaDcDKHtgeh7fgZBw7YDcrTtI4sRkFw3mrVje184xE7Ps1BWJSZk7Z8ujgipsDI9DwFzT1H1177DZGfrWd8D6umXeat5FW3EQTNh4FsiFZ4fC1Yqji4Aq0FN9Efocip5BHh3P6dtEBplhkMT2GRjTK4Mb/YYeDGKjlHuxCzn1I2Qc8L462jTvh6nwVcsoAWfsgqt3Ta000MTm4I3Ybn1OW5aCrcAkDemMPtCBo2OUPF7kScpry2Ov9SNtaFCLWwZsXLuP0yWOqJQHdKgVpGa1oN0M2lMnZ4crsqB9ZwbkgWqrg7A9RIu+bS47e2uOo+NzikHwZQVJVoel9rfWFyIdx6Itd2U0A+oxq3Um7Lh+1Rm9ydsX11SlfMqOmyqpXUk8DENXXecpl/9g9zxkAXDk2PQi4W1b336+KF7mbyQkiFFrc6uhY311qlD1wQYJyKkDg83NRcU7hKFBxnbtVxtTxYcR2GIAPAoCZjonDWco0nWWxzuKmGIWDXDAfTRCjNvugTkNLGQpd5Bua5+Soz6aTi0GT7uRKAMn1SRt1icbY4j11UPy3pA0TMQM3kiFYTL75Gpf56Z9WlKOLZ16MgAiOXKJofVcBnUKqo/02n/vKtOJpBtTG4PSYLOIwEoiDn9JZpArNMF6gpM0zgugb4qfXI96BL84WSU2MrOjDeUq9Xz/YuDdz+cf7p4rtZlkMAWq9wTFUyLhLid3+f9yW9xElZeLf9VrSLvAVmQY2h1om/VJgFYcFXAaZbiRnJX9xJWV3u18pteCQHZiq7GwMIUpUriCYP92UPfVb5oyy7xICm+AzbpXz6yyuGBkhJ0xbejktoWZa4VqCxJVM87HrIhsJLJ5GB9bnkJWlpmZLVixtfYjoAPUHqjNqIKeASJNha7g51hdTSRvgd0Uljo0nYV9wGmvgWabQscSFlP3eVaEd4RDV1gGbzjVw5NEgT4jqBkzVneVX2bTiUJpaiJGZgrxgUTeUVAeElccdLBFPhrJT6Ak43Rnc7V32cGhUuccNMOprsQbuObbIqlntU7fE9YE1R8kczvPHBAqBJD0pOFxdiwNWfq6Xrs8IVjzqryTdWlaZv8H13O5KlSQXulgmWQsBz/liQ+9znn90aa+Qex5rEAJLKkE4UIHsQBLYr0a5mhDgXrAyfB2Z8g+0rHaTIi3aBfMzr0K60zGhTrTpCFum1QKk/4o4/AH33C1fzDcDUf7M4u4dTcvs+qB3NoEqo4UHil63w//xlqNRRjgxIRXG4jNXnyrHAgqxBTWMP3YPwSi6qmg8J13T1kXK1pSpW7kChdHkaJOJVyRnQDm48gOxWuBqpkVbsCP0r7pa9tH0sC1t19wlu0QpKgfWCuFngorD/L5Vwl6QmG6b8BhukJeOBRwANP5tsn8+2T+fbJfPtkvn0y3y4w3zZjbBeohA1Nj0Rk6ziuFrvkBwdy97YoauQYxoQUK9l2gdF37hdXLx3KInHLTRhl4LKAVVIUpaIodwvPNNDB1xuQmCrFFNEgomcs54qggi2XmUmKpbamETqzLxYPurRY2GoIdqTiCvfK6/joS5cJWyzIt25gx1h3td/sHCkAyMOX6VQSt+kgH8bmthyRH58aJQpfusZyQ8S5THBOZdGEBXg5JHL3GPvlmTGdQQzRMZcJ2/UoINLL/ffBjFMpdSaYUoj+gUoDEvbf+qvT35N2cPFWg138Bi6B9GbUJM2lLJpV8yqQ/ZcJw7TWnN61CkitGOE8MRQDI8l/nuhJFKhWxBhL5bW1vSYr2CNE23gBSJZkKsnBiMBZwnlEj0ndv4ghYwNIK6kgpKtZEkeTqKBajFlkirnP+sJQxNjGiyTwFDvdoBC/RCYySG6Sz+Pu1SItV7lJlDd22xxUtg1w2QKzt7ZGC5sXAfEj7jN7YnL+JmdtugcIUZeE6yyeU5SXXOxRsuBYIFoSxzrsPrs/wd76Gmb1IewjyN/Ii8zoCVWLJFyzUVZqOpELYgZPTaJYu6gHPZ1mKcjJoWUyBmtc7HfvIsXe2po7IGCh5Yu3oItLrt/exQElWJGowJY6pxbNxUiRxrBkeZAGONz3Y66J58IPKXZwOkWUc5SI4stWQBF87cuXSeFbjLlaIQeJ2GVxwG8xpc+RWEBB1lrlICI5HxzSoq1DmWPNkqJeXO8y0UGW5rmnlvtz6ThZIIzybDalG8xdZd5KYdZtVrn6mjzkUjo0ISgud2mUSPSWH6suiO1hc6NdJlb4X3gKd6qJhx67M3pfhxejyVcuKL+0yeTGu97IygESsfmWY9k5DSzhi6G+XTql8mgt4zheqV66uDkqrio2VcbzzmVyMZ+K3uNfIQNSg4R8g1lRiJWGeGeoA7E1Ry1WLN4U9WKSdGrVBtm5TKxRky7JwZw4VeyoFJcZmT21Wl0BS+Tnl0mUq3LISVrJ5QqM3eVg2cvEBvyTIBrrzFavzKMJo63PVW02LH5ReQDBP1ziaFxb27tMxhFK0jNZWeMRSYCfTIf1OXlc9VxdJjgto8RxL4My8kHpXrtywoUodmUb/lfDWI9wbxSSlpYWVIo1tldcBbke8/viUiCuJX7de7QjvEqtqjGkRzqaQ7BOwAI8X3qFlAwQF0RdhitftYcAn9ypWrBlaLfTAA9NPo1sEkhmLL5MlIw6i4Q9UajyxjhKFsquS6kex2ftgna3W+V0u0yIx6U8bsvhySWQ7XEHKcQJxotOPF+se6gIXpMJ+ZgxCRGDSo9oIkxmxiahgrRyyzYljQWiK2ZcFie4X4xtOUMvk+oZWpE02wSBpO46UjaxIr9MyOp4E+W44+pmbhAjaqttGZm91X6hJzpDueF+oQeDOf8Q07FSpwUdYGz7jghm2EqLGHJupWMSAshRYfW3oSmCscrTCTgaISzc7jq59fvESpwQitxQiLJWLB7NorApEotMLcWQndvXK1hf8ZJhr5xA9IwmkEbEwlRV631+EfEV7mWeHm9kCNALRVUn8dbdypcJHfiSPCcCX6kZ43C7jsKZ3DsJmxC8G0XKI8hlwzYgbDFbWweUX7CByCtfzMIofYjz8h5ftk1DcD4TrHaPeql+1+rNXlxmlW4ge2Xn4VdprCzMLqbooS3xu9jrjxGxKz+et3o47TH/GLKsrX2RCp+6bh5318h/snawv/ABW/RlaEyIE9tBDFwmZOtoePYoXkQzU0AdsApdWI4CshbfB9yFy3j0HfXQCKTcecXoqHPffAUxZ0iiN7oSRGb8lUGyRQoge1KYqhvjwMELr0yOEOFL9dvFFPEiz8rwGDdhtuqXc4VCQU8lnC2TzBB0JgWYWN8oiyMmYKW5kpRcrzDLAF6bYoZqJYYUAT6w6kYyDrbxhmX7IVcZXXHY69ZLYsmDXSDlmIROI1NUaIR3hU6VP9+45aMaN9Y0C1sAUTMpFVbpoCvLXxE52Rtbrn5mhrGrowzvCClsNLcWJyhPo2fR68pKmTxIVA+36p8buMO6k+q0WlJ6AfKCJFpcFSCLjRL0WcIvyyxe6pwgCajjDDnCOo6xXfLLpBIMKHNw9rdawaY9VtWZvw+kjf6eunDg/1F1al1p0EqgXuAVtod111CzvD2+tVW3uSptEqT/tzZJL1faa70jCin43ALPzwEEOBOZt5oVKATB38H2e1D+JYK/BHc2KlWky3nUAm3M5svtzd2X4SDY3Bwu5b+2hgEuhnBXyBXsKlSlrEgVhpblhZXap1k68ms7+7S8o9QAk40S/vlHNkVbGpIl2v5yf2WMRuWC1gIFC8sZLKhc4NYEX5zYX+6pupFK80BMho06jq5NNv/XRWnw43FrErHE3dbf9mpvy4GTIwJEkxtk3Z72wZhCW78fCkSUSwHMKxNGlHHaGiteZ3ub3HUkLymXQ7ZEkIR//TtvIOZOoEZVt78XayfBY0XpsEOIapSPTS4hRJwl70JNHx6jsL8gfqxiOKnsYVsIooQyIK8gDUGOAA+LoRYcKqF/2DPfJdJaLD7hNI3YSsg1KqiDhkTBRnvfYydPxpK7GKc3MCSUtsl6C2W9U5wUjJ1jLQ8S4uVHEVcqgVw20R8dC9kA0QptbIxkMz2xHnVUU99bedyPZGk63VpMnp7kXtFuKvxm77RmEqStqtg7fL8g7fGu1AspsSL+Bs8HK25PE1qISFFYmgqKi2J3+lyXuMWpSCiAycFhVgiydgO3RT05rrNYneqSOmWNED6/lADSnNVho3SDIJUSqGx58is/Q3W2MxFsPmlaDDj+CeMcEPXIfYksHMxFQKPiSrZYeUU+nU1Jy+uaZKyTAM/VjO1cjmY4jILIxb39ux05SNyPTXglAQvLDNoy8lsKCbQXyTGrG+2huS0YTlYd8mPiphIAUpf9K6UnnXBZlMGVgWuOy7u6Kq6sz9MU/d473uJb4zMpo1HTKs7VJ+MimrA6OCuimGxfLh/FHyrRdBxNp0jBtkWel4zed/h88r46ug3irrrQtwuoKuHc9nEbp1LGBd5WS2ZXBoft/pjBwa/4mMGVIY44A7zI+ZaxTlyxhvvjbcXG5WVIORZzg6GBUPJCW2CTDLE6hELfXmWipTw4E4PkRH2rCC2pVuzcDQokw5pNM+FdMuq48uMc2pqPEek1nF/potDBmG6mqrzwHQoSX7iCxB5WkIWgUWXPZUUtjMpAKmVRQtOL9q9uJWQjl3ZHWhlOAhtrd055HaAZIBug+FeaKRi78v3ptFshhV/H+I8iRAlXhbSqP2Ta9ty5c85PivKTovxoRZntNBXoYIEaZgZJr00WzozPIUst/eb2ZvBiU7/eGrwcbm3pe5f+wFv20upnj19QxtOBC78e5h7yCJPCL3wpg67UwLRrT88ivo6stW3LZN9G6B7/uHChiIKzASWDfdNt0JtNaEJowF3Dz2j+uApl/nxBMfykvr16RB5gA7YRnevb+kXkX3sPvO0cAPYCaWDR3edJKotuPS5uAEp9ozR1QTO/W5RqS428U4qqrt03jehu+enOES0hOs2SaDHIb+M+tCP7lETtoFwExWoFgSSyyJ+VmPG6GHxtkjDNrr4NhJVfxv3nTBKtiXDVxLT2rHdolTOOOl8q751y6cRU8U3p19XUa3uPZSafxUW1Cinuea0IFcH6g0q/jtO2qz62akwM6XqSFNfeUT0jznY0SMN5V7VkUteNMaWkSaKN2GA804yPL2EtNPZv/isVQa1pvQln5ipko4mwOltS3C8Ua1H+zul/9xtwBPtppYplcFe+eN2UU1OSS+OO3KSllcfcaqyTxzJ1w3Nj/HsrJ2ef1zc2Nn0S7K1sbWxvrG9urW9vNki1t/L+y6E/s71fVr4mDMBeJRby3fOvM/RxcXRqO6mBeTCkRBXQi86PaRYF6G1zo7uxsQH6zXRSRMUcf1v5/VevdPAJdwtOdiZlKgHlwix/uF2/ublZx8ZZn2UxwmAgWQJ+k+uftLjBF8J9BjHw8SlMVHruc/JPQmgPUTI2SLuF3gl3Zf+Nzo08WLYiEOx9Z5Erv6HkX+ezttEBZKYgmBGKlrTYEpULu1ETrSWn/ymLdMks0nI73HXB8lZsTx+Foc+VgPbsl4TS4iLdCcbDBV1XLRWMBFzdVcsn5y/k4IKSyissDIRBj4271p9d7sWOsjuw4+9XNnN9nfH9Z0P5+QTvOp8459algk7rWuet5Iy/2tUyg7sgDhjkp2CU0oDFkUpmtWSccr5p4yWWYxhhobkRKlbSEhWy4R+Wrnyoz/Jpi/VZM6aW0kLFnoPDcMnSqS0Z/v5Wb0FgfWipNzl6WfBBkMggi8ywsrRW9lvUYXkkf4NmcMYJ9OmQeKzUnHlcpSApF8E39HCONyHPs9hY7aAmW3+L5lHb9XfrGULF76BRMRAIdCiW0Nv5A/wgm+aqVGm+jY7udSni5HbjXVMV3CrZkN5L4q8zt4FhiRKPIy2m3K6VJHRZHDebR9DubXTr8FgeMIvFQ1fLjf2blMi2ZWcc2qpORmOoszPrJJQL61ZA52q13FJqzR3owCWzc/x2FfOB461S6ZvHq/5cU0K/pfTDW5vOkFBxbdbM9pCtxWoMLDQZZ3BKECa8XqraSwPUt65iVFFrQ1+m5cuhcuL92hBwGQW4TdqwWNnsV7hLiLBy/721iu+AsHG2gMLliyxCeWMUrjv0Xb5ISmXiXulGxuuJ/3d5/yxh6p4/Tl4n+ZwlNF0NAZF023bU7ad4n0fH+4gCf6XDELa3+6XXM8Nh4xUhljLR97kJDj2gtBHp76IkTEP4g3d+s20XVCEIGzK0c6MMozjmgE64+02h/hcwFnNjK092qIuth3exX4KWaX9mYkyaZVr0k2CB4OU1v9PANac7GR7nFnQ+1HSJrsu9O0KkPqT4ivPnQd31fJ+KjzKFIawiGwKhMuJOhyAqJcnw/XMBlZ8lRTb3t9r+25XOyv6Hlc7K4V/xUw8fMEns/4SPE3z8BR/H+PiIj1N8fMHHJ3xc4APvvsG7b97hAw28eYOPn/FxhA965Ed8oIE3eO0N+niD5t/s4wONvvmMD3R0Qt+e4QOdv8FI32BAB3jkPTo6QFMHePc9OjrAIxfo/AAzOsC7B/+FjwN8oL339AbaO6Dn3uMDvb3DxwFmdIBhHFB7GPMBujzEc4cY/SEaOERTR2j0CE31MKBjzOMIrRxhvj28e4RZvsW7b/HGWzTwFu29xXPHGO45jRkfx5jHMZo/RgOH+DjGLI/xxjG9gWkdY+DH5/jAcI/RxzGGcYz5HmP0xxj9O3zxDu19Rsvv8O07jOUdXjvBap3gbydo74QojimcoN8TvHaC3k7Qyo/49Ud0+SO+/ZEoiQm+x6/vMb73+PY9WnmPEbzHgD6g3w8gzgcwwwd0+QGPfMD4PuC1D2j+AwZ0ikZP8dopGjjFI6d49xTDOMVzp6DGKQZ5ilZO8drP9AUW+S0GeYrJnGJlTjG3U4zvFP2eYiynGPMpnjvDr2do5QwDP0MfZ3jtDI+cYWhnePcMAzpDR2dYo1PQ75TewHB/QlPn+Ns5xnyOjs7R8jleO8cUztHKOQZ+jgGdo6NzjPkcnf8FD39EUx/Rx0e08pG2C57r4bX3eO0DzYj4hRYUv35Bbz382kN7PTTVw8Mf6Qs80qNWiEVBoR5G2sPceliPHvr9K3EdvYGPI1ojeg6U7GGQPbBtD6M6wIB6mNYFRnqBLy5AsAt8cYHeLtDbBRq4QPMXGNoFRnWBkV5gVBdY1Qu0/AkPf8II9onbMapPGMEnPPwJHX1C859BnM945DOa+ozXPmMeX0CSI3T+M779K177K51N/9UmKLSj5uEM5ZOxo35B9bHtzZcv1zfVfjwd6/Utkm9+XR0XxTTf++EHk3Rvoq/RFGkl3TQb/YDffjjp/XTFr11pfu15V30Rw32JRmxrEbrcRe44YlGuIce83nj5aufFy+FwZ3fz1eutXUITSQGNtFAWr1yIDeWT3uUwrlWY7ShdtLTZxfSmYGs6Q54d4vOWWhssb9uLpSOygCdui0Tx2NoqizFU7ku1eira8j+naEtLCcwKV7S8+JPwGiJ0W8KHaqYZl0oqtlNXq6VaA6as5TKvRFt31acyF9qOqvtP0ch+JzEbYFtzB13rxNFKqhfjgllFzqFOR0m9bfYN0i5+Vt9ez+oOwyhTCz1ljeoyBhuadBSPiyRuI1fgDvIQJJzJu/poluAwqnQSIX6YZf50rmMWy9PELHVKMA6Xb4suY8fqaahiVVc9QQ0ER/TZh5B9bcSDQpg2cTSivGesl4xOZQZ58bngYEkr+2eHrBhKTR8b3sv+x0bQPSkLyVeXmSy1eaUCrAtfBT6aZb1MhQYBrxb+Cf66q/NPHw/e7feOrj4efdn/eNhXgZ5abIRVCc2K5wSfwgV3O1WlxWiggVOmAQEPOec0J6kRN/S4QBjioeLc9NUqnPtYNRv9BpbIjOoLgfoS4v4cLI/VyS3JWuNuFXDlkI+m69OP/JplgqwuuOT3H7m2lJ/bqeuEnVcuorSkVgM9mepolKiTww5HoumJVBoG9sjzrnqbZhh/aeO0rbilEcXLJZiXzbspMw18jDh/PxSNUgQlIHtto7QA/U9MoXGuPCYf2REsnWpYrr6a+Q98BUx1lNHa3U8EDzMcCQ7mFuEdHLLH4UGDGFnKg/QWBykB1KFu3yw3yIckJZ1CFsBa5cK5NARAZbiEhnLZ8o7KzWjCoktoGD9Sz0ICMpCFyJs3kD07vDvkg5xAXkl18lHdUTzM3QyWHgQVU7THmMuZIT3/x91nx5QxBJY5KBBUIwzmnwB0d9+z+d0y3nkIrK29A4ZMoW7S7GvOmcabXWWpgHMudydAtzo/JBnZGFxX6oPAFx2KtQ2RKYHfKLwmmUt5ca92YSp+bXcDE9TiyZDzB8pq5HcTa6kjtEON5PMkGGdpAswSofHf0oEaUi2RMuSncqQlBATaP98/OexzaCxDNbI/96aB/giQm9aaJOyirYCqAogzA4us4ipEPFRKEFS8dBk59Tm0NH9u83zrdw8B2tr4U1ngc7uPS7SeiCAvCKRkbY12Km3ZaRR8leLsJCNYFkKWMZAVKjnVtCKAkaRVWLerUIN6yFO3oDly3H3wRpRLFzuzd+bQMZ3NALDCCerWOE2gPF0YNjlB6KZxUuWyM051qJVs+efW7Q7gSFvcXXEIRDWd4N/M6PohDSx8JGeElbZLTIl3ujPMhhxrTITvqv+JBtv7Jv3t5toLQRAwy/f2ZMV9suI+WXGfrLhPVtwHWHEPDSypApT+ZMZdzozbWRlGWV4sjOmvBNE3Hbdyi2UmiKYRqTdojcLfpGT6d2wbjZVNU4mMO4No+In7vc+NjuhFK3dwbYdF5Xcq5WSWaNovc7OEFd1OwVskn6jWzG4H+Gszq9czuztQ/2+qnkZi6jiNLfKkLdggwqrLsu8KOGmUl5AFYEBGqHeAh6T9e824mhE2+e/8OL9MpAVW7fxO7g48XXBCnLC2B/3s7nJSjlLK5MCUAA5JtXaSyVhr23dPnhx6BaJmQWTrQ7HOWeskSDNbuaWceC0bxgueIZsPo8NKkNA4Go1jaFnW2kZaEZrmVJ5rYB9UFK6WLhnfr2E2EjwNoGSLxuuLmENE+610Vvjr2CwVh/Pixe7w1evdl8HuTrCxK/V3akvDYTG51U1rIDEIp6FJEW3ISF6tGOSQDcvaFeoomU32VJ+GjDRCO+a+Feez4rHR6A5koMo3VV4hs43gVLj1HphRlORlbaX5I4bCYfg0IC6s0TamDKdJkvP1Rf1OXNAsolmvgnkQf3s6PHUUrs+maaIm+jaazCZ+MC02gQOl9MqRuHWDQiy5bjSQK4odvNbxVajneavfSrpZ2dt++bKzMokS/m2zNRfNRUajOTUwxQ3QcYmTGseQF69JY7mn+93d3fu651jWchCWANx8K/8C6UO75LshxX4lQWUzRpn4WrAiOopxZ9wY85V+gLflapImxZh+LX/6+0xnBVAs7UM6SQgpdKWzMjeav6Dw/6U29/BVuL316vXAbOxubb4ebrQDReGsJvYTO7Gbj0eNvMkPdH4SZynirPoh3GO7757qO1pgpxMx8ANTAz/J/PGjIwDBXfsUwB+YBH3O++kTHfrOrTOfmj6BCQB01ytGhBfdlPpWr7cPlmPDmdsW6QgP2hUd2JRP5qoeUfKEcCeFsroeH7RG+tVrvfHi1XBjYyt8rV8HlfpRfgeLwyMlIBEXW8miDgeSzzlYWN0KWcvdHnLapYe+WhX/xvNOg35M6o7qe9TArx45LP1yE8cccbts4MDyWasZlyJFOEiRaTYXktTZcldyMuRybe8PBgC5ruRzLegLlbEEfE0KatEjZEbio4Hdxq01I3VhRmm2bJT2vtpZD6NRxE4STh6KhnMrV3gDHAATQ6CWCo8xRin8xH7RWMoLGTbL+r7c+d0LMXayU48Xs+lNObSQnQM4CfzhdKyYULJixI5Ej1lKQWeltd+WHveTisgHb1UmdeAQO52M2q53C0nscCRyqjlGft5ghloUbMnnrK7ZIKdjoiihh1QVZdrHrCKUG+vpcuHeUpGLzhgHP+6PUArctMjXQ3+hrNdskg6i2NxRfE1yVCqt2Ap9yJD0e6bbPlwfp4GtDMyDkaxtVaTT9dmU3XE0GgB+UJWqJJzlBepCg+Y0QHpxahIy1NvW8NIkYnCBKTmoeJUJL/YsLQyVBpsDFJa9btadksaGa93wctSRYet1cKtIvuUpJxcUVwYh75mrZWnrhI+ydDa1t4AA6cGBR1f5/+gK0GVy+YOz7PcVAnP41KNoe64fGARmWrDnrsQRGkaxLcLpR7ew6u6jEeaVmrZOpcrMSGe2Hme596TcplTpK3HwyISS3iTk/rEalV88fiFeAYv+hLVcGQDreCUpKzDaWa3GV7XMZ1TuPdZCvYSgEjDPeRY0E4vvxa76BDHKgxvOZwNsJmKTQgpWUDQR12JzqFE+CarATtA8o1jwrFrBBR4LfrnPGEw0DmIKeL+dKOmxxRKQEmjDZSrXOOeHfJI/gntUWYvctLMJ+esROlVtDzicOke+tqZ1qU2rWyMsI3ctouy3byr6irzkMdZjzgVEHE6YxTeDDSWrxiGu/ufeNBz+9repGf02TUa/hWmAf7e//W06+u02zvHv9rfituCAxKcy8e1l4q94XZAtfoUy4zC+PUTInUTJlRgTakWaW5XmF3dprdWavvJcadMjKwJ8qADPTENIC6RZdwQdX+qrYptV4uXcZixB2bY3vDcFb6MjBSHlEYbR8tXDxNwWinQ6dVP6UAMqUcZufhsBwdgIXlSV9GeLUHvlcFi9Q71Kr8QjDbWswOzuV6lLZ8uEdhAhIN3IiUzfFl3Bw3V4sToL9906H9hlbgqj3o0ihe1ErGRTWSkXZrNY+ClIE564Lb7L60C10ybGFHeuyAVV8MmLaDqL5fTTFKTKx10sUGwW4tnP7iP4ZgvV7MDzysqeOBnTKZNfh6FfmbMNbUi94YCNTI/sVdNftD/6HSLLyKKlTtMbPlFBo/VilhgWBWtgqVRsuEBu+QglpHQUp1xnyPUgZKUTGxFltKmpKacJwepKYWbBjCBHrSgroCFZlH+VMgXcdYqgGZvyt3bErI5KByyvInCFK9JQKblr46KTaDGh2WUUBRwSMEgilRunmZlEs4lXRYga41o52ECWVFLiGTHFcgn50i4lbsKwvF7ATh2gcFAh25Dk8M8nvX11DtZIZhO5TSsFIUpbdkkwDoDk+diSYC6aOhUx3QqbXfXRTAzZyIqy7gtJTrnxp4F6XcVwFsfzruoVWfTV6as06YGOaQWtlc8uUEeWJCqikcU6TsIGDLAV5Sl1m9cKagUW6uJOVrSQtrl/IxC9+f7xa0HyhoVugO/GqUQFMdSvp7m2wTE9Vp56a6vdODjmT1lcTyIGclQr7tP3lOYgyBHzdCSedQr4zbJqlRPyqmKUC6NcKNsBiNN32viylpPAJk3Ji0/RZj3TKmZxLrvIKQhijui3Yph6fOHhkFbX9nsQ1onHjna1ieN3itVz634OatbKueaminPmV05ZXGmp9RyXc80VXMaiVNqm9QcSQB0dlbCwVb/JfgyoY3QoQVCTqU7mDwClkzcYoyXKyyx7i6Swf37Salezdd0HUVaMl/XVuEvfrsKhJO++QSt3paKF8iB1B+nq559//nn99HT98FDkWx8fXdLNS4i8EdUsLUH5LSB3RAejtSRZNPHm5SiIDzLn5b3tTYJX3On1vGXmV7sMZDJLymqhVVWMM6gDE00LuWDrsx5meha6ovR1oPFc0LDSjK8hHNPxDSRBX8mroRoQcBjOFGsUqKPvOZ+sDK3DE+YBNrTBSiXPNouyI/ndgRltPkAbelEal23YQQ1At0YVRz5bZhum/llSqsBiJbxztr3TXqdV/63MuE7MOwiPI9Xh+N+5IZfx/V/4PHdyyAXWFkcAVMw0stDWnwFD/DwnHJsTrtSGycwc1qnDt7yrXTBHGS8QURQ3BwygNy7HKAkh+3HcSPUnocziQbYaPU4O76TZnZE5LZAf+n9T3loY+dN+blcCfFqx6Kt0Yhn9nsHSQWIE19pOXb4k5RaztlVZtAriKPhqVTEbdtBKMMIY9QdMHPXHH3QvGxS+ao0Rb1yenr2UF+aubf4sbzwv8yTvkU7mFWa1d8k09C3+ZQxOc1ockUN/9suatM32e+Bs8SG/BNYW9KISzI+erSFDQdNi+wvbfFtAzYQqJbgtVzedxXFXvYFhrDYlywWNdspKQmgjjyazuNCJSWd5PG9HAhsYUkNZOBALTRXsSwTq7wrIRpthWVC2R5DYxsRUyFvN5Snhuv7VaC3wnTXjYrv0uy4Vm+wuBsaoVLjl0paLo6rsE1WwT+cfhdh6p8cFFQUQ7xRJMKGvA7Upd2pghqloJqEMs4wyvXKX3QOwtBqicSO1cp/uQr1eFt21wFoVidlYv7ZLIrWDQSawddVwCdQyiQ8t5Nak57/SgiH9WKdZGcPmVeq6PxpzaOucdsi62lZjWeJEQ6/wfFHBzmXjM8kgYBc9Sr0ZlnHaZFem6gtWUS8FMS4FkddZY0JGSLHndixorp2j7bjU6Ld2kPqUeeVUaUQYmV9WzSY6CvMaTdVMuQKGK8VWmtKq1IDyXJZCmmbpZFrEnAc1Qn0SXZgrQcT+vmVTClc2pe8hbvdrh5gHT1D4VUTF5YgTh1w2RS3j1L5vbT7lMetbR5wTO28xY0xtZQHh66sGwMH3IAhBBFDyLpOEa7FRhzSmZwthFZ653EEhDrysJYEuxJTFT4hxyS4pF73SYWhrzNRiDZgxbc14b8WqHBxxiAzm5YKslxkwrY5cFfbUEFJTdERaU8BKT5M9+N2DrQc+GV9xkpXRFrT0slOcW7u9esywtEg1LHQ2dR2zrV0QhKhIvdoTZkHoRFeduYLu0cIACy4pRj4FLOx7M6dgIOWTyAqYskA48thLxLZ9hGeDHcLclaWXnJL9g4uTz0e2YjsfgKR/VnCslwRejnUymomI5IIPsRX0koGEwearF6/Cl69e726EmxLJbQMJTRNfo7VIKOEEyEDqhScq+mHTfFuRsmryuKeZlLU+PA3SemvZj1dTRKshFq2sYIEaEwJoTEYIEuMCQhkVDsr0IAqwKJWr9CH+27qZrSFjtFSJ4go/XuUnVw2qLAFVKRp1nbYUg9JTXEStZYFqBeoXF16ql+BZWBSptYTSgkpJdxZn4qngi8/pEgWUZJI8HplwG4/v7rx4+XpnKxzu7my/frXTFN1sJljhKmdLGKyrZ1StiEr2SAQpW9J5ZY4clTqOMJ2SGp0KBTpuyh1vnh1vaoJ50H5K0c/WPUyHzNoa1fNeW5MUZd4iLRIhhYUM2JdWqNnUWbTW1njQtgkXD1e/4K2Mapu3kbx3w+8/MfwTw/83MDycT38Yu/dOe8LsN3Bu6en0j+X4fxuWbuPFne2t3e3t7deDYGcYDjY1g71ZUfKscrP+/mv7N4SvFSWjvCUajqote5FwgY32oqCitkYazuaaCOrkETARVRBu6tMd2LhvDKyrggl17WKlnYFjXi0lRWgkHfVMlupZRz3D8uB/3gn4ya7PMwdLtdgqUsZTkO9MkOxMY+al9u8iSthf1mKCKMYZYjFsfH5bReKymNODw/2qMWg24aDEyGHZUdDEK2HaNRee02T7NnK236k8mqezjFCAeAFYEY1tzHlYacKx8x1tkAbHhj1hdqd0ST6BFM2xPU50iJBPpQWGB9YDJp8Afi3nqGm6tJDPMUqsZNvOxdaT1UScd45icZiCBjWwQyVHozjF2pyaNr4OnvtsZoPDF6P51TbtdBobYOF4GRKunUYisPvqqp5kBRuugYK7lKazsxu82Hj1cntzazt4Hb4yFU2nbKqRk++FB+4pN3TRHdx7OAjLRphE1kyxbG72gTVXlQQizyHi2mYBrsdF8KmHggq3bE9HSZDNUS9VNdeCEObq/UjJqCV4lgYsj7sj7+jg6nrz2XOSQ6oAdguaKQdYGRbky2iUkJHt/kZ69tF6KoVta2x0eF/W2SLW5XftdYOtZXjMHghTUx+cjs0EhQPOZ4M4Ct6bVqyjGinsO2pKLwGyjyNrXX/Eb7bFdzofL4FVS1Vnh3VHeNkFZTWWJ8rJEj55qcpUQSFz51YDHKE64HpnPtIwaH6u5++I4j2uRdeMrj0AMYAXNh1HgSxPo1NhbvnW56aO4/GWrs/Lbbaw/8UsK7+fuhrpD+e2anDWQv4Sr+3ZUnEAFvuYwgDsTv0c5Vptbm3v8G5NTAEowCUc5gj9lacrjXE79uheohGSCmwLFLGNJurr6E20HGVZ5XHBAvISLFzC8yqVvVyExm5wbH1/wkZ5mC+5Mbwzvc48i0bRPmVcQAsn22QuvmxE0QnZ8VE+BU+4Ote5zTazrhV6iRmYqxAijjIvm4HJD+LkJA2dRNql4rqUgebNVq0au4eed1Rl4pbjG8UbSxo04VfsFdxCnJNS4PBAQBdsw+M0HX0XgWVEDS0tsWzv7gxf7pjhxvaL1+HO4FVFYvHaultkKUcvMkv5JoQWr51HSi0tZCIwmcXSi55GnxuChQ9jvmAVYJOviRhbdMyUDZ5GSQWyfVGraGqCZ+sNbjxvHN0PlbJaCGLP7zYZa7kzsnZGVU7Lg/2PhyJlPajKYf1yKb8kj8Qw/cZZB5wFXJ6ijTqrOgvPHnfFnPT2ecpoSxLM72/rA+LfdhQlylMMK95u4jd5TXYqg/WOFJ4vnSnDdLF0UicFAZKUYYGP4C2/mcdw1oXfToWvzvd/Pj06u7g63r84+rL/s1zpePxbJHl+sU5r/mvzBnfkvahRayGpL+r0EIwhN5D2AdQqz4HrW5bojgGe18+KZeUMutIai9io8l0els2Dru2kWjDGO4WCRWd4VSjwnlogFfi3+rfLBuUsa+LAoVvVBt2WEgO8PfsAOYAYq4qc4AkCHKY/K9J1ElofIhcwQy4jEuy+3DQvg6F+/Xrj1e7O5uuKSGC30F3SAOvnq/sY5yHG+VykAnoZAoHsjm+SBYS92OTUQq3Vkj7Pm6fUcgfKeUVaTTN18PlzWXCl7KAadb3gvPF4gihTbpFFB0u9Fxf/e+6hAkwXjtHnftpLlC9X4WJJnluKke2gH8THPT3JZ8noOwi0Obe0vES7bbZeDl6/0sH2UL8Mtirs6zd2NxN7ExDu9d4FD/tNPZ6Tve6+lWnLW7CN+NTIEiwq797JpAvbr/Gd/1z1EOenlz6ul2HTcuD3MOrSnMc480sx3UDv6OEweLX5ymwNh9thhemknbv57Qs9ZONF+BWwmbz8OA7Lx3oqZeZr8/0P6Yk6/iT5KBSJB1DAiQOu5bD1voy5pDAP+7N9qA9B4zKRNiwgCZJUSRpwLtG+TMaGA4qVUOorEOZiUlwm6bDMsy8H3m9CefKLS8JXcT5uGqKgxNC6V+B37fNsZJI9PiP7nD0/iIquspV/OKZuES09PFJbQqKMRUVGgUzTK0XBVQQoPvHPUmKDY68BToycbsk6R/xfGl+LcytLb9ixQsBOoXUsIyA8V31bo6BLg1/tdrvP+w59OCqam8onorexHFEWnAb8vS+l2LpQ6hQYAhzDNbdMfcWUzzlmqj4/VGjIxb3p0Uco5lZimQOBx+UfBt6XDUb2NHG/UNyyUVjLc14ez0Z8T9c8BtxrrVbbL+t6/R/763/dWN+9+vXPBISyfAaWn3xV7+VftnTydyttvDhtZhHUpmRKsIdYvLi+sx44Ld9S1ZwzjDwgF3cO1mw2rlS05AUmCljkO1ubr+i1mp90GxCfZtlUT+OmtMjlvcLtXT3IsOOFDsiBY2M1B0bqMFXxv3wL9dAgBY9DYXqH7yVknl8t3eo2SwzB61HCKHiSg1zN8pe8NYqw9muFw6Pt4ACr7joawZEE0VNkdppNUxxGPjBWlFCOnNGchHkd5YSEMtFJUs33dGP5dMLl4CJy3fGkp5o5oMS4SMJ1hOgyU0VBO73vxD+jE+V6RCgGMiW0s4DBXD8POttuzGD6TQPDiw8ZWX7dCu/0fQlQuzjQZ4en6F0PJ4GNFWr29unjh3zZGU1HV0uQeyF8Olo+P1ZxSjkqxViCa/gPmDGJA7OiFd68Qs1fSnJSGbJfHwgT0bdF3Wxql/pEEF+IPcFgokT1Ph8LyABFslD4iytpxrgl6osZnKtoghhuhI4ISlhHaf7G2sfbU9xccoPUuOxi3YEix1kuDK6Cbw+56tNMRujCtwUCgaLqFvD0PVQ4tWAAjgyckgs5Z2DK6ZqIOhzMZRCMbeTN3gYLUY4yiqF5M14vszhcYhARF5B8q1FJ1WrkVphSxSkL1OZeyancFgUXZTqn7A8MQQB6zs+OMYQfz4+OObjNjoRKdGYS3o6RS3WGgVkCQU7SBkvfr+wX4pVVOg1jzQhzUaKOzog/9j8+r+PJvHhR3688gM6CfXt6coit27JzPRRMmzI3iULawH5xSFaSpqMJYhpdSCAuxji9aZ93CYnMi9p+/RJ6TIvo4x0WtoEqrsv9O7f1iPIqR7kg0xLfsZo2JcFwlVzzxxZdfqqN/G9UG3lxTUoqORwZl6xfK2bcCHMVdlbnktdHx44DzXPhf2URZAvr5Uq1cXNSwPKakLuMqnNio+RwlExnhcs6rrs1WBPosJZWF99ZiG6KviKRWYFJFK+mc6bik8nfptlHexCArvfAWiWEgzz3Y7y0YHfUwZJCk5WmNTaiSJHnPk+/q45QmUB8IbY0gN98pSCKyMRaIQctbqgDvuIDByaJOtay0ffPqr53cdi/N1KoWxSOZyXbuFxMH1XR102B95AOhxy0LiiLuAX0tbkiv+pSVrotbV5uDF/tbr7e3XxtqsEOZQ+181QObWeEPyDgQtWXF/o+IKKA2qUoN8i8nyZSKBS0ZvhnSiOLLAC1bc5Dj2xpkQScijQUmnDGGJIWD6VE7l4Mys0Q2h6IvudnEDRsOyBH2z6yGAHJdaNZO7b3hUPs9DwLZVViQtb+6eKIkAor0/MQMPcUVX/tO0x2tp71PaCefpm3mlfRRhw0Ewa+JVLh+bFgpeLoArAa1ER/hC6nkkeAd/dz2gahUWY4NIFNNsbkyvBmj4EXo+gY5U7Mck7dCDknjL+ONu3rcRp8xQJa8Cmr0NptQzs9NLEpeBOWW5/jpqVwCwB5YwqzL2TQ6AgVvxd5kvLa4vhL3VgbKtTClhEr5/7DZKkjCtUhDWoVqWk9SDeTxtTpyeGqHFjPuSFZoOrqAFwv4ZJPi9ve7qrz2OicchBMWVGi5XGp/Y3FhXjngVjbTQn9gGrcSr0pG75PZXZ/wvbVJVU5r6LDplpaRwIf09B1x2n61T/IHQ9ZMDw5Br1YWPvWp48fupfJCykZUtTq7FrYWG+dOnRNgHEiQurwcFNzQeEuUXiQsV3L1fZkwXEUhggAj5KAic5ZwzmaZL3F4a4ShohVMxxAH60w86ZLQE4TC1nqHZTr6qfEqJ+GQ5vh404EyvBJFXmLxdnmOHJd9bCsBxQ9AzGTJ1JBuPwemfrnmVmfpoRjW4eODIBYrmxyWA2XQa2i+jOd9s+76mQC2cbk9pAk6DwSgIKY01+iCcQ6XaCuwDSN4xLoq9In14MuwR9ORomt7Mx4Q7laPd+/OHj3w/mni+dqXQYJbLHKPVHBtEiI2/l93p/8Fidh5dXyX9Uq8h6QBTmGVif6Vm0SgAVXBZxmKW4kd3UvYXW1Vyu/6ZUQkK3oagwsTFGqJJ4w2J899F3li7bsEg+S4jtgk/7lI6scHigpQVd8OyqpbVHmWoHKkkT1vOMhGwIrmUwO1ueWl6ClZUZWK2Z8je0I+AClN2ojqoBHkGhjsTvYGVZHE+l7QCeFhS5tV3EfYOpboNm2wIGU9dRdrhXhHdHQBZbBO37l0CRBgO8IStac5V3Vt+lUklCKmpiBuWJcMJFXBISXxBUnHUyBv1biAzjZGN3pXP19ZlC4xAk37WC6C+E2vsmmWOpZvcP3hDVBxRfJ/M4DB4QqMSQ9WViMDVtzpp6uxw5fOOasKt9UXZq2yf/R5UyeKhW0VypYBgnL8W9J4nOfc35vpJl/EGseC0AiSzpRiOBBHNCiSL+WGepQsD5wEpz9CbKvdJwmI9IN+jWjQ7/SOqNBse4EWajbBqXyhD/6CPzRJ1zNPwxX88Hu7BJOze37rHowhyahigOFV7rO9/OfoVZDMTYoEcHlNlKTJ88KB7IKMYU1fA/GL7GoajooXNfdQ8bVmqZUuQuJ0uVhlIhTKWdEN7D5CLJT4WqgSla1K/CjtF/62vaxJGDd3Se8RSskCdoH5mqBh8L6s1zOVZKeYJj+G2CYnoAHHgU88GS+fTLfPplvn8y3T+bbJ/PtAvNtM8Z2gUrY0PRIRLaO42qxS35wIHdvi6JGjmFMSLGSbRcYfed+cfXSoSwSt9yEUQYuC1glRVEqinK38EwDHXy9AYmpUkwRDSJ6xnKuCCrYcpmZpFhqaxqhM/ti8aBLi4WthmBHKq5wr7yOj750mbDFgnzrBnaMdVf7zc6RAoA8fJlOJXGbDvJhbG7LEfnxqVGi8KVrLDdEnMsE51QWTViAl0Mid4+xX54Z0xnEEB1zmbBdjwIivdx/H8w4lVJngimF6B+oNCBh/62/Ov09aQcXbzXYxW/gEkhvRk3SXMqiWTWvAtl/mTBMa83pXauA1IoRzhNDMTCS/OeJnkSBakWMsVReW9trsoI9QrSNF4BkSaaSHIwInCWcR/SY1P2LGDI2gLSSCkK6miVxNIkKqsWYRaaY+6wvDEWMbbxIAk+x0w0K8UtkIoPkJvk87l4t0nKVm0R5Y7fNQWXbAJctMHtra7SweREQP+I+sycm529y1qZ7gBB1SbjO4jlFecnFHiULjgWiJXGsw+6z+xPsra9hVh/CPoL8jbzIjJ5QtUjCNRtlpaYTuSBm8NQkirWLetDTaZaCnBxaJmOwxsV+9y5S7K2tuQMCFlq+eAu6uOT67V0cUIIViQpsqXNq0VyMFGkMS5YHaYDDfT/mmngu/JBiB6dTRDlHiSi+bAUUwde+fJkUvsWYqxVykIhdFgf8FlP6HIkFFGStVQ4ikvPBIS3aOpQ51iwp6sX1LhMdZGmee2q5P5eOkwXCKM9mU7rB3FXmrRRm3WaVq6/JQy6lQxOC4nKXRolEb/mx6oLYHjY32mVihf+Fp3CnmnjosTuj93V4MZp85YLyS5tMbrzrjawcIBGbbzmWndPAEr4Y6tulUyqP1jKO45XqpYubo+KqYlNlPO9cJhfzqeg9/hUyIDVIyDeYFYVYaYh3hjoQW3PUYsXiTVEvJkmnVm2QncvEGjXpkhzMiVPFjkpxmZHZU6vVFbBEfn6ZRLkqh5yklVyuwNhdDpa9TGzAPwmisc5s9co8mjDa+lzVZsPiF5UHEPzDJY7GtbW9y2QcoSQ9k5U1HpEE+Ml0WJ+Tx1XP1WWC0zJKHPcyKCMflO61KydciGJXtuF/NYz1CPdGIWlpaUGlWGN7xVWQ6zG/Ly4F4lri171HO8Kr1KoaQ3qkozkE6wQswPOlV0jJAHFB1GW48lV7CPDJnaoFW4Z2Ow3w0OTTyCaBZMbiy0TJqLNI2BOFKm+Mo2Sh7LqU6nF81i5od7tVTrfLhHhcyuO2HJ5cAtked5BCnGC86MTzxbqHiuA1mZCPGZMQMaj0iCbCZGZsEipIK7dsU9JYILpixmVxgvvF2JYz9DKpnqEVSbNNEEjqriNlEyvyy4SsjjdRjjuubuYGMaK22paR2VvtF3qiM5Qb7hd6MJjzDzEdK3Va0AHGtu+IYIattIgh51Y6JiGAHBVWfxuaIhirPJ2AoxHCwu2uk1u/T6zECaHIDYUoa8Xi0SwKmyKxyNRSDNm5fb2C9RUvGfbKCUTPaAJpRCxMVbXe5xcRX+Fe5unxRoYAvVBUdRJv3a18mdCBL8lzIvCVmjEOt+sonMm9k7AJwbtRpDyCXDZsA8IWs7V1QPkFG4i88sUsjNKHOC/v8WXbNATnM8Fq96iX6net3uzFZVbpBrJXdh5+lcbKwuxiih7aEr+Lvf4YEbvy43mrh9Me848hy9raF6nwqevmcXeN/CdrB/sLH7BFX4bGhDixHcTAZUK2joZnj+JFNDMF1AGr0IXlKCBr8X3AXbiMR99RD41Ayp1XjI46981XEHOGJHqjK0Fkxl8ZJFukALInham6MQ4cvPDK5AgRvlS/XUwRL/KsDI9xE2arfjlXKBT0VMLZMskMQWdSgIn1jbI4YgJWmitJyfUKswzgtSlmqFZiSBHgA6tuJONgG29Yth9yldEVh71uvSSWPNgFUo5J6DQyRYVGeFfoVPnzjVs+qnFjTbOwBRA1k1JhlQ66svwVkZO9seXqZ2YYuzrK8I6QwkZza3GC8jR6Fr2urJTJg0T1cKv+uYE7rDupTqslpRcgL0iixVUBstgoQZ8l/LLM4qXOCZKAOs6QI6zjGNslv0wqwYAyB2d/qxVs2mNVnfn7QNro76kLB/4fVafWlQatBOoFXmF7WHcNNcvb41tbdZur0iZB+n9rk/Rypb3WO6KQgs8t8PwcQIAzkXmrWYFCEPwdbL8H5V8i+EtwZ6NSRbqcRy3Qxmy+3N7cfRkOgs3N4VL+a2sY4GIId4Vcwa5CVcqKVGFoWV5YqX2apSO/trNPyztKDTDZKOGff2RTtKUhWaLtL/dXxmhULmgtULCwnMGCygVuTfDFif3lnqobqTQPxGTYqOPo2mTzf12UBj8etyYRS9xt/W2v9rYcODkiQDS5QdbtaR+MKbT1+6FARLkUwLwyYUQZp62x4nW2t8ldR/KScjlkSwRJ+Ne/8wZi7gRqVHX7e7F2EjxWlA47hKhG+djkEkLEWfIu1PThMQr7C+LHKoaTyh62hSBKKAPyCtIQ5AjwsBhqwaES+oc9810ircXiE07TiK2EXKOCOmhIFGy09z128mQsuYtxegNDQmmbrLdQ1jvFScHYOdbyICFefhRxpRLIZRP90bGQDRCt0MbGSDbTE+tRRzX1vZXH/UiWptOtxeTpSe4V7abCb/ZOayZB2qqKvcP3C9Ie70q9kBIr4m/wfLDi9jShhYgUhaWpoLgodqfPdYlbnIqEApgcHGaFIGs3cFvUk+M6i9WpLqlT1gjh80sJIM1ZHTZKNwhSKYHKlie/8jNUZzsTweaTpsWA458wzgFRj9yXyMLBXAQ0Kq5ki5VX5NPZlLS8rknGOgnwXM3YzuVohsMoiFzc27/bkYPE/diEVxKwsMygLSO/pZBAe5Ecs7rRHprbguFk1SE/Jm4qASB12b9SetIJl0UZXBm45ri8q6viyvo8TdHvveMtvjU+kzIaNa3iXH0yLqIJq4OzIorJ9uXyUfyhEk3H0XSKFGxb5HnJ6H2Hzyfvq6PbIO6qC327gKoSzm0ft3EqZVzgbbVkdmVw2O6PGRz8io8ZXBniiDPAi5xvGevEFWu4P95WbFxehpRjMTcYGgglL7QFNskQq0Mo9O1VJlrKgzMxSE7Ut4rQkmrFzt2gQDKs2TQT3iWjjis/zqGt+RiRXsP5lS4KHYzpZqrKC9+hIPGFK0jsYQVZCBpV9lxW1MKoDKRSFiU0vWj/6lZCNnJpd6SV4SSwsXbnlNcBmgGyAYp/pZmCsSvfn067FVL4dYz/KEKUcFVIq/pDpm3PnTvn/KQoPynKj1aU2U5TgQ4WqGFmkPTaZOHM+Byy1NJvbm8GLzb1663By+HWlr536Q+8ZS+tfvb4BWU8Hbjw62HuIY8wKfzClzLoSg1Mu/b0LOLryFrbtkz2bYTu/f/tfflTG1mW7r+SwUQ8Y1rIbF4gYt4EBowpG4q2sD3VRQVKSSmRbSlTk5kyaLrqf3/xneUuuQgBronpfvxQKgtl3vXce889y/fxPxsnikZw1qNksAedBp3ZhDqEAswx/Iz6j6NQ+s8HFMNPhrdXj8gDrMA2ovLwtnwQucfePU87A4DdoA00nX2OptJ06jG5AUbqgdrUBfV8sSpVlxq5UIvy5+5BLVqsPy1s0RKq0yyJm0F+K+ehtuxzEteDchEUqyoCSazIn17MeFkN/h4lgzS7ehgIK7+M88+YJGoT4fzEtPqsd9wqZxx1vlTeO+XSianiQenXfuq1nmNZlM/Ghc9CinM+DAgVQf1B1q9jbtu+j82PiaG7niTF1VdUzojTinrpYN4OajKpy8YYq2mSaiM2GMc04+JLqIVG/+a+4ilqVevNYBZdDdhoIqLOlhTzhWIt7HdO/7vbgCPYTys+lsGifPGyKad0SbbGHTlJrZUnug0xT47IlA3PlfbvrZycfVnf2Nh0h2BvZWtje2N9c2t9e7MyVHsrH74euj3b+3XlW8IA7P5gId89/zZDHRdHp1pJCcyDISV8QC/aP6ZZ3EdtmxvtjY0NjN8sTIq4mONvK3/85lAHn3C1kGRjUv6jtTLBxXkaZsULLJh1pZtkjPM6x3cjwGd/DER8CgyVurqc7pMQvkOcXEdItMVNEw7K7tswj+RBW4qArneNDc7+Qum+xkut8QBkmCBgEYqPVDQJ74iusKDVZPE/5Y0umTdqF8CiI5UXX33CKEx7hvTZsVgSLouJbSfgDhNm7dsmGPvXX0fLp+M3SnBBaeSeCANT0BHjtnqw7eprBbrmWu4KZcPWtxmfeBq8z3t223jBOZsuFTxaUzovJWPuDQ17GRwE4z7D+hSMS9pnBcTLpZYcU84wrbzEmgtjKlQXgmcXtTiQFY+wVOWCe9qnFd2zZD61+oFnwcH2tyRZak1Ov7vUazBX70vuJpstqzoIC+llcTT0pla1vaYK7Sb8gLvAGafMp0OSMXtX5nZZ1VG2/gfUcI43ocGzouhXUNKmH3LXKK36xTcLGcUfcIdi6A/cmlgnr5cPyIMsmit7iXnYOJrXhbbJrMZFXRWkKlmQzkvioYtu+xHrkHgciTB2uXpp5zI5pjePGLt38a1BYLlHL5qbHizX9gddG+umnZFn/VsYtaEsznwLoexXMwNhHqzaJRWsmQ0dSGTax4dfKu/ZXn+UHtze4C+la+dDyB7eaQJDQnTafBfbQ34WX1xgk8k4Z1PCLuHnCvxaKjC+5UuFj1M7cLVYPhy8He+3ikrLuL912oaiY7MnYZESoZr+nezEC0BrzO2/MBkiTbhujLu14IbLB4m9Ptyp3Uh7HYV/kb9PB6bs6+N0ddLPWUML/aAPSbCtx9l+ivB5dISPXNmvwsEA1ra7tdeziAPFPSWWcs/3uQgONqBEEanvwg5MRfmDP36zbhX4oIMVHdo4TobxeMwhnHDwR0Xwf4CqmEfKNdmiKrbuX8W+hSkL3Z6J+WiWhXI/6TcoXk7xOxUkczqT4WOuweMDi0v83a7dEWLzocV77p57VddxvSgurhSasIr8BwTHiAMdiqiQkOH35wIjP0uKbO4utf13K62V/Y8rrZXDv+FfHXzACLH/Mz5O8PFXfBzj4xM+TvHxFR+f8XGBD7z7Fu++fY8PFPD2LT5+wccRPuiRn/CBAt7itbeo4y2Kf7uPDxT69gs+UNEJ/XqGD1T+Fi19iwYd4JEPqOgARR3g3Q+o6ACPXKDyA/ToAO8e/Cc+DvCB8j7QGyjvgJ77gA/U9h4fB+jRAZpxQOWhzQeo8hDPHaL1hyjgEEUdodAjFNVBg47RjyOUcoT+dvDuEXr5Du++wxvvUMA7lPcOzx2juefUZnwcox/HKP4YBRzi4xi9PMYbx/QGunWMhh+f4wPNPUYdx2jGMfp7jNYfo/Xv8cN7lPcFJb/Hr+/Rlvd47QSzdYK/naC8ExpxdOEE9Z7gtRPUdoJSfsLXn1DlT/j1JxpJdPADvn5A+z7g1w8o5QNa8AEN+oh6P2JwPkIYPqLKj3jkI9r3Ea99RPEf0aBTFHqK105RwCkeOcW7p2jGKZ47xWicopGnKOUUr/1CP2CS36GRp+jMKWbmFH07RftOUe8p2nKKNp/iuTN8PUMpZ2j4Geo4w2tneOQMTTvDu2do0BkqOsMcnWL8TukNNPdnFHWOv52jzeeo6Bwln+O1c3ThHKWco+HnaNA5KjpHm89R+V/x8CcU9Ql1fEIpn2i54LkOXvuA1z5Sj0heaELx9Stq6+BrB+V1UFQHD3+iH/BIh0ohEcUIddDSDvrWwXx0UO/fSOroDXwc0RzRcxjJDhrZgdh20KoDNKiDbl2gpRf44QIDdoEfLlDbBWq7QAEXKP4CTbtAqy7Q0gu06gKzeoGSP+Phz2jBPkk7WvUZLfiMhz+jos8o/gsG5wse+YKivuC1L+jHVwzJESr/Bb/+Da/9jfam/6xTFOpx8rCH8s7YCn4F39j25qtX65vB/nh6Ha5vkX7z2+p1UUzzvRcvoqR9E3+Lp0gkaafZ6AW+vTjp/HzFr12F/NrzdvBVTPUWf1jZB022IlccsypX0WPebLx6vfPy1XC4s7v5+s3WLuGHpABDatTFvQOxcvmkdzlwaxVmO0oQtTa7Mb0paJrGkKdNfF7DrsH6th4sLdEFHHVbNIrHsqk0o6bclVz1RNPyr0PTUkN66UlFzYs/i6whJrcmYKhkmjHJo2I7NewsPuuLZW+Ze/HV7eCzzX7WVrX/ITeyP0jNBrzW3IDVGnXUS+5iJDC9yBmc6Tgpl83eQFrFz8rL61nZRRhnQaNvrMInE2FB0x3FkSKJ1MgDSAd5CBLO3V19tEhw4FQ6iRExzDp/Og/HrJanSbTULsHIW64t2kaLlRNPxaoedAQnEBLRZR9C9q0SAQplOhrHI8p0xnxJ64IsQiZ8LshXUsr+2SFfDIXFRwN62eNYCbOny0LyzeQiCxuvcL6agFUgoqnoZcEgQoirAj7BQ3d1/vnTwfv9ztHVp6Ov+58Ou0E/nCoawqoEY43nBJjCFLst/9IShcD/ptwCghoy7mhOSyNp6DAlGCKgxnnUDVbhzsesabwbRCKLgq4MUFeC2p9D5DE7uQ5ZbaRtACQ5ZKCF5e7HLkuZYKkLEvndW66S95mVuk5oeXYSpaRgtR9OpmE8SoKTwxbHnoUT4RYG2sjzdvAuzdB+a+PUUszUyMXLpJTb4k2XeQxcVDh3PRQV8gELwV5aKDXQ/pOoCNUl+9AMZDNg6TSE5epbNH/BR8A0jDOau7sHwUEJR0pDdIuADg7S44Cg3hh5yb30FhspQdKBqW+WR8iApEs6BSlAtOzEmcQDgGOYFAY7bXkryKPRhFWXQcSIkeFsQNAFMhF59QTSvcM5Qz7KDuSQqJOPagFdmDkZdDwIHKaojyqXPUNq/vfFe8eUUQOW2SgQRiMC5u4AdHbfsfjNNC7cBNbW3gM1pghu0uxbzrnFm+1ARwH7XG52gLbfP6QVadStIfcguEWDW61BMRbqjQJqkrkQijtshan4tc0JTOCKJ0POGLD844sHa6kttEWF5POkf52lCVBKZIz/nvaCIbGH2CAfb0tLCPqze75/ctjlYFgGZ2R/7k0F7xGwNrUsJOyi9WBUAb2ZQURWcRQiAiol0Cmeuoyc+hxMmj/XzN7y2UMQthpxKhN8ruvY4vPEBHJBsCRra7RSaclO4/43oWMnHUFFCHnFwFLwsqhpRgAcSbOwrrNQAnfIUzOhObLaXbhGEKSLndnZc2ibzmaAVOGUdDVOEwxPG4ZNTgm6qexUuayM03AQBrLkn6vbHVCRSucecAiEn0DwT2Z0/Zj2FTCSc8Cs7RJd4pVuDLMDji6mgW8H/4oG27s6/XBz7YVgBkTL1/ZkxX2y4j5ZcZ+suE9W3HtYcQ8jWFIFGv3JjLucGbe1MoyzvGiM4vfC5quOWznFsqgfT2O63qA0Cn8TkvQfWDYKs0UTKcbCIBp+4m7vc6UielH1DmZzaCLc8QhklijaJbZZwoquXXAmyR1UNbNrA3+r5vE6ZncD4/8gvjRSU6/TsWJNKkWDKKsmr74tcKRxbkEKIICMSW8gDun27xRjWCI03e/8OL9MpAS+2rmVLA48bdghTvi2h/vZYgIpM1JBlANFAsgjPltSlPGtbd88eXLoUELN+rEyQvGds1RJP82Uq8V2vJT/4gTPkM2H8WAlSOg6Hl2PcctSaxvdilA0J+98B9qBd+GqqZIR/SpmI0HQAC623HhdFXOIaL+V1gr/PI6WisN5+XJ3+PrN7qv+7k5/Y1cYd0pTw2Exud5NS7AwCKehTtHYkJHc5wgyWIaWrSI4SmaTvaBLTUbioLa5q+p8Vjw2Gt3ACvhy48sKmW0EmcLMdy8axUlu2ZTmj2gKh+FTg5hKo65NGXaTJOfji+qdmKBZRLNe9ef98cMT4KmiwfpsmibBJLyNJ7OJG0yLRWBgKB0CEjNvuBBLdhs15IpiB7+H46tBOM9r/VZSzcre9qtXrZVJnPC3zdrsMxMZjeKCXlTcAA+XJKmyDTnxmtSWO6rf3d29q3qOZbWN0AHg4mvlF9geoUm3G1LsV9L3FmOcia8FMxLGY5wZN1H0jf4Bb8vVJE2Ka/pq//VfszArgFupD4VJQtigK62VeRTyDxT+v9TiHr4ebG+9ftOLNna3Nt8MN+qhobBXk/iJndj0xxmNvCoPtH+SZAUkWeVNuMN2372ga8YCK50GA//g0cC/pP/4pxkAArh2RwB/4CHoct5Pl8aha9w682nUJfgAwOw69EN40XSpq/d6fdC2DXtuXaQjPGhXtGFTBpnhOaLkCZFOCmU1Nd5rjsLXb8KNl6+HGxtbgzfhm77HGOVW0BweKQGJONisiBrkR97nYGE1M6SWuz1ksUsN3WBV/BvPW5Xx46FuBV1nNPDVGQ4dvzwajznidtnAgeXzVDMmH0U4SJGFbC4krbPmrOT0x+XK3u/1AGvt5XM11AUuLIFbEwoteoTMSLw1sNu4liUyLKJRmi0bpb0f7KwP4lHMThJOHoqHc9UrnAb2gIIh4EqFIxijFH5ilyaW8kKGVSLfVzt/OCHGRnfq8GRWvSmHCtLZg5PAbU5L1QQrijE7Eh1hsYrOSm29NTXuJ57KB29VJsxviJ1ORnXHu4IQG+SInFjGyM/bn4F9gi35nNU16+W0TRQWbCjwcaVdlCrCtVFPlwn3Fg4u2mMM4LjbQqG0qdGvh+5EqddskvbicbSAbk1yVLxSlJMPGZJuzXTaD9av075yAXNjJE87KNLp+mzK7jhqDSA+iJcqGczyAkzQGHNqIL04jRIy1GtpeGkSM5zAlBxUPMuEEHuWFhGRgc0BA8teN3WnpOOI2W14OspYsGXmWx+71+5yckAxFwh5zwx7pTKDj7J0NtVTQKDz4MCjo/xfmvPZppPfO69+P0BgDu96FG3PjIH9fjQt2HNnkYOG8VhpN93oFr66u/iDucdia65UWTQKM2XgtGtPCDaFl88i35EJJb1JyP2jNyqXLr4RoYBVf0JX9hrAdzw7lB5wdlZi9fKJPWO79vgW6iQEWYg841kIebD4XGwHn6FGOQDD+ayHxURiUghFBUUTMfuawYlyh8CHcsLNMx4LglUtnMBj4S73GXWJ2kFCAe+3USUdsVgCRAJlmEzlkuS8yCf5I6QnsOzjUb2YkL8eoVN+eUDeDHPka4c0L6VutUsDy1hdTSP78EVFP5GXfIz5mDNliEEGU0Qz2FAyPw5x9T/2poPh73+fRqPfp8no90Hax3+3v/99Ovr9dpzjv9vfi9uCAxKfiOHrieGveF6QLX4FYnEY3+6j5E7i5EqMCSVa5tpL88tFt1afxVeeszY9siLAhwq4zHQAbYFu1i3BwxdGVSwzL17OLEYLw7a94bwpCBstoYCURxg4y70eJtFtEdCdLrixPtQ+kZKxm18jIBgbwYmqkvqUdtohwOHrHRgqHVJHaqrlXDbnqzDRKTFoCxECUo3syPRr0RYEXIMQG2aDfTPPBzrNVWXUOVGEyk7USjaVWb0wm41Fnvppwh1Xul2eB2JLm0RRsXBGLoizJy/i6Wwsu19IQaq83Y0FfE1Bnd3sPgJsVnBmA5dnuTyxM6ZTHv5wMHC5OOvwhYK3HLCRhSM9arpN66PbomEZKT7qNL3hHRVjtF7MkohVwRI8KtELF8gtH4E0KozHKTMLmRpkWGnHRkQZLWoqytyEYHWlMLP+jEBGVZUV0JAszr8JMQFXnSJoRlP+1o5Y1MFtwPoqAleYg4bI475HJjqJJhM3u4yigAcEDJIIV+M0iybxbOLwBlFhzI6DBaRDJaTOiCmWQ8jVdilxE4bl9QJ26j6oggpZhqSHfznp7AfnEI1kNpHT1KOAsLZsO2AcAMn9URIwE02dipquymY7+BRNIrKRFZbphTSnPHK7AYauYjgbj+ftoFNk8TdzX6VO98IxzaBa+XSCWjIlcRGPFN04GVSAf1WVp9RtnitcKzBRFwtFUUFsc/dEoPHm88dlf+QFi7sBfrtOJSqIwX2dm2sdANNj9al3ym9jAJg/Z+NyEjGwomqRnn6kNgdFjoSnJfGsUwBuWp4qo+T5apQJo2zU7QC96TptXF3LaGCTqubFu2iVwdRHKc5lFZkLgpgjurWopY5cOMij/tz+iIE16rEZu1LH8Z1i9cy8n2M0SwSueeQjm7lcKc3cSrX7uOxrhmIZk+KVTfMPJIAyHiqhXwfdqvgxoE4UDiQIajINk/k9YOjkDcZoiXObZa9ICvvnJ7V2NWVy78VZcb2sr8Yc+joLh5K8+xalLEpFG8iDVB20q19++eWX9dPT9cND0W9dRHRJN7egeCNiKbUw/ArBHdPGqJYkxQ+vHo6C+CB9Xt7bXh1wz51ezltmedVpIJNZYvlB/asYZ1D3o3hayAFb7vUwC2cDQ0NfhhbPBQ0rzfgYwjY9voEm6F7ySqgGBByGPUWNAmW8PeOTlaa1uMPcwMpt0OPurLMomyFfHJhR5wPU0AtrXNawgxJkbmlUzPApsTZM/bPEXoHFSriwt53TTqv2/uv1uDyYCwYeW6pB7l+4IJfx/V+4MndyyJRqzREAnplGJtqhu8/nOeHYnDA3GzozM+imBtFyUbkQDhsvEFMUNwcMoDYmYJSEkP3xuJLqT0qZIkDWGj1ODheO2cLInBrIj/D/U9lqjPyp37e9AJ9a9Hl/nFhHv6OxtJFEgmStXZcf6XKLXisPSxj0x3H/m17FNOygdsAIVdRtMEnUn7/RvaqM8FVtjHjl8HTspTwxi5b5s7zyvPSTvEdhMveEVc+S6cC1+NsYnGq3OCKH/uwSmdT19kfgbPEmvwTWFu5FFsyPni0hQ+GmxfYXtvnWgJrJqFg4W+YznY3H7eAtDGOlLqkUVMqx3EEoI4+BGRomUTrLx/N6JLBeRNdQVg7EQuODfYlC/UMB2WgxLAvK9ogh1pgYb3j9XB4L1/W/bawFvrNkXKzXfteFo0lXMTBGhdOWySybo6r0CR/s0/hHobYu9LiAQwDxTrEEE7p3oLrLXdCLhqncTAbSTBtlemUOu3tgaVVU40pq5T6dheG6pdlVYC1PY47Ur22SSLUxyARWVw2TntokPpSQq0nPfaUGNfqxTjMbw+Zwc90djTlUZtMWWVfrWJUlTnTgUM0XHnYuG59JB4G4hKPU6aGN0ya7MvEt6EXdKmJM/pCXRWNCRkix57YUNFf7qBXbG/3WDlKfModAlVqElrlEaproKMIbhcRfypwXhnzNmtL80cDl2ZIfTbN0Mi3GnAc1AiNJWERXgoH9Y4lSCkOU0nUwtrulTcyBJyhc3lBxOWLHIZdNUco41ffV5mO3Wdc6YpzYeY0ZY6pcAiLXVxWAgx8xIAQRQMm7PCTMvkYVUpueNcIqPDO5gzI48LLaAboQUxY/IcYlnVKmuQoHA2WVKcUasGAqS7wzY74Exxwig36ZIOtlGkyzI0eF7hoy1BQdkZYuYNbTpBu/ebB2wyfjK3YyG21BUy8rxbi16/lihtYiVbHQaeo6els6IAhRkWrVHaYhdKIdnBkK97gxwIJJxMingIn9EM0pGChwh0gVTJkgbHnsJWLbPsKzIQ6D3BDRS07J/sHFyZcj5WjnDZDunx6O9ZLAy+MwGc1ERTLBh1gK4ZKBhP3N1y9fD169frO7MdiUSG4NJIyq+Bq1tKCEEyANKVNNePfDqvnW07JK+rhzM7HsHs4NUr217McrXUT9EItaUVCgxoQAGpMRgsSYMigjqqAs7MV9TIp3lN7Hf1s2s1V0jBpeKOb0cbieDP+TJX3yaKK+pzX0T+EUB1EtEVCJkr6ZaqlMutNIg1RLmtTAjbSQjom7gh++pEtQJkknuT3S4ToZ3915+erNztZguLuz/eb1TlV100ywwnBlSxisYTDyOVDJHokgZR06h9jIjFLLDEzLjkbLG4GW6XLL6WfL6ZpgHtTvUvRvdQ/TJrO2Rgzea2uSosxLpEYjpLCQHvvSimA2NRattTVutBZh4uHKB7zqqFq8RvIuht9/Evgngf8fEHg4n/40ce+cdkTYb+DcCqfTP1fi/2lEuk4Wd7a3dre3t9/0+jvDQW8zZLA3VSXPvJP1j9/qfyF8rTgZ5TXRcMSv7ETC9TXai4KK6gqpOJtLKqjRRyBExBlcvU+3YOO+iWBdFUyo7yZW2hg45j55FKGRtIJnMlXPWsEzTA/+zysB/9L5eWZgqZqtIjaegnxngmQXVXpub/8mooT9ZTUmiOI6QyyGxufXcRBb+qZ7h/v5MWiacGAxclh3FDRxL0y75MIzN9muRs52W96jeTrLCAWIJ4AvomONOR94RRhxXlAG3eDYsCfCbi5dkk8gpDla4yQcIOQzCAWGB9YDHj4B/FrOUVN1aSGfY5SoZlsvxerJqiLOG0exOEwxBiWww0C2RnGK1Tk1Nb4OnvtspsHhzWh+pUU7nY4jYOE4GRKmnEoisPnpqpxkBRtuhAvuUjednd3+y43Xr7Y3t7b7bwavI++mY4uq5OQ74YF7gWm63B3Me9gIbSE8RGqmWDY3+0DNVXaAyHOIuLZZH8djE3zqoaDCLVvTUdLP5mBIDapzQQhz5XqEMmoJmaUGy+Nmyzs6uPq++ew56SE+gF1DMbaBXrOgX8ajhIxsdxfS0UfLqRRa1nUUDu7KOmsSXX5XjxssrYjb7IAwVe+D0+toAuKA81lvHPc/RLVYR6Wh0HeCKb0EyD6OrDX1kbxpie/D/HoJrFrimR2WHeG2CspqtDvKyRI+eWFl8lDIzL5VAUfwG1yuzEUaxpifh/P3NOId5qKrRtceYDCAFza9jvsyPZVKRbjlV1eaWkbGa6o+t8ussf5mkZXvp4YV/f7S5gdnNcqXeG3PlooDUOxjCgPQlfolzsNgc2t7h1drEhWAAlzCYY7QX3naK4zL0a17iUJIK9ASKGIbRZTn0emobaXldWyYQJ6Cxik890fZyUWorAYj1ncnbNjNfMmF4ezpZeFpakV9l3EANXa2Klx82MhFZ8COD/sUPOHBeZhrtpm6VuglFmBmIUQcZW6LgckP6uQkHRiNtE10upSB5vQ2WI10DT1vBV7HVeIr5I12DKrwK3oE1wzOiVU4HBDQhmV4nKajH6KwjKigpTWW7d2d4audaLix/fLNYKf32tNYnLIWqyy29aKz2DehtDjlPFJrqRkmApNp1l7Cafyloli4MOYNswCbfEnF2KJtxhZ4GiceZHtTqShqgmfLBW48r2zd99WyagZE9+86HWu5PbK0R3m75cH+p0PRsu7Fclg+XOyP5JEYpg/sdZ+zgO0uWuFZDbPB2eOOmJPOPncZZUmC+d1lfUT8205AifIUw4q3q/hNTpEtr7HOlsL9pT1lmDZrJ+WhIEASGxb4CNlyi3mMZF245Xhydb7/y+nR2cXV8f7F0df9X+RIx+MP0eT5xfJY81+rJ7gZ3ovSaDUO9UV5PARjyDSkvgEl5jlIfc0ULWjgeXmvWFbPoCOtMokVXm+7WVY3urqdqqGNC5WCpj3cVwqcpxq0AvdUf7huYHtZUgcOzaxWxm0pNcBZs/fQA0iwfOQERxHgMP1Zka6T0nofvYAFchmVYPfVZvSqPwzfvNl4vbuz+cZTCXQJLdIG+H6+uo92HqKdz0UroJehEMjqeJAuIOLFJqea0Vq14/O8ukstt6Gce9pqmgUHX75YwhVbgR913bDfODJBI2OXSNPGUq7FxP+eO6gA08Y2utJPa4ny5TwpluS5pQRZG30vOe6Ek3yWjH6AQptzSctrtNvR1qvem9dhf3sYvupveeLrFrZYiJ0OiPQ670KG3aIeL8lOdQ8VWnsK1g0+FbKEiMq7C4W0sfyS3LnP+Zs4P730dr2MmNqG3yGoS0se48wvJXS9cCccDvuvN19HW8Ph9sATOilnsbx9pYc0XoRfgZjJy4+TsPw6nArNfKm//y41UcWfJR+FIvEACjgxwLUctt6VNtsR5mZ/0Ye6UDQuEylDAUmQpEragHGJdqUzGg4oVkLhVyDMxaS4TNKhzbO3De9WoTz5xSXhqzgfNx2AUGKo7hX4XbvcG+lkh/fILmfP9+KiHSjzD8fUNY2lg0eqFBI2FhUZBdJNh4qCWQQoPvEvQrHBsdcAJ0ZOt2SdI/4vHX8X51aW3rBjhYCdBupYRkB4HnSVo6BNjV9tt9vPuwZ9OC6qi8odRGdhmUFp2A34d1dLUV6o4BQYAhzDNVehvuKRzzlmqtw/MDTk4t50xkdGzMzEMhsCt8vdDJwfK4Ls3MRdorhlo7CWl7x8PBvxOV3yGHCtJa62X9fD9f/eX//bxvru1W9/ISCU5TOw3OSrci3/a6mTfxi1cXPaTBPUpmRKsIdYvLiusx44LQ9hNecMIwfIxeyDJZuNoYqWvMAkABb5ztbma3qt5CfdBsRntGyqZ2S61OTyXuHyru5l2HFCB2TD0VjNXiQ8TD7+l2uhHkZIweNQmM7hBwmZ51etW12zxBC8HieMgic5yH6Wv+StUYS1yxUOj7aBA/TdddSCIwmip8jsNJum2IxcYKw4oRy5KOQkzO9xTkgokzBJ/HxP05bPJ0wHF5Prjjs9DVkCLMZFMlhHiC4LVdyvH++F+Ge0o3wfEYqBdAnlNAiYqedee9tN1Js+qGF48T4ty7/Xwjv92AEoHRyos8VddI6Hk77GClVr+/zpY75sj6ajqyWGuxE+HSWfHwfjlHJUimsJruE/oMekDsyKWnhzbzR/tcNJNGS/3RMmoqukbpraFXwmiC/EnqAxcRJ0vhwLyABFslD4i6E0Y9yS4GvUOw/iCWK4EToiKGGtIORf1D5en+JmkhuE47KNeQeKHGe5MLgKfj1k1qeZtNCEbwsEAkXVNcj0HaNwqmAAZhg4JRd6Ti+y3Y1iqrA3l0YwtpHTew0WohxlkKE5PV63WRwmMYgGF5B8q7EdVT9ya5AS45QCtZlXcqLbouCiLMwp+wNNEICe87NjNOGn86NjDm7TlhBFZybh7Wi5sDP0oiUQ5CRt0Pp+Zb2QrKzSbjgOGWEuToKjM5KP/U/Py3gyL1+W1ys3oNWwbk9PDrF0a1aug4KpKXOTeEAL2CWH5EvSdDRBTKMJCcTBOE5v6vttIZF5UuuPX0KPqVF9nM1CC/BxXe5eubVblMMcZYJMLb6jnzYlwXBervljSZefuJH/ibiRmzkpiXI4jkyyfonMuBLmKuIcnEteH207BjTPhP9ZEmSF9TJUbVycEFh+J+SuKChLYoVyOE6ms8JkHZfdGnwTaPEtray+sxJdVX1FI1OFSS5eVeeM55PJ36XZJ90IMK53wFolhIM8d2O8QsHuKIMlDaLMmtbYiCIkz13ufjs4AjOB+EKUGsAt3iNEEZ04DJCDNq5cB9yLDxyYpOqoZaPr7lVd5+DQv1dSqGsuHM+s2JhcTBdV0b2bAu8hHQ45aF1QFnEKhN+jK/KrLmWl2wqjVxvD17ubb3Y330R+sIOtobSfyqZtjPAHBFwYdOWFrguIKKB2KegGWfbTRIhCMdYM/0xpZLECUGtxDnpkTYmk4Hja0CAazBhDUvFQLHJ3Myg3Q2g7IPqOn0HQsLVBZmy7yGIEJNdNyLdjPS8MYqfjWbCsxISs/fPFESEVet1zEDD3AmJ/7RpMdraedR2gnq7NW819tBEDzYSGb4lWeH4sWKnYugCshmui20KTU8ktwLv7OS2DQRREw2HU12RjdM6GNzsC3IyiEwVmx7R9asfIOWH8dZSpr4/T/jdMoIJP6YVWlw2t9EE0jgpehHbpc9y0ELcAkHdMYfaFNBoVgfG7yZOUlybHnerK3BBRC1tGVM/97yhLzaAQD2m/xEhN80F3MyksOD05XJUN6zkXJBPkzw7A9RKmfGoue7sdnI+jMKcchMgyStQ8LtzfmFyodw6ItS5K3A+I41b4pjR8n2h2f8byDe2ocl5Fi021NI8EPhbirnudpt/cjdzIkILhyTboxMLqW58/fWxfJi+FMqQo8ewqbKwzTy06JiA4MSF1OLipuaBwWxQeZGyXcrUdXfA6HgwQAB4nfR50zhrOUSTfWwzuKmGI6DXDAPTRDLNsmgTkNFHIUmejXA9+TqLg5+FQM3zMjkAZPmlA3mJxthmJXA86mNYDip6Bmskd8RAuf0Sm/nkWrU9TwrEtQ0f2gVgeaHJYCZchWAX7M+32z9vByQS6TZTrJknQeaQA9cec/hJPoNaFBXgFpul4bIG+vDqZD9qCP5yMEmV2ZryhPFg93784eP/i/PPF82BdGglsMe+c8DAtEpJ2fp/XJ7/FSVi5T//ls8g7QBbkGFqdhLfBJgFYMCvgNEtxIpmjewmrqx6t/KZDISBL0XAMNKYoeYknDPanm75hvqjLLnEgKX4ANulfP/GVwwElJeiKh6OSaonSVw8qSxLV85aDbAisZDI5qM8tt6ClNiOrFjO+JHYEfADqjVKLPPAIUm0Uu4OdYWU0ka4DdFIodGn9Ffcepr6Gm20NHIjlUze5VoR3RE0XWAZn+5VNkxQBPiMoWXOWt4OuplNJQik4MfvRFeOCib4iILykrhjtYAr8NYsPYHRjVBfmwX/NIhCXGOWmHky3EW7jQTZFe8/qHH4grAkiXyTzOzccEKokkPRkoRgbyjlTTtdjhy8cc3qVr15dqrbJf2k6kyemgnqmgmWQsIz82iE+dyXnj0qa+Uex5rECJLqkUYUIHsQALYr2q8JQhoJ1gZPg7E+QfRWO02REd4NuyejQ9UpnNCi+O0EXatdBqTzhjz4Cf/QJV/NPw9W8tzvbwqmZdZ/5G/MgSohxoHCo61w//xm4GorrCBQRTLeRRnnyrDAgq1BT+IbvwPgliqoW9gtTdfuQcbWmKTF3IVHabkaJOJVyRnSDmI+gOxWGA1Wyqg3BTxC61Ndax5KAdYt3eEUrJA3aBeaqgYfC/LNezixJTzBM/wMwTE/AA48CHngy3z6Zb5/Mt0/m2yfz7ZP5tsF8W42xbbgSVm56pCKr49gnu+QHe3L21lzUyDGMDgV8ydYJRt25S65uHcqicctJGGeQsj5fSUFKRVHuCs/UC/vfbjDExBRTxL2YnlHJFUUFSy6LJimmWk0jtGdfNDfaWiyUDUFbKq5wh17HRV+6TNhiQb71CHaMdcP9pn2kACAHX6blJW7TRj4cR7e2RW58apwE+NEUlkc0OJcJ9qksnrACL5tEbh5jvzwLpjGIITrmMmG7HgVEOrn/LphxKlRngimF6B9caTCE3Xfu7HT3pBwcvH6wi1vAJZDeomCS5kKLptc8D7L/MmGY1pLTu8SAVIsRzh0DGRhp/vMknMT9oBYxRkd5bW2vKgq6hYQaLwDNkkwlOQQROEvYj+gx4f2LGTK2D20lFYT0YJaM40lcEBdjFkfF3BV9ESgS7MiJJHAudmFlhPglMpFBc5N8HnOuFqmd5eqgvNVlc+AtG+Cy9aO9tTWa2LzokzziPNMdk/M3OWvTPECIuqRcZ+M5RXnJwR4nDdsCjSVJrMHu0/UJ8Q6/w6w+hH0E+Rt5kUXhhNgiCddslNmbTmyCmCFTk3gcmqiHcDrNUgwnh5ZJG9S42G0vGoq9tTWzQcBCywdvQQeXHL+diwNKsCJVgS115lo0FyNFOoYly4E0wOa+P2ZOPBN+SLGD0yminONELr5sBRTFV1++TArXYsxshRwkotNigN/GlD5HagEFWYdBjkEk54NBWlQeyhxzlhRlcr3LJOxnaZ4713K3Ly2jCwziPJtN6QQzR5kzU+h1nVWuPCf3OZQOowFGXM7SOJHoLTdWXRDbB9WFdpmo8t+4C7f8xENH3Bm9r8WTUZUrE5RvbTJ55BxvZOXAELH5lmPZOQ0s4YOhvFxa9vKolnFsr8SXLm4Oz1XFpsrxvHWZXMyncu9xj5AeXYNk+HqzohArDcnOMOyLrTmusWLxoiiTSdKuVWpk6zJRoyYdkr05SarYUSkuM472glV/BnSQn18mcR7YJiepl8vVj3SVQ2QvEw34J0V0HGbKXpnHE0Zbnwel3rD6RfQAgn+4xNa4trZ3mVzHoKTnYeUbj2gC/GQ6LPfJkarnwWWC3TJOjPQyKCNvlOa1K6NcyMXOluH+NByHI5wbhaSlpQVRsY71iPOQ69G/ryYF4rvErzuPtkRWqdTgGtojbc0DiE6fFXg+9AqhDBAXRFmHs6/qJsA7dxo0LBla7dTAwyifxpoEkkWKLxMno1aTsicXqrzSDitC2Xer1WP7LB3Q5nTzdrfLhGRc6HFrNk+mQNbtDlqIUYybdjxXrbuvCl7SCXmbiRIaDKIeCWlgsug6SoiQVk7ZqqbRoLqix5ac4G41tmYPvUz8PdTTNOsUgaTsOgo0sSK/TMjqeBPnOOPKZm4MRlzHbRlHe6vdIpyEGeiGu0XY6835H2PaVspjQRsY275jghlWbRFNzlU7JiWAHBV6fxtGRf86yNMJJBohLFzuOrn1uyRKnBCK3FCosqoWj2bxoKoSi04tZMjG7esQ1nteMqyVE6ie8QTaiFiY/Gu9Ky+ivsK9zN3jhQwFulFVNRpv2a18mdCGL8lzovDZmzE2t+/xYCbnTsImBOdEEXoEOWzYBoQlptw6GPmGBURe+WI2iNP7OC/v8GVrGoLxmWC2O1SL/1utN7uZZpVOID2y88E3KcwSs4speqgUv81ef7SIXfnjea2HU7f5xwzL2tpXYfgMy+Zxc4z8B98O9hsfUNKXYRQNsGMbiIHLhGwdFc8exYuELBS4DuiFbmBbAV2LzwOuwmQ8uo563AiE7twzOoa5a76CmjMk1RtVCSIz/sog2aIFkD1pkAY3kQEHLxyaHBmEr/6vzSPiRJ7Z8BjTYbbq277iQkFPJZwtk8wQdCYETHzfsOSICURpHkhKrkPM0oPXppiBrSSiiwBvWGUjGQfbOM3SeshVRkcc1rp6SXR4sAqEjknGaRQV3hjhXRkn7883ZvqI40ZNs7AF0Ggm9sIqFbRl+j2Vk72xdvazaDg2PMrwjtCFjfpW4wTlbnQUvc4yZXIjwR6u1z/TcIN1J+y0oaT0AuQFSbQ4KjAsGiXoioRLyyxe6pwgCajiDDnC4XiM5ZJfJl4woPTB2N9KhE17fFVn+T6QMrp7wYUB/4/9rrWlQNVAncArLA9111CxvDweWqpZXF6ZBOn/0CLpZa+82jOiEMLnGnh+DiDAnsiyVWWgEAR/A9vvQPlbBH8J7qwwVaTLedT6YRRtvtre3H016PU3N4dL+a/VMMBkCItCrmBXIZayIg3QtCwvVGufZunI5XZ2x3IB1QAPGyX88z/ZFK1jSJZo/XI3M0aFuaCWoKCRzqCBucDMCX440S93sG6kUjwQk2GjHsffo2z+vxelwY3HLWnEEndbftvh3pYNJ0cESEhukHXd7fvXFNr641Ag4lwIMK+iQUwZp7Wx4mWx1+SuI3kpMDlkSwRJuMe/8Qai7wRq5Lv9nVg7CR4rrMMOIapxfh3lEkLEWfIm1PT+MQr7DfFjnuHEW8NKBGGhDMgrSE2QLcDBYigFh0roH9bMD4m0FovPYJrGbCVkjgqqoKJRsNHe9djJk2PJXRynNzAkWNtkuQTLd4qdgrFz1PIgIV5uFLHHBHJZRX80IqQBot7YaIxkNT2xHHVUur7XyrgbyVJ1utWYPB3N3bvdePKmZ1o1CVJZFTuHHxrSHhelXgjFivgbHB+suD2jgUJEyoWlekExUezmPtcmaTFXJBBgcnCYKkFqNzBL1NHjWs3XqTZdp9QI4cqLBZDmrA6N0u33U6FAZcuTy/yMq7P2RLD5pGgx4Lg7jHFAlCP3JbKwNxcFjciVlKzc009nU7rltaPkOkz6eK5kbGc6muEw7scm7u2fbctB4v44GlxJwMIyjVZBfkchgXqQHPN1oz40twbDSa9DbkzcVAJAyrq/Rz1plMvCBlf2TXFM72pYXPk+T110a285k6/GZ7qMxlWrOLNPjot4wtfBWRGPyfZl8lHcptKYXsfTKVKwleR5yeh9g88n7wdHt/1xO7gIbxtGVcK59XGNU7Fxgbc+ZbbXOCz3xzQOfsXHNM6GOGIPcCLna9o6MWQNd8fbio3LyZAyImYaQw2h5IW6wCZpot+EIry9yuSWcu9MDNITw9uA0JJKZOemURgyzNk0E9klo46hH+fQ1vwakV7D+VVYFGH/mk4mX1/4AYTEF4aQ2MEKUgiawNZsGbXQqghaKasSIb2ofzUzIQvZ2h1pZjgJ7Do0+5RTAYoBsgHIv9IsgLEr359O295QuDzGf9ZAWLgqpFX9Kd3WfWdhn58uyk8X5UdflNlO40EHC9QwC0j6PcoGs8iVkKWmfnN7s/9yM3yz1Xs13NoK75z6A2fardVPt1+MjHMHLlw+zD3kESaFS3wpjfY4MHXu6VnE15G1tm6a9G2E7vE/GyeKRnDWo2SwB50GndmEOoQCzDH8jPqPo1D6zwcUw0+Gt1ePyAOswDai8vC2fBC5x949TzsDgN2gDTSdfY6m0nTqMbkBRuqB2tQF9XyxKlWXGrlQi/Ln7kEtWqw/LWzREqrTLImbQX4r56G27HMS14NyERSrKgJJrMifXsx4WQ3+HiWDNLt6GAgrv4zzz5gkahPh/MS0+qx33CpnHHW+VN475dKJqeJB6dd+6rWeY1mUz8aFz0KKcz4MCBVB/UHWr2Nu276PzY+JobueJMXVV1TOiNOKeulg3g5qMqnLxhiraZJqIzYYxzTj4kuohUb/5r7iKWpV681gFl0N2Ggios6WFPOFYi3sd07/u9uAI9hPKz6WwaJ88bIpp3RJtsYdOUmtlSe6DTFPjsiUDc+V9u+tnJx9Wd/Y2HSHYG9la2N7Y31za317szJUeysfvh66Pdv7deVbwgDs/mAh3z3/NkMdF0enWkkJzIMhJXxAL9o/plncR22bG+2NjQ2M3yxMiriY428rf/zmUAefcLWQZGNS9gVJXT3I3aEifv0H8T19iOakRK3s/fobQOjfhnnct3/5zZrbSGPZ2thkFGn43wvmrTKhnC/+nnM+GoOo13nWGxFE+2NA7lPkqXSmy/lECQFIxMl1hExeXGXhAe2+DfNIHrSlCKp71xj57C+UT2zc4BpwQJYPQi6hAEyFq/B0gArNWg1MwFNi6pKJqXaFLTqzeXXXZ6TCdmhYpR2TKAG/mOB5QgYxcdy+8YPBhf2Funy+f6MEF5Sn7okwQAsdMW6ri9wu71agi7rlbgFsOfs24yNVswN4LbeNm53T9VIBvDWl81Iy9uTQ0KPBAzHuM25QwcCnfdZwvGRtSWLlFNbKS6waMWhDdSF4hlcLNFlxOUtVLnqofVrhQ0v2WauAeCYi7K9LsrHWgAa4S70G1PW+7HGym7MuhbiTXhZHQ29qVZ1sqtDu8g+4bJxxTn46JBmzl3Ful9VN5Wx5QA3neBNXBNZE/QpK6vpDLjOlVb/46iKj+AMuaYwtgmsZK/318gF5kEVzZW9JDxtH87rwQpnVuKirAoUlC9J5SVyA0W0/YiUVjyPTxi5XL69dJsf05hFj9y6+NRAv9+hFc9OD5dr+oHtp3bQztK1/zaM2lMWZrzmUXmtmIMyDVbukgjWzoQPqTPv48FvrPdvrj9KD2xv8pXSvfQibxDvNkEiIr5sve3tIAOObEYw+GSeFSlwnHGmBX0sFJ7h8a/GBcAeumsyHg7fj/VbRmRlYuE7bUPhtdlUsUiL0KnEn/fECVBxjXihMCkoTcBwDey24QvNBYu8nd2o30l7nRrHIoagDU3Ymcj486eesoYV+VIlk8NYDeT+FED06hEhsAlfhYABz3t3a61nEkeieEkvJ7ftcBEczUCaK1HdhB6ai/MHhv1m3CnxUw4oObTwzw3g85hhRRBBERfB/ANuYR0pm2aIqtu5fxb7FQQvdnol9apaFcj/pNyheTvE7Fah0OpPhxK4B/ANNTPzdrt0Rgv+hxXv+pHtV13HdNC5wFZqwigQLRN+Ihx6KqLCc4ffnglM/S4ps7i61/XcrrZX9jyutlcO/4V8dfMDKsf8zPk7w8Vd8HOPjEz5O8fEVH5/xcYEPvPsW7759jw8U8PYtPn7BxxE+6JGf8IEC3uK1t6jjLYp/u48PFPr2Cz5Q0Qn9eoYPVP4WLX2LBh3gkQ+o6ABFHeDdD6joAI9coPID9OgA7x78Jz4O8IHyPtAbKO+AnvuAD9T2Hh8H6NEBmnFA5aHNB6jyEM8dovWHKOAQRR2h0CMU1UGDjtGPI5RyhP528O4RevkO777DG+9QwDuU9w7PHaO559RmfByjH8co/hgFHOLjGL08xhvH9Aa6dYyGH5/jA809Rh3HaMYx+nuM1h+j9e/xw3uU9wUlv8ev79GW93jtBLN1gr+doLwTGnF04QT1nuC1E9R2glJ+wtefUOVP+PUnGkl08AO+fkD7PuDXDyjlA1rwAQ36iHo/YnA+Qhg+osqPeOQj2vcRr31E8R/RoFMUeorXTlHAKR45xbunaMYpnjvFaJyikaco5RSv/UI/YJLfoZGn6MwpZuYUfTtF+05R7ynacoo2n+K5M3w9QylnaPgZ6jjDa2d45AxNO8O7Z2jQGSo6wxydYvxO6Q0092cUdY6/naPN56joHCWf47VzdOEcpZyj4edo0DkqOkebz1H5X/HwJxT1CXV8QimfaLnguQ5e+4DXPlKPSF5oQvH1K2rr4GsH5XVQVAcPf6If8EiHSiERxQh10NIO+tbBfHRQ799I6ugNfBzRHNFzGMkOGtmB2HbQqgM0qINuXaClF/jhAgN2gR8uUNsFartAARco/gJNu0CrLtDSC7TqArN6gZI/4+HPaME+STta9Rkt+IyHP6Oizyj+CwbnCx75gqK+4LUv6MdXDMkRKv8Fv/4Nr/2N9qb/rFMU6oH4sIfyztgKfgWh2fbmq1frm8H+eHodrm+RfvPb6nVRTPO9Fy+ipH0Tf4unyFRpp9noBb69OOn8fMWvXYX82vN28FV8ARbgWOkNTTokVxyzKlfRY95svHq98/LVcLizu/n6zdYuAZSkQFtq1MW9A7Fy+aR3OTJsFWY7ykC1NrsxvSlwncaQp018XkPfwfq2Hiwt0QUcdVs0isfStTTDstyVvfXEA/OvwwNTw6rpSUXNiz+LrMGlURORVDLNmOxUsZ0a+hefVsbSw8y9AO528NmmV2ur2v+QG9kfpGYDv2tu0HCNOupljzHUmF7kDJB1nJTLZncjreJn5eX1rOyDjLOg0flWIayJsKDpjuJIkYSC5AGkgzwECScHrz5aJDgyK53ECElmnT+dh2NWy9MkWmqXYGgv1xZtw9HKma1iVQ86AkQIieiyDyH7VgkxhTIdjeMRpVJjvqR1QRYh1T4XaC0pZf/skC+GQhOkEcPs0qzE8dNlIflmkp2F7ldIZU1ELCDXVPSyYBAhhlYRpeACvDr//Ong/X7n6OrT0df9T4fdoB9OFW5hVaK9xnNCZGEO35Z/aYlCAIxT8gJhGRl/N+e9kTR0mHMMIVbjPOoGq4gXwKxpQB1EIouCrgxQV6Lmn0PkMTu5DlltKG8AqDqkuIXl7scuDZqAtQvU+d1brrIDmpW6TnB8dhKlpGC1H06mYTxKgpPDFge3hRMhLwacyfN28C7N0H5r49RSzNTIxcvkrNviTZd5DFzYOXc9FBV2A4vxXlooNdwBk6gIsa88JsXZDFg6DWG5+hbNX/ARMA3jjObu7kFwYMjJc3yLiBGOAuSIo94Yic+99BYbKWHegQpwlkdIsaRLOkVBQLTsxJnMBqBvmBwJO215K8ij0YRVl0HEkJThbEDYCDIRefUE0r3DOUM+yg7ksLSTj2oBH5k5GXQ8CH2mqA9blz1Dav73xXvHlGEJltkoEKcjAubuAHR237H4zTQu3ATW1t4DlqYIbtLsW87Jy5vtQEcB+1xudoC23z/kLWlYr2EPITxHA4ytUTcWS44idpK5MJY7dIip+LXNCUzojSdDTkmwBOeLB2upLbRFheTzpH+dpQlgUGSM/572giHRk9goIm9LSwhbtHu+f3LY5WhbRn9kf+5NBVASuDm1NCfsovVwWoHtmUFEVnEUIsQqJVQrnrqMnPocrZo/19Th8tlDGLka0ioTfK7r2AIAxYSiQbgna2u0UmnJTuP+N+F7Jx1BRQiJywBr8NK0aUaATEmzsK6zUEKPyFMzoTnS5l08SDCwi53Z2XNom85mwGzhnHc1ThPOTxuGTc45uqnsVLmsjNNwEAay5J+r2x1YlMoXH3AIhJ+h8E9mdP2Y9hWRkpPMrO0SXeKVbgyzAw5fpoFvB/+KBtu7Ov1wc+2FgBJEy9f2ZMV9suI+WXGfrLhPVtx7WHEPI1hSBXv9yYy7nBm3tTKMs7xoTBPw4vKrjls5xbKoH09jut6gNAp/Exb2H1g2CrNFE+vGwiAafuJu73OlInpR9Q6mi2hi9PEYapYo2mXOWcKKrl1wJskdVDWzawN/qyYKO2Z3wxPwIEI2UlOv07GCWSoHhCirJnG/LXincW5RECCADHpvMBTp9u8UY2goNJ/w/Di/TKQEvtq5lSwOPG3YIU74tof72WKGKjNSQZQDpgLQJj4dU5TxrW3fPHly6HBOzfqxUk7xnbNUST/NlAzGdryUYOMEz5DNhwFnJUjoOh5dj3HLUmsb3YpQNGcHfQecgnfhqqmSIQMrZiOB6ADwttx4XRVziGi/ldYK/zyOlorDeflyd/j6ze6r/u5Of2NXKH1KU8NhMbneTUu4MwinoU7R2JCR3CchMmCJlg4jOEpmk72gS01GZqK2uavqfFY8Nhrd4Bb4cuPLCpltBPrCzHcvGsVJbuma5o9oCofhU4OYq6OuTRl2kyTn44vqnZigWUSzXvXn/fHDM+yposH6bJomwSS8jSeziRtMi0VgcC4dhhMzb7gQS/ocNeSKYge/h+OrQTjPa/1WUs3K3varV62VSZzwt83a9DYTGY3igl5U3ABwlySpsg058ZrUljuq393dvat6jmW1jdAB4OJr5RfgIaHJ5xtS7FfS9xZjnImvBTMSxmOcGTdR9I3+AW/L1SRNimv6av/1X7MwKwCMqQ+FSULgoyutlXkU8g8U/r/U4h6+HmxvvX7TizZ2tzbfDDfqsaewV5P4iZ3Y9McZjbwqD7R/kmQFJFnlTbjDdt+9oGvGAiudBgP/4NHAv6T/+KcZAELQdkcAf+Ah6HLeT5fGoWvcOvNp1CV8AuD4OvxGeNF0qav3en3Qtg17bl2kIzxoV7RhU4qaIVKi5AmRTgplNTXea47C12/CjZevhxsbW4M34Zu+R0nlVtAcHikBiTjYrIgaaEne52BhNTOklrs9pMlLDd1gVfwbz1uV8eOhbgVdZzTw1RkOHb88Go854nbZwIHlE2EzZjdFOEiRhWwuJK2z5qzk/Mrlyt7v9YCb7eVzNdQFsi3BcxOOLnqEzEi8NbDbuJaGMiyiUZotG6W9H+ysD+JRzE4STh6Kh3PVK5wG9gCzIehNhSMYoxR+YpeHlvJChlWm4Fc7fzghxkZ36vBkVr0ph4oC2oOTwG1OS9UEK4oxOxIdYbGKzkptvTU17ieeygdvVSbUcoidTkZ1x7uiHBtoipxozMjP25+B3oIt+ZzVNevltE0UFs0o8IGrXRgsAs5RT5cJ9xaSL9pjDKK520LhzKnRr4fuRKnXbJL24nG0gM9NclS8UpT0DxmSbs102g/Wr9O+kg1zYyQRPCjS6fpsyu44ag0wRIj4KhnM8gJU0xhzaiC9OI0SMtRraXhpEjNewZQcVDzLBEF7lhYRsY3NgTPLXjd1p6TjiOlzeDrKYLNlal0fHNjucnJAMdkIec8MPaZSj4+ydDbVU0Cw+eDAo6P8X5pU2uar3ztxfz9AYA7vehRtz5SE/X40LdhzZ6GJhvFYeT3d6Ba+ursAh7lHk2uuVFk0CjOl+LRrTxg8hfjPQuuRCSW9Scj9ozcql4++EQKBVX+Cb/YawHc8O5QeMndWog3zmUNju/b4FuokBFkMPuNZCHmw+FxsB5+hRjkIxvmsh8VEYlIIBwZFEzG9mwGicofAx4rCzTMeC0RWLV7BY/E09xnWidpBQgHvt1ElHbFYAqUCZZhM5ZLkvMgn+SOkJ7D05lG9mJC/HqFTfnmA9gxz5GuHNC+lbrVLA8tgYE0j+/BFRT+Rl3yM+ZgzJ4mBHlPINNhQMj8OcfU/9qaD4e9/n0aj36fJ6PdB2sd/t7//fTr6/Xac47/b34vbggMSn5jn65nnr3hekC1+BeZyGN/uo+RO4uRKjAkl3ufaS/PLRbdWnyZYnrM2PbIiwIcKPM50AG2BbtYtAdwXylYsMy9ezixGi/O2veG8KRAeLeGYlEcYmcu9HibRbRHQnS64sT7UPrGesZtfIyAYG8GJqpL6lNfaYdjh6x0oMB3WSGqqJXU256tQ3SnzaAsRAlKN7Mj0a9EWiF0DQRtmg30zzwc6zVVl1DlRhCtP1Eo2lVm9MJuNRZ76acIdVz5fngeiY5tEUbFwRi6IFCgv4ulsLLtfSEGqvN2NBd1NUaPd7D5ChFb0Z4PHZ8lCsTOmUx7+cDBwyT7rAIyCtxywkYUjPWq6Teuj26JhGSkA6zS94R0VY7RezJKIVcES/irxFxfILR+BlSqMxylTF5kaZFhpx0ZEGS1qKsrchGB1pTAzRlUxqqyAhmRx/k2YD7jqFEEzmvK3dsSiDvIE1lcRuMIkN8RO9z0y0Uk0mbjZZRQFPCBgkETIIKdZNIlnE4eYiApj+h0sIB0qYY1GTLEcQq62S4mbMCyvF7BT98FFVMgyJD38y0lnPziHaCSziZymHseEtWXbAeMASO6PsoyZaOpU1HRVNtvBp2gSkY2ssFQypDnlkdsNUIAVw9l4PG8HnSKLv5n7KnW6F45pBtXKpxPUkimJi3ik8MnJoIIsrKo8pW7zXOFagYm6WCiKipKbuycCjTefPy69JC9Y3A3w23UqUUGMHuzcXOsQnh6rT71TAh2D8Pw5G5eTiAFGVQsl9SO1OShyJDwtiWedAtHTEmEZJc9Xo0wYZaNuB2xP12nj6lpGA5tUNS/eRasUqT4Mci6ryFwQxBzRrYVFdeTCgTb15/ZHDKxRj83YlTqO7xSrZ+b9HKNZYojNIx86zSVjaSZvqt3HZV8zHM6YFK9smn8gAZQBVwleO+hWxY8BdaJwIEFQk2mYzO+BcydvMEZLnNsse0VS2D8/qbWrKVV8L86K62V9NebQ11k4lOTdtyhlUSraQB6k6qBd/fLLL7+sn56uHx6KfutCrku6uUXdGxENqsX5V4zvmDZGtSQpQHn1cBTEB+nz8t726oB77vRy3jLLq04DmcwSS0DqX8U4g7ofxdNCDthyr4dZOBsYnvsydnkuaFhpxscQtunxDTRB95JXQjUg4DDsKWoUKAP6GZ+sNK3FHeYGVm6DHjlonUXZDPniwIw6H6CGXljjsoYdlDB5S6Nihk+Zu2HqnyX2CixWwoW97Zx2WrX3X6/H5cFcMPDYUg01wMIFuYzv/8KVuZND5mxrjgDwzDQy0erPgCF+nhOOzQmTv6EzMwOfaiAzF5UL4bDxAjFFcXPAAGpjhkdJCNkfjyup/qSUKcRkrdHj5HDhmC2MzKmB/Aj/P5Wtxsif+n3bC/Cphbf3x4l19DsaSxtJJFDZ2nX5kS636LUSvYRBfxz3v+lVTMMOageMYEvdBpNE/fkb3avKCF/VxohXDk/HXsoTs2iZP8srz0s/yXsUJnNPWPUsmQ5ci7+Nwal2iyNy6M8uU0pdb38EzhZv8ktgbeFeZMH86NkSMhRuWmx/YZtvDaiZjIrFy2XC1Nl43A7ewjBW6pJKQaUcS06EMvJ4MhsXYRKls3w8r0cC60V0DWXlQCw0PtiXKNQ/FJCNFsOyoGyPGGKNifGG18/lsXBd/9vGWuA7S8bFeu13XUigdBUDY1RIc5ktszmqSp/wwT6NfxRq60KPC0gKEO8USzChewequ9wFvWiYys1kIM20UaZX5rC7B5ZWRTWupFbu01kYrlseXwXW8jTmSP3aJolUG4NMYHXVMKuqTeJDCbma9NxXamCpH+s0szFsDvnX3dGYQ6VObZF1tY62WeJEBw6XfeFh57LxmXQQiEs4Sp0e2jhtsisToYNe1K0ixuwSeVk0JmSEFHtuS0FztY9asb3Rb+0g9SlzGFqpRWiZy9SmiY4ivFFIBKlMqmHY3awpzR8NXJ4tu9I0SyfTYsx5UCNQnoRFdCUg2z+WiaUwTCxdB8S7W9rEHHiCwiUmFZcjdhxy2RSljFN9X20+dpt1rSPGiZ3XmDGmSlYgcn1VATj4EQNCEAGUvMtDwvRuVCG16VkjrMIzkzsogwMvqx2gCzFl8RNiXNIpZR6tcDBQ2ppSrAELptLQOzPmS3DMITLolwmyXqbBNDtyVOiuIUNN0RFp6QJmPU268ZsHazd8Mr5iJ7PRFjT1slKMW7uekGZoLVIVC52mrqO3pQOCEBWpVt1hGkIn2sGZ4YiPGwMsmKWMfAoKqo5goMAdIlUwZYKw5bGXiG37CM+GOAxyw3QvOSX7BxcnX46UBJ43QLp/ejjWSwIvj8NkNBMVyQQfYimESwYS9jdfv3w9ePX6ze7GYFMiuTWQMKria9TyjhJOgDSkzGXh3Q+r5ltPyyrp487NxNKHODdI9dayH690EfVDLGpFQYEaEwJoTEYIEmNOooy4iLKwF/cxKd5Reh//bdnMVtExaoinmDTIIZMyBFOWVcrjofqe1vBLhVMcRLVMQyXO+2YupzKrTyPPUi0rUwP50kK+J+4KfviSLsHJJJ3k9kiH62R8d+flqzc7W4Ph7s72m9c7VdVNM8EKQ8YtYbCGIsknWSV7JIKUdegc5iQzSi0zMC07Gi1vBFqmyy2nny2na4J5UL9L0b/VPUybzNoaUYSvrUmKMi+RGo2QwkJ67EsrgtnUWLTW1rjRWoSJhysf8KqjavEaybsYfv9J4J8E/n9A4OF8+tPEvXPaEWG/gXMrnE7/XIn/pxHpOlnc2d7a3d7eftPr7wwHvc2Qwd5UlTzzTtY/fqv/hfC14mSU10TDEYGzEwnX12gvCiqqK6TibC6poEYfgRARKXH1Pt2CjfsmgnVVMKG+m1hpY+CY++xUhEbSCp7JVD1rBc8wPfg/rwT8S+fnmYGlaraK2HgK8p0Jkl1U6bm9/ZuIEvaX1ZggiusMsRgan19Hcmz5oe4d7ufHoGnCgcXIYd1R0MS9MO2SC8/cZLsaOdtteY/m6SwjFCCeAL6IjjXmfOAVYcR5QRl0g2PDngi7uXRJPoGQ5miNk3CAkM8gFBgeWA94+ATwazlHTdWlhXyOUaKabb0UqyerijhvHMXiMMUYlMAOA9kaxSlW59TU+Dp47rOZBoc3o/mVFu10Oo6AheNkSJhyKonA5qercpIVbLgRLrhL3XR2dvsvN16/2t7c2u6/GbyOvJuOLaqSk++EB+4FpulydzDvYSO0hfAQqZli2dzsAzVX2QEizyHi2mZ9HI9N8KmHggq3bE1HST+bg4I1qM4FIcyV6xHKqCVklhosj5st7+jg6vvms+ekh/gAdg3F2AZ6zYJ+GY8SMrLdXUhHHy2nUmhZ11E4uCvrrEl0+V09brC0Im6zA8JUvQ9Or6MJiAPOZ71x3P8Q1WIdlYZC3wmm9BIg+ziy1tRH8qYlvg/z6yWwaonIdlh2hNsqKKvR7ignS/jkhZXJQyEz+1YFHMFvcLkyF2kYY34ezt/TiHeYi64aXXuAwQBe2PQ67sv0VCoV4ZZfXWlqGRmvqfrcLrPG+ptFVr6fGtr1+0ubH5zVKF/itT1bKg5AsY8pDEBX6pc4D4PNre0dXq1JVAAKcAmHOUJ/5WmvMC5Ht+4lCiGtQEugiG0UUZ5Hp6O2lZY4smECeQoap/DcH2UnF6GyGoxY352wYTfzJReGs6eXhaepFfVdxgHU2NmqcPFhIxedATs+7FPwhAfnYa7ZZupaoZdYgJmFEHGUuS0GJj+ok5N0YDTSNvH1Ugaa09tgNdI19LwVeB1Xia+QN9oxqMKv6BFcMzgnVuFwQEAbluFxmo5+iMIyooKW1li2d3eGr3ai4cb2yzeDnd5rT2NxylqsstjWi85i34TS4pTzSK2lZpgITKZZewmn8ZeKYuHCmDfMAmzyJRVji7YZW+BpnHiQ7U2loqgJni0XuPG8snXfV8uqGRDdv+t0rOX2yNIe5e2WB/ufDkXLuhfLYflwsT+SR2KYPrDXfc4CtrtohWc1zAZnjztiTjr73GWUJQnmd5f1EfFvOwElylMMK96u4jc5Rba8xjpbCveX9pRh2qydlIeCAElsWOAjZMst5jGSdeGW48nV+f4vp0dnF1fH+xdHX/d/kSMdjz9Ek+cXy2PNf62e4GZ4L0qj1TjUF+XxEIwh05D6BpSY5yD1NVO0oIHn5b1iWT2DjrTKJFaIw+1mWd3o6naqhjYuVAqa9nBfKXCeatAK3FP94bqB7WVJHTg0s1oZt6XUAGfN3kMPIMHykRMcRYDD9GdFuk5K6330AhbIZVSC3Veb0av+MHzzZuP17s7mG08l0CW0SBvg+/nqPtp5iHY+F62AXoZCIKvjQbqAiBebnGpGa9WOz/PqLrXchnLuaatpFhx8+WIJV2wFftR1w37jyASNjF0iTRtLuRYT/3vuoAJMG9voSj+tJcqX86RYkueWEmRt9L3kuBNO8lky+gEKbc4lLa/Rbkdbr3pvXof97WH4qr/lia9b2GIhdjog0uu8Cxl2i3q8JDvVPVRo7SlYN/hUyBIiKu8uFNLG8kty5z7nb+L89NLb9TJiaht+h6AuLXmMM7+U0PXCnXA47L/efB1tDYfbA0/opJzF8vaVHtJ4EX4FYiYvP07C8utwKjTzpf7+u9REFX+WfBSKxAMo4MQA13LYelfabEeYm/1FH+pC0bhMpAwFJEGSKmkDxiXalc5oOKBYCYVfgTAXk+IySYc2z942vFuF8uQXl4Sv4nzcdABCiaG6V+B37XJvpJMd3iO7nD3fi4t2oMw/HFPXNJYOHqlSSNhYVGQUSDcdKgpmEaD4xL8IxQbHXgOcGDndknWO+L90/F2cW1l6w44VAnYaqGMZAeF50FWOgjY1frXdbj/vGvThuKguKncQnYVlBqVhN+DfXS1FeaGCU2AIcAzXXIX6ikc+55ipcv/A0JCLe9MZHxkxMxPLbAjcLnczcH6sCLJzE3eJ4paNwlpe8vLxbMTndMljwLWWuNp+XQ/X/3t//W8b67tXv/2FgFCWz8Byk6/KtfyvpU7+YdTGzWkzTVCbkinBHmLx4rrOeuC0PITVnDOMHCAXsw+WbDaGKlryApMAWOQ7W5uv6bWSn3QbEJ/RsqmekelSk8t7hcu7updhxwkdkA1HYzV7kfAw+fhfroV6GCEFj0NhOocfJGSeX7Vudc0SQ/B6nDAKnuQg+1n+krdGEdYuVzg82gYO0HfXUQuOJIieIrPTbJpiM3KBseKEcuSikJMwv8c5IaFMwiTx8z1NWz6fMB1cTK477vQ0ZAmwGBfJYB0huixUcb9+vBfin9GO8n1EKAbSJZTTIGCmnnvtbTdRb/qghuHF+7Qs/14L7/RjB6B0cKDOFnfROR5O+horVK3t86eP+bI9mo6ulhjuRvh0lHx+HIxTylEpriW4hv+AHpM6MCtq4c290fzVDifRkP12T5iIrpK6aWpX8JkgvhB7gsbESdD5ciwgAxTJQuEvhtKMcUuCr1HvPIgniOFG6IighLWCkH9R+3h9iptJbhCOyzbmHShynOXC4Cr49ZBZn2bSQhO+LRAIFFXXINN3jMKpggGYYeCUXOg5vch2N4qpwt5cGsHYRk7vNViIcpRBhub0eN1mcZjEIBpcQPKtxnZU/citQUqMUwrUZl7JiW6LgouyMKfsDzRBAHrOz47RhJ/Oj445uE1bQhSdmYS3o+XCztCLlkCQk7RB6/uV9UKyskq74ThkhLk4CY7OSD72Pz0v48m8fFler9yAVsO6PT05xNKtWbkOCqamzE3iAS1glxySL0nT0QQxjSYkEAfjOL2p77eFROZJrT9+CT2mRvVxNgstwMd1uXvl1m5RDnOUCTK1+I5+2pQEw3m55o8lXX7iRv4n4kZu5qQkyuE4Msn6JTLjSpiriHNwLnl9tO0Y0DwT/mdJkBXWy1C1cXFCYPmdkLuioCyJFcrhOJnOCpN1XHZr8E2gxbe0svrOSnRV9RWNTBUmuXhVnTOeTyZ/l2afdCPAuN4Ba5UQDvLcjfEKBbujDJY0iDJrWmMjipA8d7n77eAIzATiC1FqALd4jxBFdOIwQA7auHIdcC8+cGCSqqOWja67V3Wdg0P/XkmhrrlwPLNiY3IxXVRF924KvId0OOSgdUFZxCkQfo+uyK+6lJVuK4xebQxf726+2d18E/nBDraG0n4qm7Yxwh8QcGHQlRe6LiCigNqloBtk2U8TIQrFWDP8M6WRxQpArcU56JE1JZKC42lDg2gwYwxJxUOxyN3NoNwMoe2A6Dt+BkHD1gaZse0iixGQXDch3471vDCInY5nwbISE7L2zxdHhFTodc9BwNwLiP21azDZ2XrWdYB6ujZvNffRRgw0Exq+JVrh+bFgpWLrArAaroluC01OJbcA7+7ntAwGURANh1Ffk43RORve7AhwM4pOFJgd0/apHSPnhPHXUaa+Pk773zCBCj6lF1pdNrTSB9E4KngR2qXPcdNC3AJA3jGF2RfSaFQExu8mT1Jemhx3qitzQ0QtbBlRPfe/oyw1g0I8pP0SIzXNB93NpLDg9ORwVTas51yQTJA/OwDXS5jyqbns7XZwPo7CnHIQIssoUfO4cH9jcqHeOSDWuihxPyCOW+Gb0vB9otn9Gcs3tKPKeRUtNtXSPBL4WIi77nWafnM3ciNDCoYn26ATC6tvff70sX2ZvBTKkKLEs6uwsc48teiYgODEhNTh4KbmgsJtUXiQsV3K1XZ0wet4MEAAeJz0edA5azhHkXxvMbirhCGi1wwD0EczzLJpEpDTRCFLnY1yPfg5iYKfh0PN8DE7AmX4pAF5i8XZZiRyPehgWg8oegZqJnfEQ7j8EZn651m0Pk0Jx7YMHdkHYnmgyWElXIZgFezPtNs/bwcnE+g2Ua6bJEHnkQLUH3P6SzyBWhcW4BWYpuOxBfry6mQ+aAv+cDJKlNmZ8YbyYPV8/+Lg/YvzzxfPg3VpJLDFvHPCw7RISNr5fV6f/BYnYeU+/ZfPIu8AWZBjaHUS3gabBGDBrIDTLMWJZI7uJayuerTymw6FgCxFwzHQmKLkJZ4w2J9u+ob5oi67xIGk+AHYpH/9xFcOB5SUoCsejkqqJUpfPagsSVTPWw6yIbCSyeSgPrfcgpbajKxazPiS2BHwAag3Si3ywCNItVHsDnaGldFEug7QSaHQpfVX3HuY+hputjVwIJZP3eRaEd4RNV1gGZztVzZNUgT4jKBkzVneDrqaTiUJpeDE7EdXjAsm+oqA8JK6YrSDKfDXLD6A0Y1RXZgH/zWLQFxilJt6MN1GuI0H2RTtPatz+IGwJoh8kczv3HBAqJJA0pOFYmwo50w5XY8dvnDM6VW+enWp2ib/pelMnpgK6pkKlkHCMvJrh/jclZw/KmnmH8WaxwqQ6JJGFSJ4EAO0KNqvCkMZCtYFToKzP0H2VThOkxHdDbolo0PXK53RoPjuBF2oXQel8oQ/+gj80SdczT8NV/Pe7mwLp2bWfeZvzIMoIcaBwqGuc/38Z+BqKK4jUEQw3UYa5cmzwoCsQk3hG74D45coqlrYL0zV7UPG1ZqmxNyFRGm7GSXiVMoZ0Q1iPoLuVBgOVMmqNgQ/QehSX2sdSwLWLd7hFa2QNGgXmKsGHgrzz3o5syQ9wTD9D8AwPQEPPAp44Ml8+2S+fTLfPplvn8y3T+bbBvNtNca24UpYuemRiqyOY5/skh/sydlbc1EjxzA6FPAlWycYdecuubp1KIvGLSdhnEHK+nwlBSkVRbkrPFMv7H+7wRATU0wR92J6RiVXFBUsuSyapJhqNY3Qnn3R3GhrsVA2BG2puMIdeh0XfekyYYsF+dYj2DHWDfeb9pECgBx8mZaXuE0b+XAc3doWufGpcRLgR1NYHtHgXCbYp7J4wgq8bBK5eYz98iyYxiCG6JjLhO16FBDp5P67YMapUJ0JphSif3ClwRB237mz092TcnDw+sEubgGXQHqLgkmaCy2aXvM8yP7LhGFaS07vEgNSLUY4dwxkYKT5z5NwEveDWsQYHeW1tb2qKOgWEmq8ADRLMpXkEETgLGE/oseE9y9myNg+tJVUENKDWTKOJ3FBXIxZHBVzV/RFoEiwIyeSwLnYhZUR4pfIRAbNTfJ5zLlapHaWq4PyVpfNgbdsgMvWj/bW1mhi86JP8ojzTHdMzt/krE3zACHqknKdjecU5SUHe5w0bAs0liSxBrtP1yfEO/wOs/oQ9hHkb+RFFoUTYoskXLNRZm86sQlihkxN4nFooh7C6TRLMZwcWiZtUONit71oKPbW1swGAQstH7wFHVxy/HYuDijBilQFttSZa9FcjBTpGJYsB9IAm/v+mDnxTPghxQ5Op4hyjhO5+LIVUBRfffkyKVyLMbMVcpCITosBfhtT+hypBRRkHQY5BpGcDwZpUXkoc8xZUpTJ9S6TsJ+lee5cy92+tIwuMIjzbDalE8wcZc5Modd1VrnynNznUDqMBhhxOUvjRKK33Fh1QWwfVBfaZaLKf+Mu3PITDx1xZ/S+Fk9GVa5MUL61yeSRc7yRlQNDxOZbjmXnNLCED4bycmnZy6NaxrG9El+6uDk8VxWbKsfz1mVyMZ/Kvcc9Qnp0DZLh682KQqw0JDvDsC+25rjGisWLokwmSbtWqZGty0SNmnRI9uYkqWJHpbjMONoLVv0Z0EF+fpnEeWCbnKReLlc/0lUOkb1MNOCfFNFxmCl7ZR5PGG19HpR6w+oX0QMI/uESW+Pa2t5lch2Dkp6HlW88ognwk+mw3CdHqp4Hlwl2yzgx0sugjLxRmteujHIhFztbhvvTcByOcG4UkpaWFkTFOtYjzkOuR/++mhSI7xK/7jzaElmlUoNraI+0NQ8gOn1W4PnQK4QyQFwQZR3OvqqbAO/cadCwZGi1UwMPo3waaxJIFim+TJyMWk3Knlyo8ko7rAhl361Wj+2zdECb083b3S4TknGhx63ZPJkCWbc7aCFGMW7a8Vy17r4qeEkn5G0mSmgwiHokpIHJousoIUJaOWWrmkaD6ooeW3KCu9XYmj30MvH3UE/TrFMEkrLrKNDEivwyIavjTZzjjCubuTEYcR23ZRztrXaLcBJmoBvuFmGvN+d/jGlbKY8FbWBs+44JZli1RTQ5V+2YlAByVOj9bRgV/esgTyeQaISwcLnr5NbvkihxQihyQ6HKqlo8msWDqkosOrWQIRu3r0NY73nJsFZOoHrGE2gjYmHyr/WuvIj6Cvcyd48XMhToRlXVaLxlt/JlQhu+JM+JwmdvxtjcvseDmZw7CZsQnBNF6BHksGEbEJaYcutg5BsWEHnli9kgTu/jvLzDl61pCMZngtnuUC3+b7Xe7GaaVTqB9MjOB9+kMEvMLqbooVL8Nnv90SJ25Y/ntR5O3eYfMyxra1+F4TMsm8fNMfIffDvYb3xASV+GUTTAjm0gBi4TsnVUPHsULxKyUOA6oBe6gW0FdC0+D7gKk/HoOupxIxC6c8/oGOau+QpqzpBUb1QliMz4K4NkixZA9qRBGtxEBhy8cGhyZBC++r82j4gTeWbDY0yH2apv+4oLBT2VcLZMMkPQmRAw8X3DkiMmEKV5ICm5DjFLD16bYga2koguArxhlY1kHGzjNEvrIVcZHXFY6+ol0eHBKhA6JhmnUVR4Y4R3ZZy8P9+Y6SOOGzXNwhZAo5nYC6tU0Jbp91RO9sba2c+i4djwKMM7Qhc26luNE5S70VH0OsuUyY0Ee7he/0zDDdadsNOGktILkBck0eKowLBolKArEi4ts3ipc4IkoIoz5AiH4zGWS36ZeMGA0gdjfysRNu3xVZ3l+0DK6O4FFwb8P/a71pYCVQN1Aq+wPNRdQ8Xy8nhoqWZxeWUSpP9Di6SXvfJqz4hCCJ9r4Pk5gAB7IstWlYFCEPwNbL8D5W8R/CW4s8JUkS7nUeuHUbT5antz99Wg19/cHC7lv1bDAJMhLAq5gl2FWMqKNEDTsrxQrX2apSOX29kdywVUAzxslPDP/2RTtI4hWaL1y93MGBXmglqCgkY6gwbmAjMn+OFEv9zBupFK8UBMho16HH+Psvn/XpQGNx63pBFL3G35bYd7WzacHBEgIblB1nW3719TaOuPQ4GIcyHAvIoGMWWc1saKl8Vek7uO5KXA5JAtESThHv/GG4i+E6iR7/Z3Yu0keKywDjuEqMb5dZRLCBFnyZtQ0/vHKOw3xI95hhNvDSsRhIUyIK8gNUG2AAeLoRQcKqF/WDM/JNJaLD6DaRqzlZA5KqiCikbBRnvXYydPjiV3cZzewJBgbZPlEizfKXYKxs5Ry4OEeLlRxB4TyGUV/dGIkAaIemOjMZLV9MRy1FHp+l4r424kS9XpVmPydDR373bjyZueadUkSGVV7Bx+aEh7XJR6IRQr4m9wfLDi9owGChEpF5bqBcVEsZv7XJukxVyRQIDJwWGqBKndwCxRR49rNV+n2nSdUiOEKy8WQJqzOjRKt99PhQKVLU8u8zOuztoTweaTosWA4+4wxgFRjtyXyMLeXBQ0IldSsnJPP51N6ZbXjpLrMOnjuZKxnelohsO4H5u4t3+2LQeJ++NocCUBC8s0WgX5HYUE6kFyzNeN+tDcGgwnvQ65MXFTCQAp6/4e9aRRLgsbXNk3xTG9q2Fx5fs8ddGtveVMvhqf6TIaV63izD45LuIJXwdnRTwm25fJR3GbSmN6HU+nSMFWkuclo/cNPp+8Hxzd9sft4CK8bRhVCefWxzVOxcYF3vqU2V7jsNwf0zj4FR/TOBviiD3AiZyvaevEkDXcHW8rNi4nQ8qImGkMNYSSF+oCm6SJfhOK8PYqk1vKvTMxSE8MbwNCSyqRnZtGYcgwZ9NMZJeMOoZ+nENb82tEeg3nV2FRhP1rOpl8feEHEBJfGEJiBytIIWgCW7Nl1EKrImilrEqE9KL+1cyELGRrd6SZ4SSw69DsU04FKAbIBiD/SrMAxq58fzpte0Ph8hj/WQNh4aqQVvWndFv3nYV9frooP12UH31RZjuNBx0sUMMsIOn3KBvMIldClpr6ze3N/svN8M1W79Vwayu8c+oPnGm3Vj/dfjEyzh24cPkw95BHmBQu8aU02uPA1LmnZxFfR9baumnStxG6x/9snCgawVmPksEedBp0ZhPqEAowx/Az6j+OQuk/H1AMPxneXj0iD7AC24jKw9vyQeQee/c87QwAdoM20HT2OZpK06nH5AYYqQdqUxfU88WqVF1q5EItyp+7B7Vosf60sEVLqE6zJG4G+a2ch9qyz0lcD8pFUKyqCCSxIn96MeNlNfh7lAzS7OphIKz8Ms4/Y5KoTYTzE9Pqs95xq5xx1PlSee+USyemigelX/up13qOZVE+Gxc+CynO+TAgVAT1B1m/jrlt+z42PyaG7nqSFFdfUTkjTivqpYN5O6jJpC4bY6ymSaqN2GAc04yLL6EWGv2b+4qnqFWtN4NZdDVgo4mIOltSzBeKtbDfOf3vbgOOYD+t+FgGi/LFy6ac0iXZGnfkJK1aeU64jZjZT2ot+qOakot1srOxwbjI8CgXzMRkghNf/D3nDCuGBV9ZSOzpZ47TYigvv6Zs4hqUPvfSnRuDUtunDH6H34/g5MmXgJCvbdKf1XzK2g3ySV6i35061BBdP2W2a3HRSovAaY1LixwhkKJivlz08P0GjO1k1Y5W6XLoOZdUBTeQuE81ncK6NYo8WG8R0AOCWtH21AnoH60VvX6vTNOc1UTsFSsvei9kKb74vmn+SeslQ0wWySjtnyvXRTHN9168yMNk0Etv2/Bzt5OIgd9ypHPFxZx4cLjfiMX5EM1Ju3anfxqDpRNbAApV3kgWkhVVxXUrqHKLgawT6jvMa27ypbGWTrNoGN8Glyv703j9QzS/pBX6Nszjfrkt6BL6So0mYoMciZF/tFawZMWv8jYdzI9uQ2zdzqtlX1RlS9tbOTn7sr6xsenuinsrWxvbG+ubW+vbm5Xdc2/lw9dDd7Pb+3XlW8KcDP7+iUnJv81Qx8XRqVZSwvdhlBkf449UimkW91Hb5kZ7Y2MDW+osTIq4mONvK3/85lCUqaRRBtH++YlD6rm3stneaG9UKjaPItQ4zYtJSHufzC9f2yRNR+S3XISzj9Y+f5n827/9W3AeZZM4zzW0+Hea20DIDX+35AXOc8Hvl8nv6+vr9B9e+VVk9LfVFwNEcGLZ5i9GDIS6nhchEGFf+NL24t/Cabz+LZqv4+/Pg98p/X/q1LIaDiZxIqAzzwOuycrf/SojkTRVdXGfCgcDR08g8cu7ULPMr9G6+g5NEl03+Iv9XQayi7ZdJv83WFs71kQH0w9EY9AL2IFFJLtWUUTaWRH8WjIF+33TuvUf63Kgv3h+aYjJ9gis88V0HMbEkSS6Gm9Pv6707MKC7G16X7EwrrGd7f268o9/IIDjczb+4w/8mdBmVvZ+/a21Qvwa5An99TeHovjXf6yAlBd0iyRs68idRR1AEhECa52F2/Wbm5t16Ivrs2yM6M8B3SG1iH3CIG54mU5/7JFmC4ZGAe0rHRBb8YQXv1Nyy/3CzQ4ru+g32kXlH44qESZzpyXlDZUbzHTEDa/84x+8R//xh3mef2p8w+zi/DRm8rc//vjj/wH8DO8a +api: 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 sidebar_class_name: "post api-method" info_path: developers/apis/ottu-api custom_edit_url: null diff --git a/docs/developers/apis/create-payment-transaction-checkout.RequestSchema.json b/docs/developers/apis/create-payment-transaction-checkout.RequestSchema.json index 10a3486..81a121b 100644 --- a/docs/developers/apis/create-payment-transaction-checkout.RequestSchema.json +++ b/docs/developers/apis/create-payment-transaction-checkout.RequestSchema.json @@ -1 +1 @@ -{"title":"Body","body":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"description":"An object to save customer registered address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"description":"An object to save address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes the merchant to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. For more information please refer to [Recurring Payments](/developers/cards-and-tokens/recurring-payments/). It is imperative for the merchant to strictly avoid including these parameters when the payment type is labeled as `one_off`. The agreement parameter should be sent exclusively when the payment type is designated as `auto_debit`.\n"},"attachment":{"type":"string","format":"uri","description":"Attachments can be included as an optional feature in email notifications sent to the customer regarding their payment. These attachments will also be available for download on the checkout page. The primary purpose of this field is to provide the customer with additional information or documentation related to their purchase. Attachments should be sent using the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects) encoding type. Ensure that you change the content type to `multipart/form-data` when sending attachments. They cannot be sent using [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) encoding. Allowed file extensions: PDF, JPEG, PNG, DOC, DOCX, JPG, XLS, XLSX, and TXT. The name of the attached file should not exceed 100 characters.\n"},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field used to reference an attachment that has already been uploaded to the server.\n","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows the merchant to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments.\n"},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the `checkout_url`, which is the Ottu Checkout page. Default value is false.\n"},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"When set to true, the Checkout API will include the `sdk_setup_preload_payload` in its response. This payload facilitates immediate UI setup without the need for further API calls. By default, the parameter is set to `false`, and the `sdk_setup_preload_payload` is not included in the API response.\n"},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"An object that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., `created`, `paid`, `refund`, `canceled`, etc.). This field may be used to configure and customize the [notifications](/developers/notifications/) sent to customers and internal recipients throughout the payment process.\n"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short attachment retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `attachment_short_url` will be shorter than attachment response parameter. If not configured, the `attachment_short_url` will be in the same format with `attachment` response parameter. Default value is false. \n"},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short checkout retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `checkout_short_url` will be shorter than `checkout_url` parameter. If not configured, the `checkout_short_url` will be in the format of `https:///b/abc123`. Default value is false. \n"},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"example":{"type":"e_commerce","amount":"10.000","currency_code":"KWD","pg_codes":["knet"]},"title":"CheckoutPOSTRequest"},"examples":{"LoyaltyEnabled(minimal)":{"value":{"type":"e_commerce","amount":"100.000","currency_code":"SAR","customer_id":"CUST-123","customer_phone":"+966500000000","loyalty":{"enabled":true}},"summary":"Mark transaction as rewardable","description":"Minimal payload — set `loyalty.enabled=true`. The customer earns points automatically if the chosen PGMID has a wallet service with reward capability configured (e.g. Qitaf for STC merchants on SAR transactions)."},"LoyaltyWithReference+Metadata":{"value":{"type":"e_commerce","amount":"250.000","currency_code":"SAR","customer_id":"CUST-123","customer_phone":"+966500000000","order_no":"ORDER-2026-9182","loyalty":{"enabled":true,"reference":"LOY-CAMP-SPRING-9182","metadata":{"campaign_id":"spring2026","segment":"vip"}}},"summary":"Loyalty with merchant reference and metadata","description":"Full loyalty payload. `reference` overrides the default (`order_no`) sent to the loyalty provider; `metadata` is forwarded opaquely so merchant-side analytics can correlate rewards back to a campaign."}}},"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"description":"An object to save customer registered address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"description":"An object to save address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes the merchant to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. For more information please refer to [Recurring Payments](/developers/cards-and-tokens/recurring-payments/). It is imperative for the merchant to strictly avoid including these parameters when the payment type is labeled as `one_off`. The agreement parameter should be sent exclusively when the payment type is designated as `auto_debit`.\n"},"attachment":{"type":"string","format":"uri","description":"Attachments can be included as an optional feature in email notifications sent to the customer regarding their payment. These attachments will also be available for download on the checkout page. The primary purpose of this field is to provide the customer with additional information or documentation related to their purchase. Attachments should be sent using the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects) encoding type. Ensure that you change the content type to `multipart/form-data` when sending attachments. They cannot be sent using [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) encoding. Allowed file extensions: PDF, JPEG, PNG, DOC, DOCX, JPG, XLS, XLSX, and TXT. The name of the attached file should not exceed 100 characters.\n"},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field used to reference an attachment that has already been uploaded to the server.\n","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows the merchant to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments.\n"},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the `checkout_url`, which is the Ottu Checkout page. Default value is false.\n"},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"When set to true, the Checkout API will include the `sdk_setup_preload_payload` in its response. This payload facilitates immediate UI setup without the need for further API calls. By default, the parameter is set to `false`, and the `sdk_setup_preload_payload` is not included in the API response.\n"},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"An object that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., `created`, `paid`, `refund`, `canceled`, etc.). This field may be used to configure and customize the [notifications](/developers/notifications/) sent to customers and internal recipients throughout the payment process.\n"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short attachment retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `attachment_short_url` will be shorter than attachment response parameter. If not configured, the `attachment_short_url` will be in the same format with `attachment` response parameter. Default value is false. \n"},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short checkout retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `checkout_short_url` will be shorter than `checkout_url` parameter. If not configured, the `checkout_short_url` will be in the format of `https:///b/abc123`. Default value is false. \n"},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"example":{"type":"e_commerce","amount":"10.000","currency_code":"KWD","pg_codes":["knet"]},"title":"CheckoutPOSTRequest"}},"multipart/form-data":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"description":"An object to save customer registered address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"description":"An object to save address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes the merchant to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. For more information please refer to [Recurring Payments](/developers/cards-and-tokens/recurring-payments/). It is imperative for the merchant to strictly avoid including these parameters when the payment type is labeled as `one_off`. The agreement parameter should be sent exclusively when the payment type is designated as `auto_debit`.\n"},"attachment":{"type":"string","format":"uri","description":"Attachments can be included as an optional feature in email notifications sent to the customer regarding their payment. These attachments will also be available for download on the checkout page. The primary purpose of this field is to provide the customer with additional information or documentation related to their purchase. Attachments should be sent using the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects) encoding type. Ensure that you change the content type to `multipart/form-data` when sending attachments. They cannot be sent using [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) encoding. Allowed file extensions: PDF, JPEG, PNG, DOC, DOCX, JPG, XLS, XLSX, and TXT. The name of the attached file should not exceed 100 characters.\n"},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field used to reference an attachment that has already been uploaded to the server.\n","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows the merchant to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments.\n"},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the `checkout_url`, which is the Ottu Checkout page. Default value is false.\n"},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"When set to true, the Checkout API will include the `sdk_setup_preload_payload` in its response. This payload facilitates immediate UI setup without the need for further API calls. By default, the parameter is set to `false`, and the `sdk_setup_preload_payload` is not included in the API response.\n"},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"An object that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., `created`, `paid`, `refund`, `canceled`, etc.). This field may be used to configure and customize the [notifications](/developers/notifications/) sent to customers and internal recipients throughout the payment process.\n"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short attachment retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `attachment_short_url` will be shorter than attachment response parameter. If not configured, the `attachment_short_url` will be in the same format with `attachment` response parameter. Default value is false. \n"},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short checkout retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `checkout_short_url` will be shorter than `checkout_url` parameter. If not configured, the `checkout_short_url` will be in the format of `https:///b/abc123`. Default value is false. \n"},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"example":{"type":"e_commerce","amount":"10.000","currency_code":"KWD","pg_codes":["knet"]},"title":"CheckoutPOSTRequest"}}},"required":true}} \ No newline at end of file +{"title":"Body","body":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"description":"An object to save customer registered address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"description":"An object to save address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes the merchant to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. For more information please refer to [Recurring Payments](/developers/cards-and-tokens/recurring-payments/). It is imperative for the merchant to strictly avoid including these parameters when the payment type is labeled as `one_off`. The agreement parameter should be sent exclusively when the payment type is designated as `auto_debit`.\n"},"attachment":{"type":"string","format":"uri","description":"Attachments can be included as an optional feature in email notifications sent to the customer regarding their payment. These attachments will also be available for download on the checkout page. The primary purpose of this field is to provide the customer with additional information or documentation related to their purchase. Attachments should be sent using the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects) encoding type. Ensure that you change the content type to `multipart/form-data` when sending attachments. They cannot be sent using [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) encoding. Allowed file extensions: PDF, JPEG, PNG, DOC, DOCX, JPG, XLS, XLSX, and TXT. The name of the attached file should not exceed 100 characters.\n"},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field used to reference an attachment that has already been uploaded to the server.\n","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows the merchant to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments.\n"},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the `checkout_url`, which is the Ottu Checkout page. Default value is false.\n"},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"When set to true, the Checkout API will include the `sdk_setup_preload_payload` in its response. This payload facilitates immediate UI setup without the need for further API calls. By default, the parameter is set to `false`, and the `sdk_setup_preload_payload` is not included in the API response.\n"},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"An object that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., `created`, `paid`, `refund`, `canceled`, etc.). This field may be used to configure and customize the [notifications](/developers/notifications/) sent to customers and internal recipients throughout the payment process.\n"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short attachment retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `attachment_short_url` will be shorter than attachment response parameter. If not configured, the `attachment_short_url` will be in the same format with `attachment` response parameter. Default value is false. \n"},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short checkout retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `checkout_short_url` will be shorter than `checkout_url` parameter. If not configured, the `checkout_short_url` will be in the format of `https:///b/abc123`. Default value is false. \n"},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"example":{"type":"e_commerce","amount":"10.000","currency_code":"KWD","pg_codes":["knet"]},"title":"CheckoutPOSTRequest"},"examples":{"LoyaltyEnabled(minimal)":{"value":{"type":"e_commerce","amount":"100.000","currency_code":"SAR","customer_id":"CUST-123","customer_phone":"+966500000000","loyalty":{"enabled":true}},"summary":"Mark transaction as rewardable","description":"Minimal payload — set `loyalty.enabled=true`. The customer earns points automatically if the chosen PGMID has a wallet service with reward capability configured (e.g. Qitaf for STC merchants on SAR transactions)."},"LoyaltyWithReference+Metadata":{"value":{"type":"e_commerce","amount":"250.000","currency_code":"SAR","customer_id":"CUST-123","customer_phone":"+966500000000","order_no":"ORDER-2026-9182","loyalty":{"enabled":true,"reference":"LOY-CAMP-SPRING-9182","metadata":{"campaign_id":"spring2026","segment":"vip"}}},"summary":"Loyalty with merchant reference and metadata","description":"Full loyalty payload. `reference` overrides the default (`order_no`) sent to the loyalty provider; `metadata` is forwarded opaquely so merchant-side analytics can correlate rewards back to a campaign."}}},"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"description":"An object to save customer registered address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"description":"An object to save address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes the merchant to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. For more information please refer to [Recurring Payments](/developers/cards-and-tokens/recurring-payments/). It is imperative for the merchant to strictly avoid including these parameters when the payment type is labeled as `one_off`. The agreement parameter should be sent exclusively when the payment type is designated as `auto_debit`.\n"},"attachment":{"type":"string","format":"uri","description":"Attachments can be included as an optional feature in email notifications sent to the customer regarding their payment. These attachments will also be available for download on the checkout page. The primary purpose of this field is to provide the customer with additional information or documentation related to their purchase. Attachments should be sent using the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects) encoding type. Ensure that you change the content type to `multipart/form-data` when sending attachments. They cannot be sent using [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) encoding. Allowed file extensions: PDF, JPEG, PNG, DOC, DOCX, JPG, XLS, XLSX, and TXT. The name of the attached file should not exceed 100 characters.\n"},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field used to reference an attachment that has already been uploaded to the server.\n","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows the merchant to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments.\n"},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the `checkout_url`, which is the Ottu Checkout page. Default value is false.\n"},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"When set to true, the Checkout API will include the `sdk_setup_preload_payload` in its response. This payload facilitates immediate UI setup without the need for further API calls. By default, the parameter is set to `false`, and the `sdk_setup_preload_payload` is not included in the API response.\n"},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"An object that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., `created`, `paid`, `refund`, `canceled`, etc.). This field may be used to configure and customize the [notifications](/developers/notifications/) sent to customers and internal recipients throughout the payment process.\n"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short attachment retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `attachment_short_url` will be shorter than attachment response parameter. If not configured, the `attachment_short_url` will be in the same format with `attachment` response parameter. Default value is false. \n"},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short checkout retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `checkout_short_url` will be shorter than `checkout_url` parameter. If not configured, the `checkout_short_url` will be in the format of `https:///b/abc123`. Default value is false. \n"},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"example":{"type":"e_commerce","amount":"10.000","currency_code":"KWD","pg_codes":["knet"]},"title":"CheckoutPOSTRequest"}},"multipart/form-data":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"description":"An object to save customer registered address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"description":"An object to save address data into payment transaction.\n","type":"object","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes the merchant to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. For more information please refer to [Recurring Payments](/developers/cards-and-tokens/recurring-payments/). It is imperative for the merchant to strictly avoid including these parameters when the payment type is labeled as `one_off`. The agreement parameter should be sent exclusively when the payment type is designated as `auto_debit`.\n"},"attachment":{"type":"string","format":"uri","description":"Attachments can be included as an optional feature in email notifications sent to the customer regarding their payment. These attachments will also be available for download on the checkout page. The primary purpose of this field is to provide the customer with additional information or documentation related to their purchase. Attachments should be sent using the [multipart/form-data](https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects) encoding type. Ensure that you change the content type to `multipart/form-data` when sending attachments. They cannot be sent using [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) encoding. Allowed file extensions: PDF, JPEG, PNG, DOC, DOCX, JPG, XLS, XLSX, and TXT. The name of the attached file should not exceed 100 characters.\n"},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field used to reference an attachment that has already been uploaded to the server.\n","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows the merchant to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments.\n"},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the `checkout_url`, which is the Ottu Checkout page. Default value is false.\n"},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"When set to true, the Checkout API will include the `sdk_setup_preload_payload` in its response. This payload facilitates immediate UI setup without the need for further API calls. By default, the parameter is set to `false`, and the `sdk_setup_preload_payload` is not included in the API response.\n"},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"An object that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., `created`, `paid`, `refund`, `canceled`, etc.). This field may be used to configure and customize the [notifications](/developers/notifications/) sent to customers and internal recipients throughout the payment process.\n"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short attachment retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `attachment_short_url` will be shorter than attachment response parameter. If not configured, the `attachment_short_url` will be in the same format with `attachment` response parameter. Default value is false. \n"},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If true, it generates short checkout retrieval URL, which could be embedded in either SMS, Email, or WhatsApp messages, as it uses fewer characters. If an external URL shortening service, such as [Bitly](https://bitly.com/), is configured, the `checkout_short_url` will be shorter than `checkout_url` parameter. If not configured, the `checkout_short_url` will be in the format of `https:///b/abc123`. Default value is false. \n"},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"example":{"type":"e_commerce","amount":"10.000","currency_code":"KWD","pg_codes":["knet"]},"title":"CheckoutPOSTRequest"}}},"required":true}} \ No newline at end of file diff --git a/docs/developers/apis/create-payment-transaction-checkout.StatusCodes.json b/docs/developers/apis/create-payment-transaction-checkout.StatusCodes.json index bc02d62..8b2cc73 100644 --- a/docs/developers/apis/create-payment-transaction-checkout.StatusCodes.json +++ b/docs/developers/apis/create-payment-transaction-checkout.StatusCodes.json @@ -1 +1 @@ -{"responses":{"201":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short attachment retrieval URL. Max length: 200. `shortify_attachment_url` request parameter should be `true` in order to generate it.\n"},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"Short checkout URL. `shortify_checkout_url` request parameter should be set to `true` in order to generate it.\n"},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead.\n"},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. It is present only when [Basic Authentication](/developers/getting-started/authentication/#basic-auth) is used, because [API Key](/developers/getting-started/authentication/#api-key-auth) Authentication is not associated with any user.\n"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time.\n"},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. The request parameter `generate_qr_code` should be set to `true`.\n"},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"It is a JSON object containing preloaded data necessary for initializing the [Checkout SDK](/developers/payments/checkout-sdk/). This data encompasses vital details such as customer information, available payment methods, and specific transaction details, all formatted according to the Checkout SDK's initialization specifications. It must be passed to the Checkout SDK constructor without any modifications. It will be included in the response solely when the `include_sdk_setup_preload` parameter is set to `true`.\n"},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process. It can be used to perform subsequent operations, like retrieve, acknowledge, [refund, capture, and cancellation](/developers/operations/).\n"},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment. Possible values: `created`, `pending`, `attempted`, `authorized`, `paid`, `failed`, `canceled`, `expired`, `invalided`, `refunded`, `cod`. \n"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"CheckoutPOSTResponse"},{"type":"object","properties":{"pg_params":{"allOf":[{"type":"object","description":"Normalized payment gateway response parameters. Ottu maps varied PG responses into these fixed fields, so you can interpret payment results consistently regardless of which gateway processed the transaction. Use these fields instead of parsing the raw `gateway_response` object.","properties":{"auth_code":{"description":"Authorization code returned by the payment gateway for the transaction."},"card_type":{"description":"The type of card used (e.g., \"credit\", \"debit\", \"prepaid\")."},"card_holder":{"description":"Full name of the cardholder as provided by the payment gateway."},"cardholder_email":{"description":"Email address of the cardholder, if provided by the payment gateway."},"card_expiry_month":{"description":"Expiry month of the card (e.g., \"01\", \"12\")."},"card_expiry_year":{"description":"Expiry year of the card (e.g., \"2025\", \"25\")."},"full_card_expiry":{"description":"Full card expiry in MM/YY or MM/YYYY format, as returned by the gateway."},"card_number":{"description":"Masked card number (PAN) used for the transaction (e.g., \"411111******1111\")."},"card_issuer":{"description":"The issuing bank or financial institution of the card."},"ref":{"description":"Gateway-specific reference identifier for the transaction."},"result":{"description":"The normalized transaction result from the payment gateway (e.g., \"CAPTURED\", \"APPROVED\", \"DECLINED\")."},"track_id":{"description":"Tracking identifier assigned by the payment gateway for reconciliation."},"post_date":{"description":"The date the transaction was posted/settled by the payment gateway."},"transaction_id":{"description":"Unique transaction identifier assigned by the payment gateway."},"payment_id":{"description":"Payment identifier from the payment gateway, used for tracking and reconciliation."},"pg_message":{"description":"Human-readable message from the payment gateway describing the transaction outcome."},"receipt_no":{"description":"Receipt number generated by the payment gateway for the transaction."},"transaction_no":{"description":"Transaction number assigned by the gateway, often different from transaction_id."},"decision":{"description":"The gateway's final decision on the transaction (e.g., \"ACCEPT\", \"REJECT\", \"REVIEW\")."},"card_expiry":{"description":"Card expiry date in a gateway-specific format."},"card_details":{"description":"Additional card details object as returned by the payment gateway."},"dcc_payer_amount":{"description":"The amount in the payer's currency when Dynamic Currency Conversion (DCC) is applied."},"dcc_payer_currency":{"description":"The payer's local currency code when DCC is applied (e.g., \"USD\", \"EUR\")."},"dcc_payer_exchange_rate":{"description":"The exchange rate applied for DCC conversion."},"rrn":{"description":"Retrieval Reference Number — a unique identifier used for transaction lookups and dispute resolution."}},"title":"PGParams"}],"readOnly":true,"description":"The `pg_params` field contains the details received \nfrom the payment gateway callback these details are \nprovided to us by the gateway after a user has completed \na payment transaction additionally, `pg_params` \ncan include information obtained from an inquiry \nrequest made to the payment gateway status check API. \n"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"readOnly":true,"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","readOnly":true,"description":"Denotes the total sum of the payment transaction, which encompasses the cost of the procured items or services, excluding any supplementary fees or charges."},"amount_details":{"allOf":[{"type":"object","properties":{"currency_code":{"type":"string","readOnly":true},"amount":{"type":"string","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges","maxLength":120},"total":{"type":"string","readOnly":true,"description":"Denotes the comprehensive total of the payment transaction, incorporating both the principal amount and any associated fees."},"fee":{"type":"string","readOnly":true,"description":"The `Fee` indicates the sum disbursed by the customer in their chosen currency for the payment. Note, this currency could vary from the currency used for the transaction."},"exchange_rate":{"type":"string","description":"The conversion rate used for currency conversion during payment. This value reflects the rate locally calculated."}},"required":["currency_code","fee","total"],"title":"AmountDetails"}],"readOnly":true,"description":"A comprehensive set of amount details includes: Currency Code, Amount, Total, Fee."},"capture_delivery_address":{"type":"boolean","description":"By enabling this, you will ask for user's address. If enabled, capture delivery coordinates should also be active."},"capture_delivery_location":{"type":"boolean","title":"Capture delivery coordinates","description":"By enabling this, you will ask for user's delivery location on a map. "},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"readOnly":true,"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency.","maxLength":3,"minLength":3},"customer_address_city":{"type":"string","description":"The city of the customer's billing address. This field may be used to send the billing address to the payment gateway.","maxLength":40},"customer_address_country":{"type":"string","description":"The country of the customer's billing address, formatted as a two-letter ISO country code (e.g., 'US' for United States, 'CA' for Canada). This field may be used to send the billing address to the payment gateway.","maxLength":2,"minLength":2},"customer_address_line1":{"type":"string","title":"Customer address line 1","description":"The first line of the customer's billing street address. This field may be used to send the billing address to the payment gateway."},"customer_address_line2":{"type":"string","title":"Customer address line 2","description":"The second line of the customer's billing street address, if available. This field may be used to provide additional address information, such as an apartment or suite number."},"customer_birthdate":{"type":["string","null"],"format":"date","description":"The customer's date of birth in ISO format (YYYY-MM-DD)."},"customer_address_postal_code":{"type":"string","description":"The postal code of the customer's billing address. This field may be used to send the billing address to the payment gateway.","maxLength":12},"customer_address_state":{"type":"string","description":"The state or region of the customer's billing address. This field may be used to send the billing address to the payment gateway.","maxLength":40},"customer_email":{"type":"string","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":32},"customer_wallet_transactions":{"type":"array","items":{"type":"object","description":"One wallet leg in `customer_wallet_transactions`.\n\nA txn that uses multiple wallets (Ottu + Qitaf stacked, etc.) emits one\nrecord per provider. Single-wallet txns emit a one-element list.","properties":{"provider_code":{"type":"string","description":"Stable identifier of the wallet provider that handled this leg (e.g. `wallet_ottu`, `wallet_qitaf`). Empty for legacy native payments where the provider wasn't recorded on the attempt."},"amount":{"type":"string","description":"Amount charged from this wallet."},"currency":{"type":"string","description":"ISO 4217 currency code."},"operation_id":{"type":"string","description":"Wallet service operation ID (opaque per provider)."},"wallet_response":{"allOf":[{"type":"object","properties":{"amount":{"type":"string","description":"Amount of the wallet operation."},"status":{"type":"string","description":"Operation status (e.g. 'completed', 'pending')."},"currency":{"type":"string","description":"ISO 4217 currency code."},"created_at":{"type":"string","format":"date-time","description":"Operation creation timestamp."},"customer_id":{"type":"string","description":"Customer identifier in the wallet service."},"operation_id":{"type":"string","description":"Wallet operation ID (opaque per provider)."},"payment_entry_id":{"type":"integer","description":"Ledger entry ID for the payment debit."},"reserve_entry_id":{"type":"integer","description":"Ledger entry ID for the reservation hold."}},"title":"WalletServiceResponse"}],"description":"Full response returned by the wallet service for this leg."},"created_at":{"type":"string","format":"date-time","description":"Wallet transaction creation timestamp."},"modified_at":{"type":"string","format":"date-time","description":"Wallet transaction last modification timestamp."}},"title":"CustomerWalletTransaction"},"readOnly":true,"description":"List of wallet legs that contributed to this payment — one entry per wallet provider (Ottu, Qitaf, …). Multi-wallet stacking emits multiple entries; full or single-wallet payments emit a one-element list. Omitted entirely (key absent) when no wallet was involved."},"extra":{"description":"The extra information for the payment details, which the merchant has sent it in key value form."},"fee":{"type":"string","description":"The fee denotes the sum the customer pays in their chosen payment currency. This may vary from the transaction's designated currency. The fee is computed once to maintain precision and uniformity throughout the payment procedure.","readOnly":true},"gateway_account":{"type":"string","readOnly":true,"description":"This code corresponds to the payment gateway and plays an essential role in facilitating payment transactions."},"gateway_name":{"type":"string","readOnly":true,"description":"The name of the payment gateway service being utilized."},"gateway_response":{"type":"object","additionalProperties":{},"description":"This field stores the processed response received from the payment gateway and forwarded to Ottu.","readOnly":true},"initiator":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"first_name":{"type":"string","maxLength":32},"last_name":{"type":"string","maxLength":32},"username":{"type":"string","description":"Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.","pattern":"^[\\w.@+-]+$","maxLength":150},"email":{"type":"string","format":"email","title":"Email address","maxLength":254},"phone":{"type":"string","title":"Phone number","maxLength":128}},"required":["email","id","username"],"title":"InitiatorUser"}],"description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"is_sandbox":{"type":"boolean","title":"Is Sandbox?","description":"Indicates whether the operation was performed in a test environment or not."},"message":{"type":"string","readOnly":true,"description":"This represents the message, either transmitted by the Payment Gateway (PG) or established by Ottu, that provides a detailed illustration of the payment's current status."},"order_no":{"type":["string","null"],"description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"paid_amount":{"oneOf":[{"type":"number","format":"double"},{"type":"string"}],"description":"The paid amount encompasses fees or captured amounts from authorized transactions. This total is derived from the specified 'amount' field, converting foreign currencies to the default as necessary. This might result in minor variations due to fluctuations in exchange rates.","readOnly":true},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"reference_number":{"type":"string","readOnly":true},"refunded_amount":{"type":"number","format":"double","description":"The total refunded amount for the payment transaction."},"remaining_amount":{"type":"number","format":"double","description":"The residual amount due. Together with the editable amount, it indicates the outstanding balance of a transaction awaiting settlement.","readOnly":true},"result":{"enum":["pending","success","failed","canceled","error","cod"],"type":"string","description":"Indicates the outcome of the operation. `success` denotes a successful operation.","x-spec-enum-id":"03c10fdf706d3f9a","readOnly":true},"session_id":{"type":"string","description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process.","maxLength":128},"settled_amount":{"type":"number","format":"double","description":"The amount that has been paid or authorized in its original currency, excluding any fees.","readOnly":true},"signature":{"type":"string","readOnly":true,"description":"Signature Field: A cryptographic hash used to guarantee data integrity and authenticity during client-server exchanges. This hash ensures that the API payload has not been tampered with, and can only be verified by authorized parties."},"state":{"type":"string","readOnly":true},"token":{"allOf":[{"type":"object","description":"Represents token details, only if the user pays with a tokenized card, Ottu will include the token details in the response.","properties":{"brand":{"type":["string","null"],"description":"The card brand (e.g., Visa, Mastercard) associated with the card. Display this information for customer reference.","maxLength":32},"customer_id":{"type":"string","description":"The unique identifier for the customer who owns the card","maxLength":64},"cvv_required":{"type":"boolean","description":"Specifies if the card requires the submission of a CVV for transactions. A card without CVV requirement can be used for auto-debit or recurring payments."},"expiry_month":{"type":"string","description":"The card's expiration month. Provide this information for transaction processing and validation.","maxLength":2},"expiry_year":{"type":"string","description":"The card's expiration year. Provide this information for transaction processing and validation.","maxLength":2},"is_expired":{"type":"boolean","description":"A boolean field indicating whether the card has expired. Use this information to determine if the card is valid for transactions and to notify the customer if necessary."},"is_preferred":{"type":"boolean","readOnly":true,"description":" Indicates if the card is the customer's preferred payment option. Order cards with this attribute set to true at the top of the list for easy access."},"name_on_card":{"type":["string","null"],"description":"The cardholder's name as it appears on the card. Display this information for customer verification.","maxLength":64},"number":{"type":["string","null"],"description":"The masked card number to be displayed, ensuring customer privacy and security while providing essential information.","maxLength":19},"pg_code":{"type":"string","description":"The `pg_code` associated with the card's creation."},"pg_name":{"type":"string","description":"The payment gateway associated with the user's card. The available values depend on the gateways configured for your merchant account."},"token":{"type":"string","description":"The unique token associated with the card, required for tokenized card payments. Use this value to securely process transactions.","maxLength":50},"agreements":{"description":"List of agreements associated with this card."}},"required":["agreements","brand","customer_id","cvv_required","expiry_month","expiry_year","is_expired","is_preferred","name_on_card","number","pg_code","pg_name","token"],"title":"Card"}],"description":"Please note that if card is created via checkout save_card payment type\n\nIt means card is created via successful operation without any funds charged.\n\nFor more details check Checkout API `payment_type` field documentation details"},"transaction_log_id":{"type":["integer","null"],"maximum":2147483647,"minimum":0,"description":"Identifies the transaction log associated with the payment transaction. A transaction log is created for each record that is dispatched during a bulk dispatch process."},"timestamp_utc":{"type":"string","format":"date-time","readOnly":true,"description":"This field represents the timestamp at which ottu processed the transaction.While this often corresponds to the payment time,it's important to note that it might not always be the case.Payments can be acknowledged at a later time,so this timestamp might not align precisely with the actual payment time."},"transactions":{"type":"array","items":{"type":"object","properties":{"amount":{"type":"string","readOnly":true},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency.","maxLength":3,"minLength":3},"order_no":{"type":["string","null"],"description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"session_id":{"type":"string","description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process.","maxLength":128},"state":{"enum":["paid","refunded","refund_queued","refund_rejected","voided"],"type":"string","x-spec-enum-id":"f7b1c95c3c2311ac","description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `paid` - paid\n* `refunded` - refunded\n* `refund_queued` - refund_queued\n* `refund_rejected` - refund_rejected\n* `voided` - voided"}},"required":["amount","currency_code"],"title":"ChildPayment"},"description":"A list of dictionaries is generated, each containing a concise summary of each child payment transaction that has been created."},"voided_amount":{"type":"number","format":"double","description":"The total voided amount for the payment transaction."}},"required":["agreement","amount","amount_details","card_acceptance_criteria","currency_code","customer_address_country","fee","gateway_account","gateway_name","gateway_response","message","paid_amount","pg_params","reference_number","remaining_amount","result","settled_amount","signature","state","timestamp_utc"],"title":"DirectPaymentResponse"}],"title":"Success"}}},"description":""},"400":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"This field is required."}}},"title":"FieldErrors"},{"type":"object","properties":{"field_name":{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"To use sms notifications provide the `customer_phone` field."}}},"required":["field_name"],"title":"Nested"}},"required":["field_name"],"title":"NestedFieldErrors"},{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"},{"type":"object","properties":{"detail":{"type":"string","description":"A human-readable description providing details about the failure.","maxLength":255},"result":{"type":"string","default":"failed","description":"Indicates the outcome of the operation. Typically set to 'failed' for error responses."},"failed_provider":{"type":"string","description":"Wallet cohort errors only. The `provider_code` of the wallet leg whose commit/release failed and triggered the saga rollback."},"pg_response":{"description":"Wallet cohort errors only. Raw response from the failing wallet service so the frontend can surface the upstream error code."},"rollback":{"description":"Wallet cohort errors only. Compensation report — `{refunded: [...], released: [...], compensation_failures: [...]}` — tells the frontend exactly which legs were reversed."}},"title":"OperationErrorResponse"}],"title":"ClientErrors"}}},"description":""},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"415":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"423":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file +{"responses":{"201":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short attachment retrieval URL. Max length: 200. `shortify_attachment_url` request parameter should be `true` in order to generate it.\n"},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"Short checkout URL. `shortify_checkout_url` request parameter should be set to `true` in order to generate it.\n"},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead.\n"},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. It is present only when [Basic Authentication](/developers/getting-started/authentication/#basic-auth) is used, because [API Key](/developers/getting-started/authentication/#api-key-auth) Authentication is not associated with any user.\n"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time.\n"},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. The request parameter `generate_qr_code` should be set to `true`.\n"},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"It is a JSON object containing preloaded data necessary for initializing the [Checkout SDK](/developers/payments/checkout-sdk/). This data encompasses vital details such as customer information, available payment methods, and specific transaction details, all formatted according to the Checkout SDK's initialization specifications. It must be passed to the Checkout SDK constructor without any modifications. It will be included in the response solely when the `include_sdk_setup_preload` parameter is set to `true`.\n"},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process. It can be used to perform subsequent operations, like retrieve, acknowledge, [refund, capture, and cancellation](/developers/operations/).\n"},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment. Possible values: `created`, `pending`, `attempted`, `authorized`, `paid`, `failed`, `canceled`, `expired`, `invalided`, `refunded`, `cod`. \n"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"CheckoutPOSTResponse"},{"type":"object","properties":{"pg_params":{"allOf":[{"type":"object","description":"Normalized payment gateway response parameters. Ottu maps varied PG responses into these fixed fields, so you can interpret payment results consistently regardless of which gateway processed the transaction. Use these fields instead of parsing the raw `gateway_response` object.","properties":{"auth_code":{"description":"Authorization code returned by the payment gateway for the transaction."},"card_type":{"description":"The type of card used (e.g., \"credit\", \"debit\", \"prepaid\")."},"card_holder":{"description":"Full name of the cardholder as provided by the payment gateway."},"cardholder_email":{"description":"Email address of the cardholder, if provided by the payment gateway."},"card_expiry_month":{"description":"Expiry month of the card (e.g., \"01\", \"12\")."},"card_expiry_year":{"description":"Expiry year of the card (e.g., \"2025\", \"25\")."},"full_card_expiry":{"description":"Full card expiry in MM/YY or MM/YYYY format, as returned by the gateway."},"card_number":{"description":"Masked card number (PAN) used for the transaction (e.g., \"411111******1111\")."},"card_issuer":{"description":"The issuing bank or financial institution of the card."},"ref":{"description":"Gateway-specific reference identifier for the transaction."},"result":{"description":"The normalized transaction result from the payment gateway (e.g., \"CAPTURED\", \"APPROVED\", \"DECLINED\")."},"track_id":{"description":"Tracking identifier assigned by the payment gateway for reconciliation."},"post_date":{"description":"The date the transaction was posted/settled by the payment gateway."},"transaction_id":{"description":"Unique transaction identifier assigned by the payment gateway."},"payment_id":{"description":"Payment identifier from the payment gateway, used for tracking and reconciliation."},"pg_message":{"description":"Human-readable message from the payment gateway describing the transaction outcome."},"receipt_no":{"description":"Receipt number generated by the payment gateway for the transaction."},"transaction_no":{"description":"Transaction number assigned by the gateway, often different from transaction_id."},"decision":{"description":"The gateway's final decision on the transaction (e.g., \"ACCEPT\", \"REJECT\", \"REVIEW\")."},"card_expiry":{"description":"Card expiry date in a gateway-specific format."},"card_details":{"description":"Additional card details object as returned by the payment gateway."},"dcc_payer_amount":{"description":"The amount in the payer's currency when Dynamic Currency Conversion (DCC) is applied."},"dcc_payer_currency":{"description":"The payer's local currency code when DCC is applied (e.g., \"USD\", \"EUR\")."},"dcc_payer_exchange_rate":{"description":"The exchange rate applied for DCC conversion."},"rrn":{"description":"Retrieval Reference Number — a unique identifier used for transaction lookups and dispute resolution."}},"title":"PGParams"}],"readOnly":true,"description":"The `pg_params` field contains the details received \nfrom the payment gateway callback these details are \nprovided to us by the gateway after a user has completed \na payment transaction additionally, `pg_params` \ncan include information obtained from an inquiry \nrequest made to the payment gateway status check API. \n"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"readOnly":true,"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"amount":{"type":"string","readOnly":true,"description":"Denotes the total sum of the payment transaction, which encompasses the cost of the procured items or services, excluding any supplementary fees or charges."},"amount_details":{"allOf":[{"type":"object","properties":{"currency_code":{"type":"string","readOnly":true},"amount":{"type":"string","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges","maxLength":120},"total":{"type":"string","readOnly":true,"description":"Denotes the comprehensive total of the payment transaction, incorporating both the principal amount and any associated fees."},"fee":{"type":"string","readOnly":true,"description":"The `Fee` indicates the sum disbursed by the customer in their chosen currency for the payment. Note, this currency could vary from the currency used for the transaction."},"exchange_rate":{"type":"string","description":"The conversion rate used for currency conversion during payment. This value reflects the rate locally calculated."}},"required":["currency_code","fee","total"],"title":"AmountDetails"}],"readOnly":true,"description":"A comprehensive set of amount details includes: Currency Code, Amount, Total, Fee."},"capture_delivery_address":{"type":"boolean","description":"By enabling this, you will ask for user's address. If enabled, capture delivery coordinates should also be active."},"capture_delivery_location":{"type":"boolean","title":"Capture delivery coordinates","description":"By enabling this, you will ask for user's delivery location on a map. "},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"readOnly":true,"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency.","maxLength":3,"minLength":3},"customer_address_city":{"type":"string","description":"The city of the customer's billing address. This field may be used to send the billing address to the payment gateway.","maxLength":40},"customer_address_country":{"type":"string","description":"The country of the customer's billing address, formatted as a two-letter ISO country code (e.g., 'US' for United States, 'CA' for Canada). This field may be used to send the billing address to the payment gateway.","maxLength":2,"minLength":2},"customer_address_line1":{"type":"string","title":"Customer address line 1","description":"The first line of the customer's billing street address. This field may be used to send the billing address to the payment gateway."},"customer_address_line2":{"type":"string","title":"Customer address line 2","description":"The second line of the customer's billing street address, if available. This field may be used to provide additional address information, such as an apartment or suite number."},"customer_birthdate":{"type":["string","null"],"format":"date","description":"The customer's date of birth in ISO format (YYYY-MM-DD)."},"customer_address_postal_code":{"type":"string","description":"The postal code of the customer's billing address. This field may be used to send the billing address to the payment gateway.","maxLength":12},"customer_address_state":{"type":"string","description":"The state or region of the customer's billing address. This field may be used to send the billing address to the payment gateway.","maxLength":40},"customer_email":{"type":"string","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":32},"customer_wallet_transactions":{"type":"array","items":{"type":"object","description":"One wallet leg in `customer_wallet_transactions`.\n\nA txn that uses multiple wallets (Ottu + Qitaf stacked, etc.) emits one\nrecord per provider. Single-wallet txns emit a one-element list.","properties":{"provider_code":{"type":"string","description":"Stable identifier of the wallet provider that handled this leg (e.g. `wallet_ottu`, `wallet_qitaf`). Empty for legacy native payments where the provider wasn't recorded on the attempt."},"amount":{"type":"string","description":"Amount charged from this wallet."},"currency":{"type":"string","description":"ISO 4217 currency code."},"operation_id":{"type":"string","description":"Wallet service operation ID (opaque per provider)."},"wallet_response":{"allOf":[{"type":"object","properties":{"amount":{"type":"string","description":"Amount of the wallet operation."},"status":{"type":"string","description":"Operation status (e.g. 'completed', 'pending')."},"currency":{"type":"string","description":"ISO 4217 currency code."},"created_at":{"type":"string","format":"date-time","description":"Operation creation timestamp."},"customer_id":{"type":"string","description":"Customer identifier in the wallet service."},"operation_id":{"type":"string","description":"Wallet operation ID (opaque per provider)."},"payment_entry_id":{"type":"integer","description":"Ledger entry ID for the payment debit."},"reserve_entry_id":{"type":"integer","description":"Ledger entry ID for the reservation hold."}},"title":"WalletServiceResponse"}],"description":"Full response returned by the wallet service for this leg."},"created_at":{"type":"string","format":"date-time","description":"Wallet transaction creation timestamp."},"modified_at":{"type":"string","format":"date-time","description":"Wallet transaction last modification timestamp."}},"title":"CustomerWalletTransaction"},"readOnly":true,"description":"List of wallet legs that contributed to this payment — one entry per wallet provider (Ottu, Qitaf, …). Multi-wallet stacking emits multiple entries; full or single-wallet payments emit a one-element list. Omitted entirely (key absent) when no wallet was involved."},"extra":{"description":"The extra information for the payment details, which the merchant has sent it in key value form."},"fee":{"type":"string","description":"The fee denotes the sum the customer pays in their chosen payment currency. This may vary from the transaction's designated currency. The fee is computed once to maintain precision and uniformity throughout the payment procedure.","readOnly":true},"gateway_account":{"type":"string","readOnly":true,"description":"This code corresponds to the payment gateway and plays an essential role in facilitating payment transactions."},"gateway_name":{"type":"string","readOnly":true,"description":"The name of the payment gateway service being utilized."},"gateway_response":{"type":"object","additionalProperties":{},"description":"This field stores the processed response received from the payment gateway and forwarded to Ottu.","readOnly":true},"initiator":{"allOf":[{"type":"object","properties":{"id":{"type":"integer","readOnly":true},"first_name":{"type":"string","maxLength":32},"last_name":{"type":"string","maxLength":32},"username":{"type":"string","description":"Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.","pattern":"^[\\w.@+-]+$","maxLength":150},"email":{"type":"string","format":"email","title":"Email address","maxLength":254},"phone":{"type":"string","title":"Phone number","maxLength":128}},"required":["email","id","username"],"title":"InitiatorUser"}],"description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"is_sandbox":{"type":"boolean","title":"Is Sandbox?","description":"Indicates whether the operation was performed in a test environment or not."},"message":{"type":"string","readOnly":true,"description":"This represents the message, either transmitted by the Payment Gateway (PG) or established by Ottu, that provides a detailed illustration of the payment's current status."},"order_no":{"type":["string","null"],"description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"paid_amount":{"oneOf":[{"type":"number","format":"double"},{"type":"string"}],"description":"The paid amount encompasses fees or captured amounts from authorized transactions. This total is derived from the specified 'amount' field, converting foreign currencies to the default as necessary. This might result in minor variations due to fluctuations in exchange rates.","readOnly":true},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"reference_number":{"type":"string","readOnly":true},"refunded_amount":{"type":"number","format":"double","description":"The total refunded amount for the payment transaction."},"remaining_amount":{"type":"number","format":"double","description":"The residual amount due. Together with the editable amount, it indicates the outstanding balance of a transaction awaiting settlement.","readOnly":true},"result":{"enum":["pending","success","failed","canceled","error","cod"],"type":"string","description":"Indicates the outcome of the operation. `success` denotes a successful operation.","x-spec-enum-id":"03c10fdf706d3f9a","readOnly":true},"session_id":{"type":"string","description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process.","maxLength":128},"settled_amount":{"type":"number","format":"double","description":"The amount that has been paid or authorized in its original currency, excluding any fees.","readOnly":true},"signature":{"type":"string","readOnly":true,"description":"Signature Field: A cryptographic hash used to guarantee data integrity and authenticity during client-server exchanges. This hash ensures that the API payload has not been tampered with, and can only be verified by authorized parties."},"state":{"type":"string","readOnly":true},"token":{"allOf":[{"type":"object","description":"Represents token details, only if the user pays with a tokenized card, Ottu will include the token details in the response.","properties":{"brand":{"type":["string","null"],"description":"The card brand (e.g., Visa, Mastercard) associated with the card. Display this information for customer reference.","maxLength":32},"customer_id":{"type":"string","description":"The unique identifier for the customer who owns the card","maxLength":64},"cvv_required":{"type":"boolean","description":"Specifies if the card requires the submission of a CVV for transactions. A card without CVV requirement can be used for auto-debit or recurring payments."},"expiry_month":{"type":"string","description":"The card's expiration month. Provide this information for transaction processing and validation.","maxLength":2},"expiry_year":{"type":"string","description":"The card's expiration year. Provide this information for transaction processing and validation.","maxLength":2},"is_expired":{"type":"boolean","description":"A boolean field indicating whether the card has expired. Use this information to determine if the card is valid for transactions and to notify the customer if necessary."},"is_preferred":{"type":"boolean","readOnly":true,"description":" Indicates if the card is the customer's preferred payment option. Order cards with this attribute set to true at the top of the list for easy access."},"name_on_card":{"type":["string","null"],"description":"The cardholder's name as it appears on the card. Display this information for customer verification.","maxLength":64},"number":{"type":["string","null"],"description":"The masked card number to be displayed, ensuring customer privacy and security while providing essential information.","maxLength":19},"pg_code":{"type":"string","description":"The `pg_code` associated with the card's creation."},"pg_name":{"type":"string","description":"The payment gateway associated with the user's card. The available values depend on the gateways configured for your merchant account."},"token":{"type":"string","description":"The unique token associated with the card, required for tokenized card payments. Use this value to securely process transactions.","maxLength":50},"agreements":{"description":"List of agreements associated with this card."}},"required":["agreements","brand","customer_id","cvv_required","expiry_month","expiry_year","is_expired","is_preferred","name_on_card","number","pg_code","pg_name","token"],"title":"Card"}],"description":"Please note that if card is created via checkout save_card payment type\n\nIt means card is created via successful operation without any funds charged.\n\nFor more details check Checkout API `payment_type` field documentation details"},"transaction_log_id":{"type":["integer","null"],"maximum":2147483647,"minimum":0,"description":"Identifies the transaction log associated with the payment transaction. A transaction log is created for each record that is dispatched during a bulk dispatch process."},"timestamp_utc":{"type":"string","format":"date-time","readOnly":true,"description":"This field represents the timestamp at which ottu processed the transaction.While this often corresponds to the payment time,it's important to note that it might not always be the case.Payments can be acknowledged at a later time,so this timestamp might not align precisely with the actual payment time."},"transactions":{"type":"array","items":{"type":"object","properties":{"amount":{"type":"string","readOnly":true},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency.","maxLength":3,"minLength":3},"order_no":{"type":["string","null"],"description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"session_id":{"type":"string","description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process.","maxLength":128},"state":{"enum":["paid","refunded","refund_queued","refund_rejected","voided"],"type":"string","x-spec-enum-id":"f7b1c95c3c2311ac","description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `paid` - paid\n* `refunded` - refunded\n* `refund_queued` - refund_queued\n* `refund_rejected` - refund_rejected\n* `voided` - voided"}},"required":["amount","currency_code"],"title":"ChildPayment"},"description":"A list of dictionaries is generated, each containing a concise summary of each child payment transaction that has been created."},"voided_amount":{"type":"number","format":"double","description":"The total voided amount for the payment transaction."}},"required":["agreement","amount","amount_details","card_acceptance_criteria","currency_code","customer_address_country","fee","gateway_account","gateway_name","gateway_response","message","paid_amount","pg_params","reference_number","remaining_amount","result","settled_amount","signature","state","timestamp_utc"],"title":"DirectPaymentResponse"}],"title":"Success"}}},"description":""},"400":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"This field is required."}}},"title":"FieldErrors"},{"type":"object","properties":{"field_name":{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"To use sms notifications provide the `customer_phone` field."}}},"required":["field_name"],"title":"Nested"}},"required":["field_name"],"title":"NestedFieldErrors"},{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"},{"type":"object","properties":{"detail":{"type":"string","description":"A human-readable description providing details about the failure.","maxLength":255},"result":{"type":"string","default":"failed","description":"Indicates the outcome of the operation. Typically set to 'failed' for error responses."},"failed_provider":{"type":"string","description":"Wallet cohort errors only. The `provider_code` of the wallet leg whose commit/release failed and triggered the saga rollback."},"pg_response":{"description":"Wallet cohort errors only. Raw response from the failing wallet service so the frontend can surface the upstream error code."},"rollback":{"description":"Wallet cohort errors only. Compensation report — `{refunded: [...], released: [...], compensation_failures: [...]}` — tells the frontend exactly which legs were reversed."}},"title":"OperationErrorResponse"}],"title":"ClientErrors"}}},"description":""},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"415":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"423":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file diff --git a/docs/developers/apis/create-payment-transaction-checkout.api.mdx b/docs/developers/apis/create-payment-transaction-checkout.api.mdx index af41dca..526be32 100644 --- a/docs/developers/apis/create-payment-transaction-checkout.api.mdx +++ b/docs/developers/apis/create-payment-transaction-checkout.api.mdx @@ -5,7 +5,7 @@ description: "Create a new Payment Transaction" sidebar_label: "Create a new Payment Transaction" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: developers/apis/ottu-api custom_edit_url: null diff --git a/docs/developers/apis/full-update-payment-transaction-checkout.RequestSchema.json b/docs/developers/apis/full-update-payment-transaction-checkout.RequestSchema.json index adc80a3..d73bd2b 100644 --- a/docs/developers/apis/full-update-payment-transaction-checkout.RequestSchema.json +++ b/docs/developers/apis/full-update-payment-transaction-checkout.RequestSchema.json @@ -1 +1 @@ -{"title":"Body","body":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment or authorization."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"Checkout"}},"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment or authorization."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"Checkout"}},"multipart/form-data":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment or authorization."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"Checkout"}}},"required":true}} \ No newline at end of file +{"title":"Body","body":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment or authorization."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"Checkout"}},"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment or authorization."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"Checkout"}},"multipart/form-data":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment or authorization."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"Checkout"}}},"required":true}} \ No newline at end of file diff --git a/docs/developers/apis/full-update-payment-transaction-checkout.StatusCodes.json b/docs/developers/apis/full-update-payment-transaction-checkout.StatusCodes.json index 57237ef..f3cb906 100644 --- a/docs/developers/apis/full-update-payment-transaction-checkout.StatusCodes.json +++ b/docs/developers/apis/full-update-payment-transaction-checkout.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment or authorization."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"Checkout"}}},"description":""},"400":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"This field is required."}}},"title":"FieldErrors"},{"type":"object","properties":{"field_name":{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"To use sms notifications provide the `customer_phone` field."}}},"required":["field_name"],"title":"Nested"}},"required":["field_name"],"title":"NestedFieldErrors"}],"title":"Client Errors"}}},"description":""},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file +{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of payment gateway codes from which a customer can select to perform the payment or authorization."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Customer's date of birth in YYYY-MM-DD format.This field can be used for age verification or compliance purposes during payment processing."},"customer_email":{"type":"string","format":"email","description":"The email address of the customer that is used to send payment notifications and receipts, and can be used for fraud prevention. This field is mandatory and is always sent to the payment gateway. It may also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date."},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment."},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the specified period of time ago will be invalidated or expired if the customer attempts to complete them. By default, this expiration period is set to 24 hours from the time of transaction creation. This feature helps ensure that payment transactions are processed promptly."},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system.","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"The URL where the customer will be redirected after the payment stage only if the webhook URL returns a success status. `order_no`, `reference_number` and `session_id` will be appended to the redirect URL as query parameters.","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"URL where the payment result will be sent via a POST request after the customer has completed the payment session. The payment result will be included in the request body. ","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"Checkout"}}},"description":""},"400":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"This field is required."}}},"title":"FieldErrors"},{"type":"object","properties":{"field_name":{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"To use sms notifications provide the `customer_phone` field."}}},"required":["field_name"],"title":"Nested"}},"required":["field_name"],"title":"NestedFieldErrors"}],"title":"Client Errors"}}},"description":""},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file diff --git a/docs/developers/apis/full-update-payment-transaction-checkout.api.mdx b/docs/developers/apis/full-update-payment-transaction-checkout.api.mdx index d0536e4..d49a790 100644 --- a/docs/developers/apis/full-update-payment-transaction-checkout.api.mdx +++ b/docs/developers/apis/full-update-payment-transaction-checkout.api.mdx @@ -5,7 +5,7 @@ description: "Update an existing Payment Transaction" sidebar_label: "Update Payment Transaction" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "put api-method" info_path: developers/apis/ottu-api custom_edit_url: null diff --git a/docs/developers/apis/get-payment-methods.StatusCodes.json b/docs/developers/apis/get-payment-methods.StatusCodes.json index 3dbe0b5..dee1d48 100644 --- a/docs/developers/apis/get-payment-methods.StatusCodes.json +++ b/docs/developers/apis/get-payment-methods.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"customer_payment_methods":{"type":"array","items":{},"description":"Denotes a collection of payment gateways which used by user in successful payment attempts."},"payment_methods":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","readOnly":true,"description":"Indicates the unique code associated with the payment gateway. This pivotal identifier facilitates transaction initiation through both the dashboard and API."},"name":{"type":"string","readOnly":true,"description":"Represents the payment gateway internal name defined in Ottu."},"is_sandbox":{"type":"boolean","readOnly":true,"description":"Indicates whether this payment gateway operates in a sandbox or production environment."},"logo":{"type":"string","format":"uri"},"wallets":{"type":"array","items":{},"readOnly":true,"default":["ApplePay","GooglePay"],"description":"Denotes a list of payment services linked with this payment gateway, such as `GooglePay` and `ApplePay`"},"payment_services":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Code to identify the service in the API/URLs/etc","maxLength":16,"pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"Name to be displayed in dropdown or anywhere else the settings are being displayed. IE: Apple Pay, Google Pay, etc","maxLength":16},"name_ar":{"type":"string","title":"Arabic Name","description":"Arabic Name to be displayed in dropdown or anywhere else the settings are being displayed. IE: Apple Pay, Google Pay, etc","maxLength":16}},"required":["code","name"],"title":"PaymentServiceListing"},"readOnly":true,"description":"Active payment services linked to this payment gateway — device payment services (Apple Pay, Google Pay, Samsung Pay, ...) and wallet providers (Ottu, Qitaf, ...). Each entry exposes the service `code` and `name`."},"default_currency":{"type":"string","readOnly":true,"default":"KWD","description":"Specifies the default currency code for the payment gateway, formatted according to ISO 4217."},"accepted_currencies":{"type":"array","items":{},"readOnly":true,"default":["KWD","USD"],"description":"Indicates a list of default accepted currencies for the payment gateway, each formatted in accordance with ISO 4217 standards."},"operation":{"type":"string","description":"Specifies the processing operation type for the payment method: either 'authorize' or 'purchase'. When set to `authorize`, successful transactions using this payment method will transition to the `authorize` state. Similarly, if set to `purchase`, they will follow the purchase flow."},"operations":{"type":"array","items":{},"default":["refund","void"],"readOnly":true,"description":"Specifies the payment operations that are available for this payment gateway."},"is_tokenizable":{"type":"boolean","description":"This flag indicates whether tokenization is enabled for this payment gateway. When set to true, it allows for the secure storage of payment details, enabling future transactions without the need for re-entering payment information."},"auto_debit_enabled":{"type":"boolean","description":"This flag indicates whether auto-debit operation enabled or not."},"tags":{"type":"array","items":{"enum":["e_commerce","crm","pos","invoicing","subscriptions","marketplace","mobile_app","ticket_booking","donations","government","education","healthcare","insurance","logistics","hospitality","real_estate","retail","telecom","utilities","demo","test"],"type":"string","description":"* `e_commerce` - e_commerce\n* `crm` - crm\n* `pos` - pos\n* `invoicing` - invoicing\n* `subscriptions` - subscriptions\n* `marketplace` - marketplace\n* `mobile_app` - mobile_app\n* `ticket_booking` - ticket_booking\n* `donations` - donations\n* `government` - government\n* `education` - education\n* `healthcare` - healthcare\n* `insurance` - insurance\n* `logistics` - logistics\n* `hospitality` - hospitality\n* `real_estate` - real_estate\n* `retail` - retail\n* `telecom` - telecom\n* `utilities` - utilities\n* `demo` - demo\n* `test` - test","x-spec-enum-id":"397e40e715a6be71"},"readOnly":true,"description":"Business vertical tags assigned to this payment method."}},"required":["accepted_currencies","auto_debit_enabled","code","default_currency","is_sandbox","is_tokenizable","logo","name","operation","operations","payment_services","tags","wallets"],"title":"PGPaymentMethods"},"description":"Provides a comprehensive overview of the available payment gateways, delineated as distinct payment methods."}},"title":"PaymentMethodsResponse"}}},"description":""},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"This field is required."}}},"title":"FieldErrors"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file +{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"customer_payment_methods":{"type":"array","items":{},"description":"Denotes a collection of payment gateways which used by user in successful payment attempts."},"payment_methods":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","readOnly":true,"description":"Indicates the unique code associated with the payment gateway. This pivotal identifier facilitates transaction initiation through both the dashboard and API."},"name":{"type":"string","readOnly":true,"description":"Represents the payment gateway internal name defined in Ottu."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"is_sandbox":{"type":"boolean","readOnly":true,"description":"Indicates whether this payment gateway operates in a sandbox or production environment."},"logo":{"type":"string","format":"uri"},"wallets":{"type":"array","items":{},"readOnly":true,"default":["ApplePay","GooglePay"],"description":"Denotes a list of payment services linked with this payment gateway, such as `GooglePay` and `ApplePay`"},"payment_services":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Code to identify the service in the API/URLs/etc","maxLength":16,"pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"Name to be displayed in dropdown or anywhere else the settings are being displayed. IE: Apple Pay, Google Pay, etc","maxLength":16},"name_ar":{"type":"string","title":"Arabic Name","description":"Arabic Name to be displayed in dropdown or anywhere else the settings are being displayed. IE: Apple Pay, Google Pay, etc","maxLength":16}},"required":["code","name"],"title":"PaymentServiceListing"},"readOnly":true,"description":"Active payment services linked to this payment gateway — device payment services (Apple Pay, Google Pay, Samsung Pay, ...) and wallet providers (Ottu, Qitaf, ...). Each entry exposes the service `code` and `name`."},"default_currency":{"type":"string","readOnly":true,"default":"KWD","description":"Specifies the default currency code for the payment gateway, formatted according to ISO 4217."},"accepted_currencies":{"type":"array","items":{},"readOnly":true,"default":["KWD","USD"],"description":"Indicates a list of default accepted currencies for the payment gateway, each formatted in accordance with ISO 4217 standards."},"operation":{"type":"string","description":"Specifies the processing operation type for the payment method: either 'authorize' or 'purchase'. When set to `authorize`, successful transactions using this payment method will transition to the `authorize` state. Similarly, if set to `purchase`, they will follow the purchase flow."},"operations":{"type":"array","items":{},"default":["refund","void"],"readOnly":true,"description":"Specifies the payment operations that are available for this payment gateway."},"is_tokenizable":{"type":"boolean","description":"This flag indicates whether tokenization is enabled for this payment gateway. When set to true, it allows for the secure storage of payment details, enabling future transactions without the need for re-entering payment information."},"auto_debit_enabled":{"type":"boolean","description":"This flag indicates whether auto-debit operation enabled or not."},"tags":{"type":"array","items":{"enum":["e_commerce","crm","pos","invoicing","subscriptions","marketplace","mobile_app","ticket_booking","donations","government","education","healthcare","insurance","logistics","hospitality","real_estate","retail","telecom","utilities","demo","test"],"type":"string","description":"* `e_commerce` - e_commerce\n* `crm` - crm\n* `pos` - pos\n* `invoicing` - invoicing\n* `subscriptions` - subscriptions\n* `marketplace` - marketplace\n* `mobile_app` - mobile_app\n* `ticket_booking` - ticket_booking\n* `donations` - donations\n* `government` - government\n* `education` - education\n* `healthcare` - healthcare\n* `insurance` - insurance\n* `logistics` - logistics\n* `hospitality` - hospitality\n* `real_estate` - real_estate\n* `retail` - retail\n* `telecom` - telecom\n* `utilities` - utilities\n* `demo` - demo\n* `test` - test","x-spec-enum-id":"397e40e715a6be71"},"readOnly":true,"description":"Business vertical tags assigned to this payment method."}},"required":["accepted_currencies","auto_debit_enabled","code","connector","default_currency","is_sandbox","is_tokenizable","logo","name","operation","operations","payment_services","tags","wallets"],"title":"PGPaymentMethods"},"description":"Provides a comprehensive overview of the available payment gateways, delineated as distinct payment methods."}},"title":"PaymentMethodsResponse"}}},"description":""},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"field_name":{"type":"array","items":{"type":"string","default":"This field is required."}}},"title":"FieldErrors"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file diff --git a/docs/developers/apis/get-payment-methods.api.mdx b/docs/developers/apis/get-payment-methods.api.mdx index 9c6a952..8012e3b 100644 --- a/docs/developers/apis/get-payment-methods.api.mdx +++ b/docs/developers/apis/get-payment-methods.api.mdx @@ -5,7 +5,7 @@ description: "This endpoint allows you to retrieve the available payment methods sidebar_label: "Retrieve a list of payment methods based on filter values." hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: developers/apis/ottu-api custom_edit_url: null diff --git a/docs/developers/apis/partial-update-payment-transaction-checkout.RequestSchema.json b/docs/developers/apis/partial-update-payment-transaction-checkout.RequestSchema.json index b22b050..1aa1325 100644 --- a/docs/developers/apis/partial-update-payment-transaction-checkout.RequestSchema.json +++ b/docs/developers/apis/partial-update-payment-transaction-checkout.RequestSchema.json @@ -1 +1 @@ -{"title":"Body","body":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"title":"PatchedCheckoutPATCHRequest"}},"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"title":"PatchedCheckoutPATCHRequest"}},"multipart/form-data":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"title":"PatchedCheckoutPATCHRequest"}}}}} \ No newline at end of file +{"title":"Body","body":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"title":"PatchedCheckoutPATCHRequest"}},"application/x-www-form-urlencoded":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"title":"PatchedCheckoutPATCHRequest"}},"multipart/form-data":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL that links to the attachment associated with this payment. This URL may be included in email/sms notifications sent to the customer regarding their payment or displayed on the checkout page to allow the customer to easily access the attachment."},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short URL link that, when opened, redirects to the checkout page for this payment. This URL may be shared with the customer to allow them to easily access and complete the payment. This field is only available if the `shortify_checkout_url` field is set to True."},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead."},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. Note that if the payment transaction was using API Key auth initiator_id can be set to any value that corresponds to an existing ACTIVE user in the system"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. This parameter is only present when `generate_qr_code` is set to true."},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"A JSON object containing preloaded data required to initialize the checkout interface.This includes essential details such as customer information, available payment methods.and specific transaction details, all formatted according to the Checkout SDK's initialization specifications.This field streamlines the checkout process by providing necessary information upfront.enhancing user experience and efficiency."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"title":"PatchedCheckoutPATCHRequest"}}}}} \ No newline at end of file diff --git a/docs/developers/apis/partial-update-payment-transaction-checkout.StatusCodes.json b/docs/developers/apis/partial-update-payment-transaction-checkout.StatusCodes.json index 84ca8d8..eace2cd 100644 --- a/docs/developers/apis/partial-update-payment-transaction-checkout.StatusCodes.json +++ b/docs/developers/apis/partial-update-payment-transaction-checkout.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short attachment retrieval URL. Max length: 200. `shortify_attachment_url` request parameter should be `true` in order to generate it.\n"},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"Short checkout URL. `shortify_checkout_url` request parameter should be set to `true` in order to generate it.\n"},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead.\n"},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. It is present only when [Basic Authentication](/developers/getting-started/authentication/#basic-auth) is used, because [API Key](/developers/getting-started/authentication/#api-key-auth) Authentication is not associated with any user.\n"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time.\n"},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. The request parameter `generate_qr_code` should be set to `true`.\n"},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"It is a JSON object containing preloaded data necessary for initializing the [Checkout SDK](/developers/payments/checkout-sdk/). This data encompasses vital details such as customer information, available payment methods, and specific transaction details, all formatted according to the Checkout SDK's initialization specifications. It must be passed to the Checkout SDK constructor without any modifications. It will be included in the response solely when the `include_sdk_setup_preload` parameter is set to `true`.\n"},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process. It can be used to perform subsequent operations, like retrieve, acknowledge, [refund, capture, and cancellation](/developers/operations/).\n"},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment. Possible values: `created`, `pending`, `attempted`, `authorized`, `paid`, `failed`, `canceled`, `expired`, `invalided`, `refunded`, `cod`. \n"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"CheckoutPATCHResponse"}}},"description":""},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file +{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short attachment retrieval URL. Max length: 200. `shortify_attachment_url` request parameter should be `true` in order to generate it.\n"},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"Short checkout URL. `shortify_checkout_url` request parameter should be set to `true` in order to generate it.\n"},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead.\n"},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. It is present only when [Basic Authentication](/developers/getting-started/authentication/#basic-auth) is used, because [API Key](/developers/getting-started/authentication/#api-key-auth) Authentication is not associated with any user.\n"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time.\n"},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. The request parameter `generate_qr_code` should be set to `true`.\n"},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"It is a JSON object containing preloaded data necessary for initializing the [Checkout SDK](/developers/payments/checkout-sdk/). This data encompasses vital details such as customer information, available payment methods, and specific transaction details, all formatted according to the Checkout SDK's initialization specifications. It must be passed to the Checkout SDK constructor without any modifications. It will be included in the response solely when the `include_sdk_setup_preload` parameter is set to `true`.\n"},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process. It can be used to perform subsequent operations, like retrieve, acknowledge, [refund, capture, and cancellation](/developers/operations/).\n"},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment. Possible values: `created`, `pending`, `attempted`, `authorized`, `paid`, `failed`, `canceled`, `expired`, `invalided`, `refunded`, `cod`. \n"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"CheckoutPATCHResponse"}}},"description":""},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file diff --git a/docs/developers/apis/partial-update-payment-transaction-checkout.api.mdx b/docs/developers/apis/partial-update-payment-transaction-checkout.api.mdx index 5528732..a161e19 100644 --- a/docs/developers/apis/partial-update-payment-transaction-checkout.api.mdx +++ b/docs/developers/apis/partial-update-payment-transaction-checkout.api.mdx @@ -5,7 +5,7 @@ description: "Partially update an existing Payment Transaction" sidebar_label: "Partially Update Payment Transaction" hide_title: true hide_table_of_contents: true -api: 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 +api: eJzsvf1WG0uSL/oqeeh7j4GRZDDY2JwzMwsDxrQNpi1sz26zL0pVpaRql6rUVSWwpvde6zzEfcL7JHf9IiKzsj4EwnbPmp7xH1vbSFX5ERmZGZ+/+NtaOjOZLqI0OQ3X9tdmOisiHV/PZ6EuzPVML6YmKa6LTCe5DvDYdTAxwZd0Xqx11kKTB1k0w9dr+2sX/G68UPy20okyX6O8iJKxuuCW1GXZ0lXyhz/8QV2YbBrleZQm+VVylfymDubFRJ2ZYpKG6jf13vx1HmUm9J9Tv10lv3W7XfoPr3w+uDhVb8zi1/XHobkxMeaUPx6bAl1380JnhQkf63kxMUkRBTTdx3/Qs6j7xSy6+H5D/aYO4ljNvF7WdTiNEqWDwOT5huKeXuo8CmiMD+tsiPdcV4NDnahgopOxUUJjlZm/zk1e5AOVZpUHTDdIp1OTBe7ZfIDRXCX/ojY3T3RhbvXCG/nm5j6/P8+Nmo2vgzQ0AzVKM1VMjCp0NjaF+my7HfP71dnYfuw/ulNaj/zxBrrd39+PklF6lbxKM3VxcHn4uiNLnqtAJ2poMJpRmk1NqHSu4jQZ4//ovtbtVYLR5UpnRiVpIc2EPerkKlnrgCP11BQmy9f2P/9tLUqIS4vJWmct0VOztr+WG5r2dRSuddbyYGKmem3/b2vFYka/FlmUjKmhojAZXv9/Pnevrm5//af/a+33zlomDLa2X2Rz8/uvnbVCj9HX2qEwujq4OF37lZ80efEyDRdoP0iTwiQF/qlns9iu9F9ybIa/NQeSDv9iguau6Zss0nH07yZTRapu0+yLuo2Kid0w3n5RUZIXOglM3sMqHMR5iiXOLeeoUBdajbJ0qtJiYjKVu6ZztJ3rG6OipEjb2g6HqtDD2OyDUhm4oIhMTpObpnOeZp2iWGFdrO2vhSaIpjpuzO29mWUmByMx66WFjhW3p9JRhR+8E6ajbidRMFFREsRzMAeeC9K8fGeeBROdm1BFhZnm2C+5yW6iwORqOC+U+Sov6mShdBhGaFXHamQMPRxMsAfynrqcGJXMp0OToWmZRa6m87xQQZplJsYxRsuBfgfBPMtMEix4S/WuEjBQ5cs2MlVpgj7tKypKZK5EHn+pcxWaJJ1GCW0H9Tq9NTcm66ioUGFqctos47nOdFIYo4qJLirkpCkMjZrqEGuuikmUu247shkzY7erG1CQJjcm4/MvzUBJOoPAY/k8ppMcR6IKo9HIZOjJvTo0+JVpG/bU//4f3a66fHf0bh9H10QnRTeOki/2+cjkaqbHplM2UHaWG6ZCt/svTGM5xXKPvDrL9GKts0Ys0CT77521IipifCMnZOtKxBGzVf04VNTdqocibzpeSa2CeV6kU5MRcXMTm6DA9pMjsbJMaaZwJaRZ9O90evTUoX2ZdnaaxAuVJkZdnNCIegpHrncJlVfMN19H++pDLoPFhYHhSW/MVhOde5cLZsI3oipSGc733761Meg49seRy07jFf7bmknmUxzQ5tpejHS8s6gihyEO7PpG/NrNZybo4vVuBGlHhzsvnj/f2Qr2XuxtjbZ0K4uglTtOK5wiUa5GkYlDlVUPvNk8m6V5422dhHbjYW3TkcqxuXWsZpnphmYUJSZUwSTFidZTBzc6inE226/21aA220FHDUpqDJbvvlk8H0cJbz0SCaxc9l7ukJtcHXcPnbxBj6vQFDqK83I/DqM4jpLxtQ7DzOT5/bfcuckLE3o3kruQDrgJvryW3E6NOymOErPddtZO9de3JhkXk7X97SfPG3ftJJ3HIeg+iuLYhGq4UHmRGVOo/6kmKVgPw+hhiujiycO7OCivG+3PDLTWQTDPdLCg9oOoWNzT/O5W6+URFQt1S6c3XYz2wIhyFUc3OIPBX5kZR3lhMhNSb3mhi9bL6c7u+njLcq/t6FHOQ1jP06kpoqlc0LmeGivk4fcNniXu+mzh79qDV2udtYO3a521oz/jX318HOHjHT5O8fEnfJzg4z0+zvDxCR8f8HGJD7z7Eu++fI0PNPDyJT5+wccxPuiRP+IDDbzEay/Rx0s0//IAH2j05Ud8oKNT+vUcH+j8JUb6EgM6xCNv0NEhmjrEu2/Q0SEeuUTnh5jRId49/Dd8HOID7b2hN9DeIT33Bh/o7TU+DjGjQwzjkNrDmA/R5RGeO8Loj9DAEZo6RqPHaKqPAZ1gHsdo5Rjz7ePdY8zyFd59hTdeoYFXaO8VnjvBcC9ozPg4wTxO0PwJGjjCxwlmeYI3TugNTOsEAz+5wAeGe4I+TjCME8z3BKM/wehf44fXaO8jWn6NX19jLK/x2ilW6xTfnaK9U6I4pnCKfk/x2il6O0Urf8Sff0SXf8SvfyRKYoJv8OcbjO8Nfn2DVt5gBG8woLfo9y2I8xbM8BZdvsUjbzG+t3jtLZp/iwGdodEzvHaGBs7wyBnePcMwzvDcGahxhkGeoZUzvPYL/YBFfoVBnmEyZ1iZM8ztDOM7Q79nGMsZxnyG587x5zlaOcfAz9HHOV47xyPnGNo53j3HgM7R0TnW6Az0O6M3MNx3aOoC311gzBfo6AItX+C1C0zhAq1cYOAXGNAFOrrAmC/Q+Z/w8Hs09R59vEcr72m74Lk+XnuD197SjIhfaEHx5yf01seffbTXR1N9PPyefsAjfWqFWBQU6mOkfcytj/Xoo98/E9fRG/g4pjWi50DJPgbZB9v2MapDDKiPaV1ipJf44RIEu8QPl+jtEr1dooFLNH+JoV1iVJcY6SVGdYlVvUTLH/DwB4zggLgdo/qAEXzAwx/Q0Qc0/xHE+YhHPqKpj3jtI+bxCSQ5Rue/4Nc/47U/09n0b20yR/VAPfTOUD4ZO+rzaf+d2tl+9qy7rQ7i2UR3n5DU8+v6pChm+f7jxybp3UZfopkJI91Ls/Fj/PX4tP/uml+71vzaRk99iuIY99uNjiPSpJUea+iNpSWGO45M3msTiZ5vPdvbffpsNNp9sb33/MkLkr7TvNDxUv2mciE2jEL0LouT61O9UBNc+qX6ENObdD16OoUdIi6Rio7+me/N8mLpiCzwaynvi0RBckqmkxCCSkrjYX02jt+NyJZQF1mqMoYVsUTKb5NxSt3yovLq3Q0X5murOl0l3FGUz2K9UHi6o0xv3FOPXoN2O1v/t0pHo0dyv8Zpdn9jr81XRY/yQjhbkNf2H169evVqa+sRdBL641GvajT5w/rng+4r3R1tdV/8+rdnv//m/7nz+wZZU0ZpUlzfmmg88acYJYUZm4yGNdLzuFjb39tqSBuH/b7C+11+Hzw8N2qdhre7tQWRZh7rrKOebm2pqQmj+bSjnm1tqdxMo2Eahx21t7Wl8K+Nnjrinsjysbe11cJIRLoOL4fHPi+FZ04LM137vf5WnStaXnwnvAZb0m0WFeZdEi/YvNTYHSbrVrVJZVlW5C1RDNUsS2+ikEVWLJ0V63vQnFRtVL2/icL8O4nZ89ksXqhQGMqJo0YHE6vv9hQGaa2FuRI1Bsp+rW11iyOGdvGj+vZ6ZG02IdscTJSpPPxynZtiPrueZSZOdQijMv7fqzdssKHJtOVxkRqlcZze5grcQdaJpGDr7HezBIToRKXTqChESo7ThY5ZLE8Ts9IpYRJoZqHH7MM0jY1OWoxhzEU91TdkEBiAIwb411RnX9hE49uAdK5MHI0jaH5YLxmdysytzsK8pz5h/NLKwfkR65i8glCjQ1p8UxSxabMvQR/kZzSM3EV0Y9StjmNTWGuaup1AexXWy2Agi3Um8v7g4l3/8vriw/vD1wf94+v3x58O3h8NVKBnehjFpCCwZaeIF6p/eaj+FBV6tNGpKi1GZ9BG0wgqc+qYTeVzsjEQN/TZkqAGIx3nZqDW04xXDV+iNbBEZtRACDRQvFYbYHmsTm5JJgdfjc7mxiQqGildnz5MZmkyisZzq0Zlhm6oYAU7H58COnY7tZtHofEWUVpS64GeznQ0TtTpUQfEHmd6Sud0R5ki6G2QlQXj59XCjG0rbmlE8TJfcVrr2GveTZlpoJy/p7ofagzyKFeDNAtNdp2kg9pGqavAv3fWpqbQOFcecEn+vpRg6Uz/dW7UF7N4zFfATEcZrd39RPCsvWSf/1r01GVmWBLKlVbDWAdf1DD9ioP0XVHM1f/3f/5f7JbRPGYlvSh0MAFrlQs3M0E0igIFzwBYc4K2vGXLOyo34ymLLqHJO2zYC6OiXIi8eQPZs8O7Q97KCfR7xxEymccx3SVVcp3Z0bmbwdIjIr9EK6/bM0N6/ue7z46ZXqx6UMBELgzmnwB0d9+z+d0y3nkIbG6+Tm9h/YaHJN/cxHfbPWWpgHMudydArzq/FK408eUEYAZQ4ip54llbg3Q6i01BRmnu/CbS5D+4ODk7PfLOAbRGZHU38FWy01OnI7aW8uOwmd5NrJWO0A41ki+SYJKlSTp3m/gv6VCNIhzFelSYrHG8mwQOMzW4ODg9Gigy/vSukl32eNQPAqxxXqRubtWmYEzS8yKdathu4d3NYKwEi6zjKkwz3m9kqFbiPwbbz5Mw38C52nb3aIyaHyJvHxb4wu5jtpnLo9EUvrWo2NyknUpbdhYFX/jAy0hGsCw01MEXk4RqSM4hmQytyKNcVqFrV8GuqGaXU566Bc1VmJJ/JTHM9l+S9Fas+96ZQ8d0Nk9yJb4X6zqIYQTvwbCJUyQxt42TKpedcaZDrWTLbyg5GuDbUSIjiQuYTXiTaDb7BzS6vk3Z5O+syKXtElPine4Ms6GJoxuYLcm98F/RYHvfpL/dXIvO6M3Ve/tpxf1pxf1pxf1pxf1pxX2AFffIwJLKl9pPM+6KZtzO2ijK8uKag7bu7P7ZbtNxK7dYZoJoFpF6g9YUWuPbX//AttFY2bSZ6ii+M/6Jn7jf+9zoiF60cgd1Npukyb3L82yFpqkhiW5awYpup+Atkk9Ua2a3A/RU1r7IpZ7ZXY8zY6Y2OG6pvf2uQLhJGocs4RuYkcDxIqwy1VmFo9CLKLeic0gMyIFIFDBRpKzw+c3YMB7SbFhByK8SaYFVO7+Thhgchfcbf05Z24N+BqPDPIlg0YhCWKpGkcmcBd5RSpkc8XdRPjFhqSHO9MJkrLUduCdPjxQMuWg4yOYBqVtpTGKbTuqduDC20Jt4nqdBRN9RT17IEtl8YL2IkhvEmnTUJBpPYmhZ1tpGWhGajsiKeaOzRVXhaumyR6GcDbMRhwJe3+gsEo3XFzFH0VeDkE7+OTYrhfQ8ffpitPf8xbPgxW6w9eLJ07al4Qib3OqmLiyHAxMRmUOTItqQkdzXXvEtG7fLxeup42Q+3VcDGjKCceyYB1acz4rrcIlMX4ZR4oE2oZ6iqVM/VrDkmyqvkNkmSyk+y6330CDmh8+yr7MoW3zHUEYRNCUa0Dwporh1TBlOkyTn64v6neqv17LaM5NdB4sgvmcAS0JKL21HYXc+SxM11V+j6XxqF4+0NkTKhtFNFM4RUiWr660bFGLD9KCBXMNilt3o+DrUi7zVbyXdrO3vPHvWWZtGCf+13TY8L6IUu3RoiltjEuakxjFEo6DAWCbKPd2/ePHivu45yrYchCUAN9/KvyoUOwjf0xRUlgSVzRhl4mvBiugoxp1xa8wX+ge8LdfTNCkm9Gf5r7/OEfyXlQ/pJJnDVrTWWVsYzT9QsPJKm3u0F+482Xs+NFsvnmw/H221cEdEwYoFsZ/Yid18PGrkTX6g85M4SxFn1Q/hPtt999XA0QI7nYiBfzA18C+ZP/7pCIA/KhTAF0yCQYeuogHRYeDcOouZGcCsiXEN5gniycN5zMeLm9LA6vX2wXJsy4Im4UG7pgMb0bMIKY9juqshIQh3rnXWvB4ftEZ677neero32tp6Ej7XzwPf6VvpYHmkpcQx4mIrWdQPcTYZWVjdClnL3b4auB4Gal38GxudBv2Y1AiaLKmBPz1yWPrlJo5N9pDAgWVSaHPCGVnEKBykyDSbC0nqbLkr80maLZdwazat4TAzNxFrKBK+t6SvjsrnEUX+09lJxH2UsxmJjwZ2G/fqYjQOT12YcZqtGvl+oHa7YTSO2EmigljneTRaWLnCG+BwnuOCzq2z2zLGOIWf2A/3jxC9PTJZ3hyfFwHuZKc+L2bTm3Iktkk9hJPAH07HigklK0bsSPSYpRR01lr7benxIKmIfPBWZToocGUhtD0Zt13vNjXCBo2bXC3SOft5g3lm4gVb8ulAyefDnI4JeGDnRQTZWpzy9k7wBF2akvN0SeRyLtHNAZ0xJoGbROe5P0L4h760ytcjf6Gs12yaDqPY0NgsMfKOT8ouy5KVVmzCR96p9ky3fdidpIHN6eDB6IAUG1Wks+58xu44Gk2hkxC+jygJ53mRwSIPsS6wL85MQoZ62xpeQuA7FPAZOah4lRU8FudpYfbh+Fmk80y8btadksZYC6wLLYeltzWBk/hfCpXQOKKCJXJheT7l5IIazYt5Zsh7Js4nlxWlxlk6n9lbAF6LITvw6CpnZ6bVxJYKW/MsatmtiF3hg4Fi2+kARuj/rGDnlmsbxnnStYamEgDC2m2SQh1hHwBSO2hdqo7AzIx1FspBULIn34saeU5Do7QLgycrQ3qbkIfEKh3WwYfI9kpMPqwVQ8+pyT6Y6gBYDSo9Af6+oM6COQbEX1jlhmcRlezJihr7rOnUdWMoje+aicVXR099gKQhfk54oPP5UBIt2FeK1AoKuMlMMc94qh/ev62QwB6gvCBQzqLY9FR1/a/5/phnd1symBMyo8PlQUsHitqicRBTwEHspC2PLep6pnAuy728RGhDFqjBOY/zaf4d3EMLx5eXaWcTcmkjuqjaXpEqo/MoXrhEl8q0ahvrej6jqKYllP32TeWSb3SM9QCNTKK4tzIIgswMWTVUb/1f92fh6Le/zMz4t1ky/i1MA/z39be/zMa/fY1z/Pf1t+JrwTF7kszRNvq7GYEvTZxZ3EJl2/By4lv+joyYpKTlYibkcDRKVtC3vG3kuGcFNkrGPXWYJizMD1O5CFm/qbioWfejwwIZf5yNSUQ2phQTI7AKbjhyynspb5wqGKpYD00seqHOwmteF2RcXgeI48si/RA5cBol16Jvw8F2n1759C7Frs8Xs3jp5LnS7EWKNtyMM5NFaYgLlZTPDl+RCtORA7oSUuY24+mINIgiVTtb3pvmq0ZcRIcayO0jNCnja1CJ+VooUnvUbelmDGAzDNkTboMEOIPRCzyS/jjGiKIiXNI5aUBRrgaIP7gOzTAqBjRUrDKnuLqELEiIuHgpdMCEHTjRpRs5kenXgqR6T0Q71Fl44Nb50C5zU17zbhTNEYkiebE1qRSdsnks/BSkCU88l33O60C5mVPDtFy6IpcTk8OdG83msZx+muI4+biLcTClI5CNCOGnHU5SiG42ggey9FhpcvyHPAIE0M2Y/DoMlaYgBfrFRQb7MUMvOaYh02N71QyW7Y9Bh8gCZwWLMektn6igUbeYJ4alJbtu5VaHXx/6xKKjcKqkJEuWPQhZ6cRG0BVtamrKKQswTFIkVjDPsBestJezHJFF+Rc11YkWyXqWIq7E2PCiY2Z1JM+zSIfYDoYwCOJ5jiPDho7QYkL5yShQNqQ0XZKySb4w02g+dcuRM0WmFKiCDWRJxc1QhqdcQr5ASBmlsL12C5hyg8wgmoy3IYmqH0/7B+oCrJHMp3KbmiSfc3ymLjxzb0kwjhHk+YBEoIsLOE5FkrUye0+9N1NDZiTY0W0EFBrJjT+NdD6eFKN5HC96ql9k0Ren0tGkhzqmFbSGMLtAHVmSqIjGEoWD8cyRCWq+4iSjAEYr7eKMl7WC5I2FuryTFWW3Rrl/IxC9+f7JkJhb8QZAfMZvk1QCZzjl1VPuOmtWgriGBPFD5KlXGSEJhMoBDnzI4po++2Rra8vv/O8jzVGKKJinIyGfM5PgLAXzgVpOyKuKUS7ScKlsl0905vs1fFnLSWDTpuTFpyiH5vm2+oqAH0medKkgiMY+oJlFo4XDLAHFPL6Q++wym5vq2v4Iwjrx2NGuNnH8TeFsbt0vQE0Xu7OQBPLKzJ0KSdKOm7HL+5dY+tZzXM41G9ZGi1Jpm9Y/vTGZ6p/1cUt8mugiP5jNOpSWPWiy34BUd6NZ3bSzux5GWTFZ1cngrmJLmyPJOn2JVpp+wooo5GWlhvIadV7hEEm2JhUQlIF3BtGU1srhrBPsPCsW6sZkTu3oyA3NMa1EAzYpuMWcZekoikleLTVAC8Hg4nPlShz88ssvv3TPzrpHRwORjR2ShJBvdY/zUhklX0alisuZuCjKvWyBxJleaqoXJxUHJprB/tEQ6WwjIO8o0/MQF6Eka9heiBk5itzyfw12gelXHSKOEGsDcDoiKRjkocw7blh8fzR0PidrkGXgtATH0Cw317zw2Cb8zecKBarwBpWfHm8QgA1dMzgvaZn9J3rU4MAz29gx2Bl11FTTvTmocsFAbW5aMX9zs6feQdq7jXJDVL+VOJHNzVSi5zc3l/haXbN3h2G0efxsoEVpSrZBBlVgg/qp3NhvMOzPk1Kbl12HJpy/WRazw2vQwUnUaVXlm8vqMYpvKKhDe0QjlRhcL5rSjdoM25ZWq/j6L/1j/fSI5I07PP4Vm5McCdZ/AcP7Ii/MlOaDhgTjR5IX7HN3tos9UMYHRBS1zQECUaI+F+kXk0hSWZWjSbbs6iTs0jP5Y//Rxxs9wseqAwGQPGq5sNXec3p0D43vjNxpQWzR/225cWlsUHuScSUEqGVx6pRiFeWe4dIJa2ZGVIbEj3ynIwnzLrJoPGalNI6CL1YTtYEJrSTD2lYGTFzVOPhlxyxdoNVugKEJUoQ868rp6h3PIkG6DXdLeQGQTymzRL15ddC/RPNvzo8v1Tr/STvf3zVqZDQs9/TgBShAiEfsw6FEFl6LD0evdtRUz2Z2cQbVNR9sENNFI5LLHnotSTJM/e6wQRp33x3PGgx43Rpk3xDiPGs68+1d5+ajvPG8sAG533SyaJXnGCzOukzKIKbmqnNIE33tpO3+0Zu6pxWzDeeG4mNqNrt28bVLT5XTP5pLtA4Fl/FvS+J57BMYfhlE4zxzuQrndzoyJiaeYREjCWPzVYs2nUkNzSgVgT+UYfK2a9jJPlweUtLhVMOlfnT0+OzsMaRWNZnsT6cDyXYyakCWQGI2MnEOxNxoeyToKA33WacyEklSkGuDc1xCC4skPqyZjiq4Z9KjvzqDpR2Q4lRI+2ipQ8BwFTKBnFESzDOHC8fev8jhTdGRcu3ulwegjzUk9Ua24wFdP7qbGxw64GILRVaRRo11Nbu8TjsYJOda11Bg2KJt8+rQQm5NiP4rQpEf6aSztKpywgohkiOxnIYdsue2QGvlErwZqikzruYdbBGy2NhN1z72kR6n3gzL0GmyY8/ITh6NaluFAn/keoIJ4t4Nxya2ioWtOmScuHLRMYE1jS5ewPaYIJDo5cLuuA6LSCXt7JRK28STXeQ5ZWIQJJU+EtnH84C4rEZ/16rXr/fPzvb7fWzYREI7YXCpZPMJyGjhcoeKVG1uCsE2N3lfXa0ds82/BcY1/9ertYabU+4czJ9MHKHOJ8NUZ3cAA7pHqql5xP/39l+k43FsSoCysUmQ3Wiu/5rVo1PK/PwWcAYJVKJM8xaOlUWhp/k8kvZ9w5LlQQ9DgeXUfJYm8BKz0xdHHTnNilparH3fWt1Kbdm3TzmUzLzFkESCDuggO/26gcLwIwhCOAaUYcwkwf+lQxrTo6XYD49cgqMQB37ukkCXYkzkJ8S8Z5eULwod4vy6bQmI4A1FOaMIhylXrLrz2GZB83KR4KsMmFZH7ih7jgqpKYQjrWmNpa/PygjuwVbZgMzfONvLkBBaetnhLrCgFTgVspK1CTZspDa/HrOtHW0IPfpCvdoT179NK0ZE2N75+IuWYiKqW52L30mwISliSfkkskKcLBCuAJY/2LuCGHKwQ5hL4rlLfDk4vDz9eMx0sgGcpDRzGkgynutxNeIRrK1XjF4Mtvee7oXP9p6/2Aq3JXzcRi+aJqjHUoubHYj4+JzyWVE6mwbxjuc3r8uwnrLj1B9fLbX+b/aM1rTbatBK+9K2AU2aBHGRCCe1cBHl1OCaNYkNlKyIEA/xk9etnQ3Zyi6k8CbFOhDYcwCHDweojigSYU0EEfqXC5KjJIIUNlgy2nPSOb0+g3YW3p/xtakG0vlAddUh//Mq2YSzOqLvLnTEX9gx0YPyb/qBR4ivX9G/6EsZLb7lG46/LoeOXw7cX/QjTwU/fKR/0Zd2Wvj6vfxbxsOT5PHIhNs4/8Xu02fPd5+Eoxe7O8/3dpsiq01KE+0eBzGL1AzRQxGlHg8QrkoBHrKk6wi5Oh6VOo4wnZIanQoFOm7KHW+eHW9qTiFpO4vo39YNT0fJ5qbJsjTb3BSJhzdOiyRM+sWQfZbAJnfGts1NHrRtwoXm1a9xK5vb5m1Q8fROZeInw/9k+P8Ahocx6e/G7v2zvjD7LZyIejb7+3L8PwxLt/Hi7s6TFzs7O8+Hwe4oHG5rxp2zAuN55Wb9/df2XwjqK0rGeUvU4R/77879iMPARtVR8FZbIw2nfk3QdFIKmAj81GJHIJz5WwMzrsBT3biwbWfxWjh9h5QlAkbpqEeyVI866hGWB//nnYB/2fV55BCylmvtZdwK2ZcEVM80Zl5aPVzkDvstW0wvxSRDzItNFagFM5E24NB1Hh5WWXVw29yHEq6HJcqywkYZMV51pZb66sBGKA9qdrh0ngWlIY7VzXhRgvh7TTh2vqMN0tPgCHLM7lQrSW3gll2PVJ6AIuMYEQi2DSafYI+t5hNqetuQWjJOrLzbzsXWyeZkc9KCKIXBxgWI4xo0qOEuKjkarb8OQPhnFyf9ijFIbAQlkJoXGQAV0nwNEIuxs0d00QEiypa4b21QJMItsrmN6F+OUlg7AWazmIwnXuaHa6eR4Ox+uq4nj8HDTVWBVlKmdl8ET7f2nu1sP9kJnod7pqJMlU016wiVMZ37yg2dQr/UwL2HU7VshElkLRur5pwfWjt5SSDy3yAYcR7grl0GC3skaHer9nScBNliBg2suRaEnFfvR8pwrLABaMDyuDs/jw+vb7YfbZBQUwXmW9JMOcDKsCCsRuOE3Fj3N9K3j9ZLHti2JkaH92XTLWNdftfeXdinhsfsgUs1lcvZxExRW+FiPoyj4I1pxXCqkcK+o2b0EqAIORza9Uf8Zlt8rfPJChi8Op9YsngO/7ILytYsT4/TFWIPPvDBV0FXc4dgA/ShOuB6Zz6CMmh+oRevieJ9rmTUDIk+BDGAgzabRIEsT6NTYW751eemjuPxlq4vym22tP/lLCt/cxWxb+O2akTdUv4SX/P5SvELFtOZwhfsTv0Y5VptP9nZ5d2amAKe4RXc/DCVy9OVxrgde3Sv0AiJGLYFCrNHE/V19CZajlL6Wb6AvARLl/CiSmUvgaSxGxxb359lUx7mK24M70yvM8+yUbRPGRfQ0sk2mYsvG9GaQvbxlE/BQa0udG4rYFmfLr3EDIwMDRLZdF42A6siZNNpGpYRaOrUltPyZqvWjd1DGx1VmbjleLYrttKgCStjr+AW4pyWAocHbrpkG56k6fiHCCxjamhliWXnxe7o2a4Zbe08fR7uDvcqEovX1t0iSzl6kVnKNyG0eO18p9TSQiYCyVkuvehZ9LEhWPjw7EtWAWb8mojxhI6ZssGzKKlA0S9rFU1N8Wy9wa2NxtH9UCmrhSD2/G6TsVY7I2tnVOW0PDx4fyRSlv/OA5v0fyRP0ij9xlkHnN1cnqL1KeOB8++7Yk77BzxltCWJ8/e39RZxe7uKAAAocwlvN3GpvCY7lcF6RwrPl86UUbpcOqmTgoBWyuCs7+CtSozXd3DWpd9Oha8uDn45Oz6/vD45uDz+dPCLXOl4/FskeX6xTmv+tnmDO/Je1qi1lNSXdXoIdpIbSPsA/EaE61uW6I4BXtTPilXlDLrSGotYH593WDYPuraTaskY7xQKlp3hVaHAe2qJVODf6t8uG5SzrIkDR25VG3RbSQzw9uwD5ABirCoihCcIcLTZvEi7JLQ+RC5ghlxFJHjxbNs8C0b6+fOtvRe7288rIoHdQndJA6yfrx9gnEcY54ZIBfQyBALZHd8kCwh7sf2qhVrrJX02mqfUagfKRUVaTTN1+PFjWUim7KDCGk2uKGkuPEGUKbfIsoOl3ouLWr7woBxmS8focz/tJUpyrHCxZDyuxMh20A/i476e5nOugv2dAm3OLa0u0e6YJ8+Gz/d0sDPSz4InFfb1G7ubib0JCPd674KH/aa+n5O97r6VactbsI341MgKLCrv3smkS9uv8Z3/XPUQ56dXPq5XYdNy4Pcw6sqcx/j5KzHdUO/q0SjY294zT0ajnbDCdNLO3fz2iR7qCa/xK2Azefn7OCyf6BmfXYPafP9ZeqKOP0jeDQXvAexw6gB5OZp8IGMuKczD/mgfGkDQuEqkDYsig8xikgacf3Ugk7ERhGIllLoRhCWZFFdJOirBEcqBD5oQpfziAwpSD7hGvPQrZSsGPBuZZJ/PyAFDHgyjoqdsRSMOw1tGSw9n1ZbGKMN5Eegv0/RKbHB1BApp/CcpHSLFujWNzEIFIGQwjW/EU5alt+ylIcCq0HqpEeaaq4GtvdCjwa/3er2NgUNVjormpvKJ6G0sR5QlpwH/7ksptt6VOoPfh8PEFpapuZQ4yk8ULfND5YlcfKUefYRibiVWORB4XP5h4P3YYGRPE/cL4K0a0rU65+XxfMz3dM1jwL3WatB97uruvx90/7zVfXH96z8Res3qmWN+0li9FypykCQmKNIHeSecMSxvafZRrhC6kcWEcecSvmAXEVeu3RriOWZQ3SydF8Y5mSHmcBwxR5hk7pKxFeMMA5CPufhvkCb5nL3XKmeoITezMr+ZAziBO8bJXF76nIvKzkyip9QAHw9tUMh3GWXv9nJLsYoh0GWa/ltbc9iOvOPS8wZfEkP1rr9A8kBQzGJoMvZCDyhNahDk82BA3t0wpXIqhUS5U5kXZLIzdHFmYoD0Iii4gL6U+jAu1o1OO8Euz7dNs1zdypxqC12fIk/Fm1xPHf8VPnR440tScc7NNM2LsuX8fwkKu4RO0/lsa4yXTwkCAKZdDnHdw/0RItcG6paAUEuJ2I0n/HG3FPH0GMenrnciHbrdiHPqfhqXVB2aCadEeV5/2SkoIATrk/BbhYp2Kw7ccAZtm7FvjPrsBldNvrM4IY+rGzR//Ac3ug1355d9d2/ybkn/IE0AZdL7z1vwXoQyr948Ip/sHxJRVRkbB1dxS1Jofs3Bf692eDPqlyB9cQSMRKn4wUjI5BIkCkb3eoAMVAEEc8tU46DMSFaHpGQnCmUfdp9s79FrtXzCHaApm1Xz7I2b0rKQnjVu7/pBtmYvNEpkIBuhPjRS8g6gaWX6pe80GxlDyUN4oX/0RhKW+NUybMim284yQCEx4Gg4z2wQe4kWIwnAlCcCw6ydJSJ2HPJqNYKARnAsWVeUX5JmszSjTCUvvyGhZGOjOf/9JsoJUYtTrvxUezeWD6dceTOiaAKe9EwzB5RYSUnYRaIBM1UUtNP7ThxNuuduxoSGI1NCO0sYzPXzIHHr1gxn3zQwvPiQkeU3rTCBP5YAtbsCfXZ4it79cBrYWMhmbx/ev81XndFsfL0CuZdWqkDLFycqTin3sJhI8CB/gRmThjIvWitJVKj5uSQnVXz89YFwQwNbP1OUSKSZkbareTBRovofTwRwhsQCCu9z6DSMf6U+meGFiqaS3mHRJjtK8y/WZecgHyq5hC5FS8oJ97DuQCPltEgG6cKvR1xgby4jdEkrAodDUcNLePoeKpwB861Is4UjA2Mb1MF4TEQdDhcyCMbI82ZvgyE5876ozLhb5qK5tEwiLqBd16OSqtXIVCeNMiHcKzkJJiSpZTqnHDYMQYDeLs5PMIQ/XhyfsNju8qZRDTmTpB6MXArhDM0KSKSU9+2Ho8h+IV5Zp9Mw1qw+RIk6Pif+OHi/Uccle/q0vl95AJ0l+/bs9Ahbt2XnvrdXa+5SoadRSBvYr8PLdpvZeIqYbRfyjIsxTm/b512iz/Oitl+/hELWIvp4h4VtoIoPdv/ObT2ivCJ9Loi+TKCtJn9KsG8FtON769v/LEP/D1SGfnn5X6ruHhmHelKrG98I4xd29qwKVkGshDeX9eYtPKSrisnNSa3gG0KANKrOiY3q7lEymxdyJjc9rawJdNhw5Nti6qI8C9RNMVikMys8iV2o6TuuuIzzV2n23h4K9+uZBwnBzy/8EFQtoEh1AL7QZKXln/VKplg+YFL01DEKwoir1lZk8Zuv1KES+VgrZNXGDdXAV4Kg4ZLY41Ra/9waeJeI/b6BH9KifDwqWchll/tIvb6eCpSYdDTiBB1B7sWNoG/MNYV9rOREeKLNs63R3ovt5y+2n5tqLFbZQ93rQ3WY5GfJq7LYwWwdcqMY9MoH9ymA34GBMjQrqr/y/oBO7nwxjMZPCbaRrQfgtbqvTpMQrhoLxFo06x87gZQTDXDl5PrG6Uu1yBXOLmiHp++oWWw0wXyMyrX77EdkPAjmy3kpehXStdGHRLqK/BeacM7oy9aUVZaFWF7xgcEUvQotnrM357mTw6BlN5RO4YOL0yYpPpdOd4pgq+D430MWN/KuM+tskMTsk8WHnN5X69sbauDKhAzEPlZiyXn4f3kV3mpqpdaeWn+ywcLzxYlAk+OEB45pMv4O+LYy3Z5HK7l5Fuaggmr7I7AhLjLTnaWEXV2Hiw1QpUDZRMUagolaR1F02nUg9xT3kMmtAEQ4wnRZBTGnYkVTXMG6AMDKLI3jEg+v0ieXSS9hUk7HiS14zihSuVq/OLg8fP344sPlhurKIIHoVeHwCq5MQpoLv8/+KX6LEwLzalU8b7KPKpAv5Fdcn+qvapugXjasyRl7yR2tK1jIRHaVN70yOVIR0SaBhUvT5SpJUAz4aTnPFYRpT0/yYFB+ACLxn96zgOhBERNcyrdjEdsWZbYVhLg2IFEgpJOCaI+MvIQqLvMDWytF1BiPwDZQk6Y2ogpgCV0yFi+Gval1BJuBBwpUWMDidoVkRcMMZ78xoFJZ0Ja1Ei8HMqsoI7yRamBe8KzQFCxK160ZTtL0C8sbXLqE/FFc6ISSiOd5T/1pzu4seyj6UkyZNcdJ0CgpG5hrRoXjamqEzn1N+dUW+2JgvhaZHlTadJp76NXNqMpES24ZpESnt276RB6g9rmbhtZafba27U887RomnxCjdAtwGuzjjcZeEpTvpSg032SkKgX3/tEbgmChwqlkz2XawCNGe4aeLCz0jK0XVc9v5aAGOJ+tbtiUf5vGruXG/ntrPnqWgaLuCljup3AASTa2kZ1vefmOPQ8VpaFX6ooBLY6A8rk2SMU+buHipEjUzxIqy0uorAKZ5/i3JPGFzzm/N3AZ3op5iCtaiJwjtS14+iUyt8hulhnqSOB+ti4CWuCuVzpOk3GOyMJBTYsdVFqnC4CrbZCe12ss939pLOFKtOe3owP/RLz9eyPetkK6Ptg/avGtwnLfZ9WDOTQJlUIpvLKTvuP4HBEIxcSgdg3XAUpNnjwqHAByxCiJBI9ahslakEQdFK7r3hHDzc1SqrqHsIbyMErES5Ez9CPHfkgyPtcvFhgCV3lMab9sve1jRVzL+4MTLGBpBa+uBTUN68/KA5dv+4lm9u1oZjZKgSLsj5Mx6mwygEBGeCyZHkbBT6SO70bq+M9nA7y0irA96w/5inbGPr/Q1jfY+mxzvh2o2eJ/kHUMbG4HVNogoYih1Atgy33/kasE5yU/OHalLXP+7vJ4/24z11Wy3ft+O9dV8qS33NBVGWHddKWukgNSJyGimdHIBBZCFZMrZTuP95cLIUY5D0o5p14E6zCXvkWb9vU4Db5gAW1tE2uwtfIHWftDE5uCDfGl+Z9lMYUw8pgKPcYEK1RYa28OQTJfmuyS1xbHX+rG2uDKEYHe+r3/3WSpIwpelkJwbu15Peiel8bU2enRujgtNrghWaDq6pSg+He0vdNTF6wyJw4/dMnjRIs0weLCQucVR7WbEtcCoKByMWzZQ/Aq2QVLBcbyeeQQpDscTU7rSEVutBK13HfmOB6yRZbkfvFkavvWh/dve1fJU6nWXjfxF1KO0FunDrmKwDgoPgFkWlePLxcTSSnswQJQ0/093/AkCkOYxKIkYKIzFmpufQhePT8SDm3YgSv8RCvMvOlgVdPElsLzDsquepcY9W40sohm7kQgRLNUkW1d8oEcR3ZVH8t6SAm+rXHkS1TChqYn0bPsiaxW4eUHh3L3tihq5GnEhBQr2XaB0Xfu3Q+q9FCKxC03YZSBywJWSRE0TZkcFs9sqIMvt4xWPZ3pwpWHEs4VQQVbLjPTFEttTSN0Zl8uH3RpsXB1qmSk4lv16n75cGVXCVssyFlrYMfoumhmO0eKKPEwlDoVcAI6yEex+VqOyA94jBKFH11jOdvErhKcU1k0ZQFeDoncPcaOXmZM53FEuMVVwsZGirDz8C18OPVUajAKCBvCSaDSgISDV/7qDPalnZrB0qIHSwNXgEY0FC/N9RqtmlepFnGVMHpxzXNaK83WWmWBJ4YqhST5LxI9jQLViopkqby5ud9kBXuEaOt0hmRJppIcjAhgMpxH9JgUJOWodhQ/n05TqTGh5kkcTaOCisRmkSkWPusLQxFjG88d7Sl2ukEhfolMZJDcJGfN3asUWF+trugR5aXdNoeVbQMgw8Dsb27SwuZFQPyI+8yemJyjzJnJ7gECmibhOosXFDYkF7uttdYgK9GSONaBXdr9CfbWNyklH2g2BudFZvSUythW8ja8LvpHb8BT0yjWzv2qZ7MsBTk5VknGYI2Lg95dpNjf3HQHBCy0fPFSLQt7/fYvDymJkEQFttQ5tWghRoo0hiXLg+3A4X4Qc7FOF89GwWizGcJmo0QUX7YCiuBrX75KCt9izGVUOdLALotDSowpRZTEAora1SoHEck/4qBJbYHcHGuWFPWqn1eJDrI0zz213J9Lx8kCYZRn8xndYO4q81ZK/FUNq1x9TR5yKR0Zdu/zXRolEg7kBz9L3Z+wudGuEpflsewU7lSTaz12Z7jLDi9Gk69clHdpk8mNd72RlQMkYvOt1KOgVMeEL4b6dumUyqO1jGvykaBeqbElpUvrE5sq40XnKrlczETv8a+QIalBQr7hvCjESkO8M9KB2JqjFisWb4p6lVs6tWqD7Fwl1qhJl+Rw4Wd9UKBfZPbVenUFLJE3rpIoV+WQk7SSrxgYu8vBsleJjSAnQTTWmS2rm0dTLkKwULXZsPhF1T4EMHSFo3Fzc/8qmUR5kWZMVtZ4RBLgJ9NRfU4eV22oqwSnZZQ47pVkHWIm99q1Ey5EsSvb8H8axXqMe6OQ1Mu0oBrRsb3iKgUdML9PLqb+RgKivUc7wqvUqppAeqSjOQTrBCzA86VXSCUNcUHUZbjyVXsI8MmdqiVbhnY7DfDI5LPIZhVkxmIoRcm4s0zYE4Uqb4yjZKHsppTqcXzWLmh3u1VOt6uEeFzqdrccnpyjZY87SCFOMF524vli3UNF8JpMyMeMSYgYVKNIE2EyMzEJVcqWW7YpaSwRXTHjsmbH/WJsyxl6lVTP0Iqk2SYIJHXXkbKR+vlVktpSaVwprWLmBjGitqK7kdlfHxR6qjPUQR8Uejhc8D9iOlbqtKADjG3fEeFyW2kRQ86tdExCADkqrP42MkUwUXk6pWw1YwOUuuSNHhArcdIz8p8hylqxeDyPwqZILDK1VGl3bt+yxFPVS4a9cgrRM5pCGhELU1Wt9/lFxFe4l3l6vJEhQC8VVZ3EW3crXyV04Es2lgh8pWaMw+0mCudy7yRsQvBuFKkaIpcN24CwxWwRLlB+yQYir3wxD6P0Ic7Le3zZ1VJH6YhWu0+9VH9r9WYvr/9MN5C9svPwizSmbNCtNUWPbO3x5V5/jIhd+fGi1cNpj/nvIcvm5ifJSNZ187i7Rv6VtYODpQ/YcJaRMSFObAejcZWQraPh2aNYFs1MAXXAKnRhOQrIWnwfcBcuha4WJ3I7MeSoqBgdde6br7iCY8TfWwhzfMuo8iIFkD0pTNWtcWj6hVc9Sojwqfrrcop44XFl6I6bMFv1y7lCoaCnEk6/SCj51dZb4+J+ZR47WGmhJMfTq1c0hNemmKOIjyFFgA+supGMo4C8Ydl+yFVGVxz2uvWSWPJgFyAWYjorhE5jU1RohHeFTpWvb93yUQyuNc1S7jSomZQKq3TQk+WviJzsjS1XPzOj2BV4h3ckL+zcWpygPI2+RWgsq9jyIDc395365wbu8Bwxbta9mMpzCurp4KoAWWwoo88Sfr148VLnlPJNHWdIOtVxjO2SXyWViEWZQ71+uR3VPqvqzN+H0sZgX126ahlRdWo9aTBy4dHa3x7WXUPN8vb41lbd5qq0STUwvrVJernSXusdUUjN+5Z6FhxAgDOReatZskVKXrg6F17ti7LkhUSgNkq7pKt51AJtzPazne0Xz8JhsL09Wsl/bQ0DXD3krpAr2FVMPCPLOWFf5IWHcTGmgu61Ms1ic15Wm4PJRhnk/E82RVsakiXa/nF/KZlGqY/Wih5L638sKfXh1gQ/nNo/7ilTk0rzQAWHjTqOAO7xnzft3w8arknEXhqD/7YV84bGHjgWgwJSqz3tpdbYj4MViPJr9n5dmzCiFMbWgPY629sMoWN5SbmkpBWCJPzr33kDMXcC7qq6/b1YOwkeK0qHHZKyo3ziqpJy2rULdX14jMLBkvixiuGksodt5ZQyN568gjQEOQK85P5acKiE/mHP/JBgcLH4hLM0YishF3WhDhoSBRvtK3ls/GQsyXBxegtDQmmbrLdQrT/M+FDW8iAhXgXnzZMXsFI656qJcOpYyAaIVmhjYySbOW71qKOa+t7K434kS9Pp1mLy9CT3inZT4Td7pzUz6Wyx0f7RmyW5c3flh0hNIvE3eD5YcXua0MKgisLSVFBcoL3T53rELU5FQgleDg6zQpC1G7gtWsmkWqpO9UidskYIn19KkHROPbFRukGQSq1ktjz5RcehOtuZCP6kNC0GHP+EcQ6IenKBRBYOFyKgUTUyiaNbVOTT+Yy0vJ5JJjoJ8FzN2M71m0ajKIhc3Ns/2pGDTPDYhNcSsLDKoC0jv6KQQHuRnLC60R6a24JTZtUhPyZuJgEgddm/UpHVSxJswk5JgWlXR5r1eZqi33vHW3xrfCZlNGpaxbkoa1xEU1YH50UUk+3Lpcz4QyWaThCNM1pc66LQwYROj+qZ/gNqKV+6WsoeQIjFnVBlz2WZMIzKQHLg417Ti/ZbF8MvxC5tQ7RAnEs00Y6XvA7QDNKZUdEszRQMEvnBbFYlhV+C+e9FiBKjBigBf5dpW964c84/lZmfysx3KzPzJFqORNrYLPZM/pBE7TAdhBdpT4kkslhglaC/+jl2Y5Iwza6/DSmSX8bmcDJlayZDNbOgPbcSYsGcwwZXzK6kdAgvm+7hSX6QaVk1Ky2rFLyoSntGGXwncXLOUKQT9fry8sIZ+Ww5vQ/v33YUp4AFMakwJc0hbwEWHnkn5TlUAkosHCUFTu+Hps/97mM9FAiatbIX5fc6PZFql7jYicdfu7e3t12QsjvPYvi2cBQBpImB+1ts20tBoYqU0gSZOWRylz4AAKJ7E6vzHkheTu6IzAl7ME9y8HvumqajiGImyafZ0nY4VKQO7P/3ScATaGDOoUlHSmYhoE9USZ6y0F3A76Cibtn65d8DGRglZUHTOtaDy4pB5PLr9BYmEJf9QhE447nOdFIYz4HmFBCJ3yVDvU2Fsd12BJ0aAepsZrk3CQY2TsiAFCXTmvVSi6lV//t/dLvq8t3Ru30HDBtHyRf7fEQFpZDO4RooO5MAQdXt/ovADQgGygppgUJ2bzvfJZlbxKjPdbGculsRpnODNx2vpK7acSRmth2LSXHMNt3NEvLsUtJoZ0tigbGx7pxv/PmlzqOAbnXoSUELqsOYAa66eaGB9PVYV559/IchWuji24199SGXwc7FpiS9MVvB3zMz2TRirYoDERiNUYYDx/Ebs3jYCPQs6n4xi9YxWHAcG+EvO+2/p31THTjzgny137RodioG0OW7bxbPx0jpdZgHNTuousnVcfdQGpLHnRnE7UcxS13rMIQ0e/8td27Y41657OhCOuAm+PJacjs17iQYNrbbztoqwETjrnVSxSiKY5YpYCkxhfqfwNDIjS1M06Eunjy8i4PyutH+zESMm2daDCWI8Lqn+d0GxhhdHlDWWzDggK/KUN4sI44R5JCZsKqTPai7vq/q+Am6GMI6AklgZRRLBGRfqViA3zcE4G0OlHF/1x68WuusHbxd66wd/Rn/6uPjCB/v8HGKjz/h4wQf7/Fxho9P+PiAj0t84N2XePfla3yggZcv8fELPo7xQY/8ER9o4CVee4k+XqL5lwf4QKMvP+IDHZ3Sr+f4QOcvMdKXGNAhHnmDjg7R1CHefYOODvHIJTo/xIwO8e7hv+HjEB9o7w29gfYO6bk3+EBvr/FxiBkdYhiH1B7GfIguj/DcEUZ/hAaO0NQxGj1GU30M6ATzOEYrx5hvH+8eY5av8O4rvPEKDbxCe6/w3AmGe0FjxscJ5nGC5k/QwBE+TjDLE7xxQm9gWicY+MkFPjDcE/RxgmGcYL4nGP0JRv8aP7xGex/R8mv8+hpjeY3XTrFap/juFO2dEsUxhVP0e4rXTtHbKVr5I/78I7r8I379I1ESE3yDP99gfG/w6xu08gYjeIMBvUW/b0Gct2CGt+jyLR55i/G9xWtv0fxbDOgMjZ7htTM0cIZHzvDuGYZxhufOQI0zDPIMrZzhtV/oByzyKwzyDJM5w8qcYW5nGN8Z+j3DWM4w5jM8d44/z9HKOQZ+jj7O8do5HjnH0M7x7jkGdI6OzrFGZ6DfGb2B4b5DUxf47gJjvkBHF2j5Aq9dYAoXaOUCA7/AgC7Q0QXGfIHO/4SH36Op9+jjPVp5T9sFz/Xx2hu89pZmRPxCC4o/P6G3Pv7so70+murj4ff0Ax7pUyvEoqBQHyPtY259rEcf/f6ZuI7ewMcxrRE9B0r2Mcg+2LaPUR1iQH1M6xIjvcQPlyDYJX64RG+X6O0SDVyi+UsM7RKjusRILzGqS6zqJVr+gIc/YAQHxO0Y1QeM4AMe/oCOPqD5jyDORzzyEU19xGsfMY9PIMkxOv8Fv/4Zr/2ZzqZ/a5M52gEHcIbyydhRn4EEvrP97Fl3Wx3Es4nuPiGp59f1SVHM8v3Hj03Su42+RDNE5PTSbPwYfz0+7b+75teuNb+20VOfxOpXok3ZUiUu7JM7jgxhrTREoudbz/Z2nz4bjXZfbO89f/KCpO8UWaVL9ZvKhdjA86J3WZxch12DIm1L9SGmNwWWxOkUdogtJQDo3iwvlo7IAn7lWBFKvhPndHn62X1Raj8BVP/rAKguKfnsuKLlxXfCa3Butlj1K7vDZN2qNlniplbxWH0zmO+o7kFzqieG9f4mCvPvJGYjT3nhUH+cOFqJkuOUaqtnO0yxKKm3zY4F2sWP6tvrUR19JMrUUlCqBtIr1aMh05bHRWqUcpIauIOsEwkHQa9/N0uwdyOdRnC9ssyfLnTMYnmamJVOCU5hDltdOnVjGHMRjJcMuACOGLD7MvvScKVBmDZxNKaQcayXjE5lBikFuaQQSysH50esYwq+rvWMsvOvzb4EfdAFdUvpLikQ5Tx/SC23rJfBQBbrzGbOAm/x+uLD+8PXB/3j6/fHnw7eHw1UoGc2rWRdPCbxgjLPuB5Xp6q0GA2ENwrSoJxN53vk+D7ihj5bEuCmiHMzUOswq2PVrFMKLJEZNRACDSQ6YAMsj9XJLclaXZZk1UYon65PP/LxwwU3T/Dk7j9yLax+WReJYAfKRZSW1HqgpzMdjRN1etRhB5GeSiEypG1tkJUF4y+BS2wrbmlE8XKx+WXzbspMAz+93t8PRQNqsgTSq22UFhjHqSl0KHWRvzWU2xEsnWkEAXwxi8d8Bcx0lNHa3U8Ez9qL2BDzFY4V9qQxfNUwRoD3MP2Kg5R8FsDQn+cGoaSkpJNjF6xVLpyL4ECWkYsFKZct76jcjKcsuoSGoTf0PKQcEFmIvHkD2bPDu0PeygnkVVwkbPg7gLzdzWDpQVl2Rbt7Xs4M6fmf7z47Zpx+scpBARO5MJh/AtDdfc/md8t45yGwufka6XcFAylykPZ2T1kq4JzL3QnQq84P8VnWNe6gXAm3wllbbQR/mTMP7zb8B1x90KsjkIo13d3AhFJxOmJraVms8G5irXSEdqiRfJEEkyxNkO4lNP5LOlQjwooto+ArR1pCGCqDi4PTowF7rBnlgsPDbxvAGcgPbMWcZTylCh4NMEwysMg6rkJ4IlPK3uWlyyhwij2++YYNka7fPYQFZN3CssAXdh+XiY4RZQtRftfmJu1U2rKzKPgitRtJRrAshABtJKVUwtFpRYDAQavQtatQy5LJU7egOdIDfNwLVFMU67535tAxnc2Rm8a+F+s6oHzGHgybHFt12zipctkZZzrUSrb8hg1Zg2/H1n6U+nMSShLNZv+ARte3aWCRN9iKXNouMSXe6c4wG3IIABG+p/4rGmzvm/S3m2ulNGJhVu/tpxX3pxX3pxX3pxX3pxX3AVbcIw/2/KcZd0UzbmdtFGV5sTSarhK81nTcyi2WmSCaRaTeoDWKuJPyZT+wbTRWNk3oonfGP/ET93ufGx3Ri1buYFjMZcjFFSTeFZr2EYJXsKLbKXiL5BPVmtntAD2VtS9yqWd2d3iI31gdsUjVJI0taIfFuhRhtSxvI7guUV5me4yokC85wS1WBGn/XjMObrOsL59fJdICq3Z+Jy3Fq+83/pyytgf97G4kbkcpZaioNVK4qrDTJmOt7cA9eXrkYWvPg8hCa7POWevEhbGF3sRrcaheyBLZfBhYR7B1J9F4EkPLstY20opGXNywSIEOtqgqXC1dLqn+IalIABgTjdcXMUfRV4rq5p9js1JIz9OnL0Z7z188C17sBlsvBLq4tjQcYZNb3bSWX4fIHJoU0YaM5FWwZQcKUcJ+KqkfRUNGMI4d88CK81lxHS6R6cswSk6YaseBLvMzqnxT5RUy20iKj1vvoUHMTwlLvfiOoTAONg2IMUnbxpThNElyvr6o36n+ahPPZia7DhZBfM8AloSUXtqOwu58liZqqr9G0/nULh6XJfbwPDwkV7duUIhtvWcM5JoSwW50fB3qRd7qt5Ju1vZ3nj3rrE2jhP/abo0CLyNKsUuHprgFsBBxUuMY4nrdKV3MGMs93b948eK+7jnKthyEJQA338q/SJLSLux9REFlSVDZjFEmvhasiI7iBdXoNF/oH/C2XE/TpJjQn+W//jpH8F9WPqSThEBW1jprC6P5BwpWXmlzj/bCnSd7z4dm68WT7eejrfYcW5zVxH5iJ3bz8aiRN/mBzk/iLEWcVT+E+2z33VcDRwvsdCIG/sHUwL9k/vinIwBXnvEogC+YBFKGZkB0GDi3zmJmqFAp4RV5OM540U1pYPV6+2A5tmVBk/CgXdOBTYk0DjCakmCEO9eQf+F6fNAa6b3neuvp3mhr60n4XD8PapVUyw6WR1pKHCMutpJF/RBnQSFxK2Qtd/tINZEeBmpd/BsbnQb9mNQImiypgT89clj65SaOTfaQwIHV80UyruKCcJAi41rCLHW23JWUsbViLsrBcAh8sEpBhSV9AVRc8tYFi5weITMSHw3sNm4tt6ELM06zVSPfD9RuN4zGETtJkHeY59FoYeUKb4BDpKpJlmrhMcY4hZ/YD/ePEL09okLr9fF5EeBOdurzYja9KUcW7cRVk7fD6VgxoWRFKcToMUsp6Ky19tvS40FSEfngrcoEQh+h7cm47Xq3qREuvSsnuHby8wZzwHiyJZ/zPufDnI6JoszaVFWALj/dF1Nyni6XWCRg5nTGOOQ2f4SCDdwiX4/8hbJes2k6RLHr5bj1XZYlK63YhA/kS/s9020fdidpYHM6eDCSL6WKdNadz9gdR6NBHh4XyQzneYEaYqA5DZBenJmEDPW2NbyEwHco4DNyUPEqE9TOeVoYQlVfAE+HvW7WnZLGhmGCeTnqoDr1EkJVEKTylJMLikFVyXvmyoDYKnDjLJ3P7C0gGARw4NFVXmapPjgB7EAhdoUPBopt5+oEVIGcnVtlBizVLy8a5WdYu/WxDvJKxRyndWRmrDNb7aNkTynmITUAyix7sjKktwl5SKzS4VfPW5pMx9IxITkV9TpISwqlqjSrIYhXi4hEJXuyosY+azp1y3R8Z3zXTCy+OnrqAyQND8wonw8l0YJ9pUitkJK7QHp3+c4+CaopyVDOolgKwXgJ2Hx//Jg6i9QWjYOYAg5iJ215bLFCviPacNV0apzzOJ/m38E9qqx0ZtrZpCzNWGmvtTpjOa3axrrmnPNllP32TeWSb3SM9VgwPKnLcBcqkJkhq4bqrf/r/iwc/faXmRn/NkvGv4VpgP++/vaX2fi3r3GO/77+VnwtOGbvZxG69iJ017wuyLi8RhEz2KceIgdOo+Ra9O1aCahWvfLpXYpdtWKQPFeavUjRhpsR0BxpiAuVlM+OYO9J9RZss0pImduMJZzAzpb3pvmqERfRkXIT8ggngPsaVGK+ForUHnVbuhkDAkBnT7gNEuAMRi/wSPorS8m73CbWgFANwysgQUMt6zu5hCxBvbdFSDpwoks3ciJzGdSeoO04NBqdhQdunQ/tMjflNe9GEdh8kbzYmlSKTtk8Fn4K0oQnbkv78DpQbubUmOLOFbkkfOC8iKgWMmPgUhwnH3exgAhYACk/7ZDAoSwQlIN9KOuGUJXamZSmDUO/7kdbKrx6yTENmR7bq2awbH8MOkSWscVimaW3fKKCRt1inhiWlmpQLFTKqACU6hgA1TqKU0Yxdj0IWenERtAVbWpqyikLMExSJFYwJ0ATK+3lLEdkUf5FQBC56xRxJRZAbPOYWR04iizSIbaD8W4JqP7GuAAeWkwoPxkFyoaUpptIXYhZZqbRfOphFFNjjMSLDWRJJQWkEHYrl5AvEFJGKWyv3SLiCtSIJuNtSKLqx9P+gboAayTzqdymFbjJ0txbEoxjBHk+FnDcBRynIslamR11LaeGzEhFiSpLkhNK2JbTABp4MZrH8aKn+kUWfXEqHddJ1DGtoDWE2QXqyJJERTS2SEpJ2AAZstIuznhZK0jeWKjLO1nRAubk/o1A9Ob7x680wRsW4jN+m6QSOMMpr55y11mrVDz/IfLUK4ul68CePmRxr7XCr+v87yPNUYqoVzw7nZnvqJ3tyXaAkPH9Gr6s5SSwaVPy4lO0WS2liogkedKlgmDLSbei73h84SHoVNf2RxDWiceOdrWJ428KZ3PrfgFq1orF5KYK1evjsi7HcW49x+Vcc+WcsCiVtmn90xuT1XF9CGlLDZrsNyDV3WhWN10tt2GUFZNVnQzuKra0OZKs05dopeknrIhCXlZqKK9R5xUOqVfvdfWRxMrhrBPsPCsWgNR3akdHbmgp1AQasEmhrBacpSMqFOVrgBaCoY6DO/jll19+6Z6ddY+OBiIbOyQJId/qHucV63B6VKq4nImLotzLFkjK2iNV1YuTirnOfYtIZxsBeUeZnoeu1p3EkNpAZI4iX1I0l+lXHSKOkEZxW1IwyEOZu4Kg+So1bQEuY1dGs9xc88Jjm/A3nysUqMIbVH56vMFlG7keIGvuA/+JHjXo1Td0Y7Az6qippntzUOWCgdrctGL+5mZPvbMFBjquGM/QqM3NVKLnNzeX+Fpds3eHYbR5/GygRWlKtkEGNRSr2qnc2G+1aqx21xV3lSmmoq5tqnxzWT1GuaswczQqAQ/bgZP+69be/uyXYKxyNMmWXZ2EXXomf+w/+njjOyp1303jOyN3WhBb9H9bbvxZ1fxHVDXH4gxNkE4Jn90/Xb3jWSRIt+FuKS+gLFn65tVB/xLNvzk/vlTr/Cft/EqNU6nnRQ9eUCk8IB6xD4cSWXgtPhy92lFTFFSTxRlU13yw0ZEqEJDLHnotSTJM/e6wQRp33x3PGgx43Rpk3xDiPGs68+1d5+ajvPG8sAG533SyaJXnZqHvMimDmJqrziFN9LUPqdtW4j6cm2tbeP1e8bUrMMt2+igvL2VpuB7F8nge+wSGXwbROM9crsL5nY4MQExiESMJY/NVi9YKk0MzSkXgD2WYvO0adrIPl4eUdDjVcKkfHT0+O3sMqVVNJvvT6UCynYxAQZZ40wMxN9oeCToKlZ7CWkVxTlKQa4NzXEILi+ThaPu4Z9KjvzqDpR2Q4lRI+2ipQ8BwFTJNqRYJyndbXDj2/kUOb4qOlGt3vzwAfawhqTeyHQ/o+tHdsoSQhSKrSKPGuppdXqcdDJJzrWuIC7qUeXVoIbcmRP8VociPdNJZWtWQx+8PkRzZui0dsue21YyyVZi9QnqFV++Fjd107WMf6XHqzbAMnSY7NuGUWi4qtwoF/sj1BBPEvRvO4b+XFrbqkHHilvjLBJaH0cULWzcR5lTZcR0WkUra2SmVtoknu8hzyryyMzRXzNmHn7dZjf6uVa9f75+d7ff72LCJhHbC4FLJ5uPdx74k2pZFqjY3hWCbm7yvrtYY6dXBhXl5Yvm/Xq013Jxy52D+ZOIIdT4Zpjq7AxjQPVIrbgX+v7f/Ih2PY1MClI2BbawLc/3XrB6d8gMglwsHuTyQ9n3DkuVBD0Oh8KvEiNMXRx1Xe6+lxdr3q8WIfbMbenMomXmLIYkEHappwTv9uoHC8CMIQjgGlGHMJGGsfeqQxvRoKfbDI5fgKMSplH3kPeieEPOeXVK+KHQYWnzqWkAEbyhbE9BbserOY5sFzctFgq8yYFf/1jtHhdQUwpHWtMbS12dlBPdgq2xA5m+c7WVICC297HAXWNCOPD0qbYING6nNr8dsa0cbQo++UK/2xPVv04oR8dwV7IuWYiIyZDx5dQQbkiKWlE8iK8TJAuEKYPmDvSuIIQc7hLkrOyiJLweHl6cfj21FPj64SGnmNJBkPNfjasQjWFuvGL0YbO893Quf7T1/sRVuS/i4jV40TVCPpRY3O5A6znRF6WwaxDue37wuw3rKjlN/fLXU+r/ZM1rTbqtBK+1L2wY0aRLERSKc1MJFlFODa9YkNlCyIkI8xE9et3Y2ZKsWHHkGifew4R1efAkSX4GVv0lb4OL1jKot35/xdQc0ex1LfSlseivI+hIs9Tvh23kq+OFjugLEukySxyMTbuP8F7tPnz3ffRKOXuzuPN/bbYqsNimtcPXPbNVOguihiFK/rg3jbe+XpOsIuToelTqOMJ2SGp0KBTpuyh1vnh1vak4haTuLyvK39ijZ3KSqbJubIvHwxmmRhMta7zil5jNnbNvc5EHbJlxoXv0at7K5bd4GFU/vVCZ+MvxPhv8PYHgYk/5u7N4/6wuz38KJqGezvy/H/8OwdBsv7u48ebGzs/N8GOyOwuG2Ztw5KzCeV27W339t/4WgvqJknLdEHVLNLC/iMLBRdRS81dZIw6lfEzSdlAImojpQTTsC4czfGphxBZ7qxoVtO4vXoqxUg14IGKWjHslSPeqoR1ge/J93Av5l1+eRQ8harrWXcStkXxJQPdOYeWn1cJE77LdsMb0UkwwxLzZVoK2uVFlT7cFhlVUHt819KOF6WKIUOPlKxHjVlVrqqwMboTyo2eHSeRaUhjhWN+NFCeLvNeHY+Y42SE+DI8gxu1OtJLWBW3Y9ch1hRMYxIhBsG0w+wR5bzSfU9LYhtWScWHm3nYutk62sAQMtyC+rYh3XoEENd1HJ0Wj9dQDCP7s46VeMQWIjKIHUvMgAqJDma4BYjJ09oosOEFG2xH1rgyIRbpHNbUT/cpTC2gmAcveKPRA288O100hwdj9d15PH4OE20IlXUqZ2XwRPt/ae7Ww/2Qmeh3umokyVTTWwBryYzn3lhi4lktx7OFXLRphE1rKxas75obWTlwQi/01ZOXkZLOyRoN2t2tNxEmQLlGdSzbUg5Lx6P1KGY4UNQAOWx935eXx4fbP9aIOEmiow35JmygFWhgVhNRon5Ma6v5G+fbRe8sC2NTE6vC+bbhnr8rt+zUfDY/bApZrK5WxipqitcDEfxlHwxrRiONVIYd9RM3oJUIQcDu36I36zLb7W+WQFDF4qclX1Kz7KvS4oW7M8PU5XiD34wAdfBV3NHYIN0IfqgOud+QjKoPmFXrwmive5klEzJPoQxAAO2mwSBbI8jU6FueVXn5s6jsdbur4ot9nS/pezrPx9RtFw38Zt1Yi6pfwlvubzleIXLKYzhS/YnfoxyrXafrKzy7s1MQU8wyu4+WEql6crjXE79uheoRESMWwLFGaPJurr6E20HGWzvGttAXkJli7hRZXKXgJJYzc4tr4/y6Y8zFfcGN6ZXmeeZaNonzIuoKWTbTIXXzaiNYXs4ymfgoNaXejcVsCyPl16SSrgmq+aRDadl83AqgjZlGpI2wg0dWrLaXmzVevG7qGNjqpM3CtRS0WMW2jQhJWxV3ALcU5LgcMDN12yDU/SdPxDBJYxNbSyxLLzYnf0bNeMtnaePg93h3sVicVr626RpRy9yCzlmxBavHa+U2ppIROB5CyXXvQs+tgQLHx49iWrADN+TcR4QsdM2eBZlFSg6Je1iqameLbe4NZG4+h+qJTVQhB7frfJWKudkbUzqnJaHh68PxIpy3/ngU36P5InaZR+46wDzm4uT9H6lPHA+fddMaf9A54y2pLE+fvbeou4vV1FAACUuYS3m7hUXpOdymC9I4XnS2fKKF0undRJQUArZXDWd/BWJcbrOzjr0m+nwlcXB7+cHZ9fXp8cXB5/OvhFrnQ8/i2SPL9YpzV/27zBHXkva9RaSurLOj0EO8kNpH0AfiPC9S1LdMcAL+pnxapyBl1pjUWsj887LJsHXdtJtWSMdwoFy87wqlDgPbVEKvBv9W+XDcpZ1sSBI7eqDbqtJAZ4e/YBcgAxVhURwhMEONpsXqRdElofIhcwQ64iErx4tm2eBSP9/PnW3ovd7ecVkcBuobukAdbP1w8wziOMc0OkAnoZAoHsjm+SBYS92H7VQq31kj4bzVNqtQPloiKtppk6/PixLCRTdlBhjSZXlDQXniDKlFtk2cFS78VFLV94UA6zpWP0uZ/2EiU5VrjY1kBfhZHtoB/Ex309zefJ+AcItDm3tLpEu2OePBs+39PBzkg/C55U2Ndv7G4m9iYg3Ou9Cx72m/p+Tva6+1amLW/BNuJTIyuwqLx7J5Mubb/Gd/5z1UOcn175uF6FTcuB38OoK3Me4+evxHRDvatHo2Bve888GY12wgrTSTt389sneqgnvMavgM3k5e/jsHyiZ3x2DWrz/WfpiTr+IHk3FLwHsMOpA+TlaPKBjLmkMA/7o31oAEHjKpE2LIoMMotJGnD+1YFMxkYQipVQ6kYQlmRSXCXpqARHKAc+aEKU8osPKEg9oILWtl8pWzHg2cgk+3xGDhjyYBgVPWUrGnEY3jJaejirtjRGGc6LQH+Zpldig6sjUEjjP0npECnWrWlkFioAIYNpfCOesiy9ZS8NAVaF1kuNMNdcDWzthR4Nfr3X620MHKpyVDQ3lU9Eb2M5oiw5Dfh3X0qx9a7UGfw+HCa2sEzNpcRRfqJomR8qT+TiK/XoIxRzK7HKgcDj8g8D78cGI3uauF8Ab9WQrtU5L4/nY76nax4D7rVWg+5zV3f//aD7563ui+tf/4nQa1bPHPOTxuq9UJGDJDFBkT7IO+GMYXlLs49yhdCNLCaMO5fwBbuIuHLt1hDPMYPqZum8MM7JDDGH44g5wiRzl4ytGGcYgHzMxX+DNMnn7L1WOUMNuZmV+c0cwAncMU7m8tLnXFR2ZhI9pQb4eGiDQr7LKHu3l1uKVQyBLtP039qaw3bkHZeeN/iSGKp3/QWSB4JiFkOTsRd6QGlSgyCfBwPy7oYplVMpJMqdyrwgk52hizMTA6QXQcEF9KXUh3GxbnTaCXZ5vm2a5epW5lRb6PoUeSre5Hrq+K/wocMbX5KKc26maV6ULef/S1DYJXSazmdbY7x8ShAAMO1yiOse7o8QuTZQtwSEWkrEbjzhj7uliKfHOD51vRPp0O1GnFP307ik6tBMOCXK8/rLTkEBIVifhN8qVLRbceCGM2jbjH1j1Gc3uGryncUJeVzdoPnjP7jRbbg7v+y7e5N3S/oHaQIok95/3oL3IpR59eYR+WT/kIiqytg4uIpbkkLzaw7+e7XDm1G/BOmLI2AkSsUPRkImlyBRMLrXA2SgCiCYW6YaB2VGsjokJTtRKPuw+2R7j16r5RPuAE3ZrJpnb9yUloX0rHF71w+yNXuhUSID2Qj1oZGSdwBNK9MvfafZyBhKHsIL/aM3krDEr5ZhQzbddpYBCokBR8N5ZoPYS7QYSQCmPBEYZu0sEbHjkFerEQQ0gmPJuqL8kjSbpRllKnn5DQklGxvN+e83UU6IWpxy5afau7F8OOXKmxFFE/CkZ5o5oMRKSsIuEg2YqaKgnd534mjSPXczJjQcmRLaWcJgrp8HiVu3Zjj7poHhxYeMLL9phQn8sQSo3RXos8NT9O6H08DGQjZ7+/D+bb7qjGbj6xXIvbRSBVq+OFFxSrmHxUSCB/kLzJg0lHnRWkmiQs3PJTmp4uOvD4QbGtj6maJEIs2MtF3Ng4kS1f94IoAzJBZQeJ9Dp2H8K/XJDC9UNJX0Dos22VGaf7EuOwf5UMkldClaUk64h3UHGimnRTJIF3494gJ7cxmhS1oROByKGl7C0/dQ4QyYb0WaLRwZGNugDsZjIupwuJBBMEaeN3sbDMmZ90Vlxt0yF82lZRJxAe26HpVUrUamOmmUCeFeyUkwIUkt0znlsGEIAvR2cX6CIfzx4viExXaXN41qyJkk9WDkUghnaFZAIqW8bz8cRfYL8co6nYaxZvUhStTxOfHHwfuNOi7Z06f1/coD6CzZt2enR9i6LTv3vb1ac5cKPY1C2sB+HV6228zGU8Rsu5BnXIxxets+7xJ9nhe1/folFLIW0cc7LGwDVXyw+3du6xHlFelzQfRlAm01+VOCfSugHd9b3/5nGfp/oDL0y8v/UnX3yDjUk1rd+EYYv7CzZ1WwCmIlvLmsN2/hIV1VTG5OagXfEAKkUXVObFR3j5LZvJAzuelpZU2gw4Yj3xZTF+VZoG6KwSKdWeFJ7EJN33HFZZy/SrP39lC4X888SAh+fuGHoGoBRaoD8IUmKy3/rFcyxfIBk6KnjlEQRly1tiKL33ylDpXIx1ohqzZuqAa+EgQNl8Qep9L659bAu0Ts9w38kBbl41HJQi673Efq9fVUoMSkoxEn6AhyL24EfWOuKexjJSfCE22ebY32Xmw/f7H93FRjscoe6l4fqsMkP0telcUOZuuQG8WgVz64TwH8DgyUoVlR/ZX3B3Ry54thNH5KsI1sPQCv1X11moRw1Vgg1qJZ/9gJpJxogCsn1zdOX6pFrnB2QTs8fUfNYqMJ5mNUrt1nPyLjQTBfzkvRq5CujT4k0lXkv9CEc0ZftqassizE8ooPDKboVWjxnL05z50cBi27oXQKH1ycNknxuXS6UwRbBcf/HrK4kXedWWeDJGafLD7k9L5a395QA1cmZCD2sRJLzsP/y6vwVlMrtfbU+pMNFp4vTgSaHCc8cEyT8XfAt5Xp9jxayc2zMAcVVNsfgQ1xkZnuLCXs6jpcbIAqBcomKtYQTNQ6iqLTrgO5p7iHTG4FIMIRpssqiDkVK5riCtYFAFZmaRyXeHiVPrlMegmTcjpObMFzRpHK1frFweXh68cXHy43VFcGCUSvCodXcGUS0lz4ffZP8VucEJhXq+J5k31UgXwhv+L6VH9V2wT1smFNzthL7mhdwUImsqu86ZXJkYqINgksXJouV0mCYsBPy3muIEx7epIHg/IDEIn/9J4FRA+KmOBSvh2L2LYos60gxLUBiQIhnRREe2TkJVRxmR/YWimixngEtoGaNLURVQBL6JKxeDHsTa0j2Aw8UKDCAha3KyQrGmY4+40BlcqCtqyVeDmQWUUZ4Y1UA/OCZ4WmYFG6bs1wkqZfWN7g0iXkj+JCJ5REPM976k9zdmfZQ9GXYsqsOU6CRknZwFwzKhxXUyN07mvKr7bYFwPztcj0oNKm09xDr25GVSZacssgJTq9ddMn8gC1z900tNbqs7Vtf+Jp1zD5hBilW4DTYB9vNPaSoHwvRaH5JiNVKbj3j94QBAsVTiV7LtMGHjHaM/RkYaFnbL2oen4rBzXA+Wx1w6b82zR2LTf231vz0bMMFHVXwHI/hQNIsrGN7HzLy3fseagoDb1SVwxocQSUz7VBKvZxCxcnRaJ+llBZXkJlFcg8x78liS98zvm9gcvwVsxDXNFC5BypbcHTL5G5RXazzFBHAvezdRHQAne90nGajHNEFg5qWuyg0jpdAFxtg/S8XmO5/0tjCVeiPb8dHfgn4u3fG/G2FdL1wf5Ri28Vlvs+qx7MoUmoFErhlZ30HcfniEAoJga1a7gOUGry5FHhAJAjRkkkeNQyTNaCJOqgcF33jhhubpZS1T2ENZSHUSJeipyhHzn2Q5LxuX6xwBC4ymNK+2XrbR8r4lreH5xgAUsreHUtqGlYf1YeuHzbTzSzb0czs1EKFGF/nIxRZ5MBBDLCY8n0MAp+InV8N1LHfz4b4KVVhO1Zf8hXtDP2+YW2vsHWZ5vz7UDNFv+DrGNgczug0gYJRQylXgBb7vuPXCU4L/nBsSttmfN3l8f7d5u5rpLt3vfbua6SJ73lhq7KCOumK3WVHJA6CRHNjEYmsBCqmFwp23m8v1wIMcp5UMo59SJYh7n0Ldq0r8dp8AULaGubWIOtlT/I2h+a2BRsiC/N/yyLKYSRx1ToMSZYocJae3MIkvnSZJe8tjj+UjfWBleOCPTW7/3vJksdUfCyFIJza8/rQfe8NKbOTo/WxWmxwQ3JAlVXpwTFv6PtnZ66YJU5cfihSx4nWqQJFhcWOq84qt2UuBYABZWLYcseglfJLlgqMJbPI4cg3eFoclpHKnKjlajlvjPH8ZAtsiT3iydT27c+vH/bu0qeSrX2uom/kHKE3jp1yFUExkHxCSDTunp8uZhISmEPFoCa7u/5hidRGMIkFiUBE52xUHPrQ/Dq+ZFwaMMOXOEnWmHmTQermia2FJ53UHbVu8Sod6ORRTRzJwIhmqWKbOuSD+Q4sqv6WNZDSvBtjSNfohI2ND2JnmVPZLUKLz84lLu3RVEjTyMmpFjJtguMvnPvflClh1IkbrkJowxcFrBKiqBpyuSweGZDHXy5ZbTq6UwXrjyUcK4IKthymZmmWGprGqEz+3L5oEuLhatTJSMV36pX98uHK7tK2GJBzloDO0bXRTPbOVJEiYeh1KmAE9BBPorN13JEfsBjlCj86BrL2SZ2leCcyqIpC/BySOTuMXb0MmM6jyPCLa4SNjZShJ2Hb+HDqadSg1FA2BBOApUGJBy88ldnsC/t1AyWFj1YGrgCNKKheGmu12jVvEq1iKuE0YtrntNaabbWKgs8MVQpJMl/kehpFKhWVCRL5c3N/SYr2CNEW6czJEsyleRgRACT4Tyix6QgKUe1o/j5dJpKjQk1T+JoGhVUJDaLTLHwWV8YihjbeO5oT7HTDQrxS2Qig+QmOWvuXqXA+mp1RY8oL+22OaxsGwAZBmZ/c5MWNi8C4kfcZ/bE5Bxlzkx2DxDQNAnXWbygsCG52G2ttQZZiZbEsQ7s0u5PsLe+SSn5QLMxOC8yo6dUxraSt+F10T96A56aRrF27lc9m2UpyMmxSjIGa1wc9O4ixf7mpjsgYKHli5dqWdjrt395SEmEJCqwpc6pRQsxUqQxLFkebAcO94OYi3W6eDYKRpvNEDYbJaL4shVQBF/78lVS+BZjLqPKkQZ2WRxSYkwpoiQWUNSuVjmISP4RB01qC+TmWLOkqFf9vEp0kKV57qnl/lw6ThYIozybz+gGc1eZt1Lir2pY5epr8pBL6ciwe5/v0iiRcCA/+Fnq/oTNjXaVuCyPZadwp5pc67E7w112eDGafOWivEubTG68642sHCARm2+lHgWlOiZ8MdS3S6dUHq1lXJOPBPVKjS0pXVqf2FQZLzpXyeViJnqPf4UMSQ0S8g3nRSFWGuKdkQ7E1hy1WLF4U9Sr3NKpVRtk5yqxRk26JIcLP+uDAv0is6/WqytgibxxlUS5KoecpJV8xcDYXQ6WvUpsBDkJorHObFndPJpyEYKFqs2GxS+q9iGAoSscjZub+1fJJMqLNGOyssYjkgA/mY7qc/K4akNdJTgto8RxryTrEDO5166dcCGKXdmG/9Mo1mPcG4WkXqYF1YiO7RVXKeiA+X1yMfU3EhDtPdoRXqVW1QTSIx3NIVgnYAGeL71CKmmIC6Iuw5Wv2kOAT+5ULdkytNtpgEcmn0U2qyAzFkMpSsadZcKeKFR5YxwlC2U3pVSP47N2QbvbrXK6XSXE41K3u+Xw5Bwte9xBCnGC8bITzxfrHiqC12RCPmZMQsSgGkWaCJOZiUmoUrbcsk1JY4noihmXNTvuF2NbztCrpHqGViTNNkEgqbuOlI3Uz6+S1JZK40ppFTM3iBG1Fd2NzP76oNBTnaEO+qDQw+GC/xHTsVKnBR1gbPuOCJfbSosYcm6lYxICyFFh9beRKYKJytMpZasZG6DUJW/0gFiJk56R/wxR1orF43kUNkVikamlSrtz+5YlnqpeMuyVU4ie0RTSiFiYqmq9zy8ivsK9zNPjjQwBeqmo6iTeulv5KqEDX7KxROArNWMcbjdROJd7J2ETgnejSNUQuWzYBoQtZotwgfJLNhB55Yt5GKUPcV7e48uuljpKR7Tafeql+lurN3t5/We6geyVnYdfpDFlg26tKXpka48v9/pjROzKjxetHk57zH8PWTY3P0lGsq6bx9018q+sHRwsfcCGs4yMCXFiOxiNq4RsHQ3PHsWyaGYKqANWoQvLUUDW4vuAu3ApdLU4kduJIUdFxeioc998xRUcI/7eQpjjW0aVFymA7Elhqm6NQ9MvvOpRQoRP1V+XU8QLjytDd9yE2apfzhUKBT2VcPpFQsmvtt4aF/cr89jBSgslOZ5evaIhvDbFHEV8DCkCfGDVjWQcBeQNy/ZDrjK64rDXrZfEkge7ALEQ01khdBqbokIjvCt0qnx965aPYnCtaZZyp0HNpFRYpYOeLH9F5GRvbLn6mRnFrsA7vCN5YefW4gTlafQtQmNZxZYHubm579Q/N3CH54hxs+7FVJ5TUE8HVwXIYkMZfZbw68WLlzqnlG/qOEPSqY5jbJf8KqlELMoc6vXL7aj2WVX//9t706020jRb+FbiUGsdAy0JM3iAc7r7w4AxaUNSFrY7y+RCISkkoixFqCJCYHWl7/2s/QzvEAMI29lfZZV/pNJIEe88POPevL4PpIzeXnBh2DJiv2sdKTA24dGhuz3UXUPF8vb42lLN5vLKJA6Mry2SXvbKq70jCuG8r+Gz4AACnIm8tqqULUJ5YXguHO4LS3khEagVapd0OY/aIIyizafbm7tPh/3B5uZoKf+1GgaYPeSukCvYVaLJjCznhH2RFw7GxZgI3Us0zWJzbuLm4GGjDHL+J5uidQzJEq1/3E8lU6H6qGX0aOT/aKD6MHOCH070j3toalIpHqjgsFFPYoB7/OOm/btBwyWJ2EljcN9WMa8f6YGjGBSQWvW0F66x7wcrEOdX7P26ioYxpTDWBrSXl71mCB3JS4FJSloiSMK9/o03EH0n4C7f7e/E2knwWGEddkjKjvNrw0rKadcm1PXhMQr7DfFjnuHE28PKnGJz48krSE2QI8BJ7i8Fh0roH/bMdwkGF4vPcJbGbCVkUheqoCJRsNHey2PjJyeSDDdJb2FIsLbJcgk+/zDjQ6nlQUK8Cs6bJy+gR51zWUU4NUtIA0S9sdEYyWqOWznqqKS+165xN5Kl6nSrMXk6krun3XjrTe+0aiadko12D1835M7dlR8inETib3B8sOL2jIYKgyoKS1VBMYH2Rp/r0GoxKhIoeDk4TIUgtRuYLeplUjWqUx1Sp9QI4a4XC5LOqScapTsYpMKVzJYnl3QcqrP2RPAnpWgx4LgnjHFAlJMLJLKwvxABjdjIJI5u4cmn8xlpeZ0ouQ6TAZ4rGduZv2k0igexiXv7ox05yASfRMMrCVhYptG6kF9SSKBeJMesbtSH5tbglKk65MbEzSQApCz7e4ysTpJgFXZKCKYNjzTr89RFt/aWM/lqfCZlNK5axZmUdVLEU1YH50U8IduXSZlxm0pjeo1onNHiKiyKcHBNp4d/pn8HLuULw6XsAIQo7kRga7Y0YWhVBMmBj/uQXtRvTQy/DLa1DdEEcS7RdWjWklMBikE6MxjN0iyAQSLfn838oXApmH+vgbAYNUAJ+F26rWvjzj7/UGZ+KDPfrMzMk7gZibSyWfRMfpfE9TAdhBepp0QSKxaYF/RXPsduomSYZldfhxTJL2NzGJmyNpPBzyyoz62EWDDnsMElsyspHcLJpnt4kh9kWlbNrGWVghcDa8+wwXcSJ2cMRWESvLq4ODdGPqXTe/f2TSvgFLDBhFQYO+aQtwALj7wTew5ZQImFGUmB0/uu6XNfXKyHAkGzKntRfq/RE7+0Vqa4DWdhVmxgCNvKk8bgvHXW7EYYqCKlxEBeDtKdCzflH/G8iWq5+5KJk5th5RQ9GCQ53D03RdPhQ1GS5MWsKXvYD0gB2PvXSbkTMGDOmklHgfRCYJ6IO57yzk2Ib89TsJSx/FtAAuPEUpiW0R1MHgxilV+ltzB6mHwXirkZz8MsTIrIcZkZlUMidsk0r8kvWm1L8KgRks6GlXvTXmDVxDqnuJjaPJdSFG3wf/9Xux1c/Hz4856Bgp3EySd9PiYKKSRwmAJsZRISGLTb/yEAA4J6skQioAy7s4HvksUVI+pjWRCn6pYE5lzjTcczGfqWG4mSrUdfCjhKm25jCXI2SWi0syWVINLods4w/vgizOMB3ePQjAY1OA5jhrRq50UIbK+N0Ht24099lNDGt2t7wbtcGjsXK5LUxssKHp5ZlE1j1qM49IDxF6U5cBW/jhYPa0E4i9ufokVtGxQOR2P6Zaf9a1o0g31jUJCv9qo2zJZn8mzefbPJfIwkXoNyULJ8Bjd5cNQ+kILkcWP4MPtRDFFX4XAI+fX+W+4sYh+7d9nRhbTPRfDl1XA7Ve4kmDI2685aH1KictcaOWIUTyYsRcA2EhXB/wZqRh4pFU2Lqth6eBX79roJ3Z6J4DbPQjGNIKbrnuJ3KqhidHlAPa9BfQOiKoN3s1Q4RlhDFg19LexB1XVd5cZNyUUTVhE6Arui2B4g7QpHAX5fE0i3OXDF3V27/3KltbL/ZqW1cvgX/KuLj0N8/IyPE3z8GR/H+HiLj1N8fMDHO3xc4APvvsC7L17hAwW8eIGPX/BxhA965Cd8oIAXeO0F6niB4l/s4wOFvniPD1R0Qr+e4QOVv0BLX6BBB3jkNSo6QFEHePc1KjrAIxeo/AA9OsC7B/+FjwN8oLzX9AbKO6DnXuMDtb3CxwF6dIBmHFB5aPMBqjzEc4do/SEKOERRRyj0CEV10aBj9OMIpRyhv128e4RevsS7L/HGSxTwEuW9xHPHaO45tRkfx+jHMYo/RgGH+DhGL4/xxjG9gW4do+HH5/hAc49RxzGacYz+HqP1x2j9K/zwCuW9R8mv8OsrtOUVXjvBbJ3guxOUd0Ijji6coN4TvHaC2k5Qyk/48ydU+RN+/YlGEh18jT9fo32v8etrlPIaLXiNBr1BvW8wOG+wGN6gyjd45A3a9wavvUHxb9CgUxR6itdOUcApHjnFu6doximeO8VonKKRpyjlFK/9Qj9gkl+ikafozClm5hR9O0X7TlHvKdpyijaf4rkz/HmGUs7Q8DPUcYbXzvDIGZp2hnfP0KAzVHSGOTrF+J3SG2juzyjqHN+do83nqOgcJZ/jtXN04RylnKPh52jQOSo6R5vPUfmf8fBbFPUWdbxFKW9pu+C5Ll57jdfeUI9ovdCE4s8PqK2LP7sor4uiunj4Lf2AR7pUCi1RjFAXLe2ib13MRxf1/oVWHb2BjyOaI3oOI9lFI7tYtl206gAN6qJbF2jpBX64wIBd4IcL1HaB2i5QwAWKv0DTLtCqC7T0Aq26wKxeoOR3ePgdWrBPqx2teocWvMPD71DROxT/HoPzHo+8R1Hv8dp79OMDhuQIlf+CX/+C1/5CZ9N/1ckc9RADOEP5ZGwFH4H9vb359Gl7M9ifzK7D9hZJPb+uXhfFLN/b2IiSzm38KZ4hBqeTZuMN/LVx0v35il+7Cvm1tU7wQex8Fl9KyUlMoCdXHEeErlIRiZ4/fvps58nT0Whnd/PZ861dkr5T5JE26jfehVhB8KJ3WZxchSWDYmut+jChNwWIxOgU2sQa0H+6N+3F0hJZwOWKFaHkG5FNmxPO7otL+wGZ+s8DmdpA8mxWRc2LP8tagzuzxo7v7Y4oa/vapEVK9RFYXcOX65ruQHMqp4J1/i4K8xcSs5GZvDA4P0Yc9eLiOIla9WyDIhYn5bLZlUC7+FF5ez0q443EWdAIQ1XBdiUGGjJtOasoGKWclobVQdaJhMOeV795SbA/I53GcLayzJ8uwgmL5WkSLXVKcNLysNaJUzaG8SqCuZIhFrAieuywzD5VnGcQpqNJPKYgccyXtC7IIiQR5JI0LKXsnx2yjimIuuoLZXdfnX0J+qAJ4xayLqGEMr4+JJPr0stgIJuEmebKAmHx6vzd24NX+92jq7dHH/bfHvaCQTjTRJJV8ZFMFpRrxgxcLV9piUJgulFYBmVpGm8jR/TRauiyJQGOiUke9YJVGNIxa+qGwpLIoqAnA9STeIA1LHnMTq5DVuukJDs2gvfCcvdjFzFckPIEQe7+I1eB9C0TEgEN2EmUkoLVQTidhfE4CU4OW+wSCqdCPYZErTWysqD9FqpESzFTI4qXica3xZsu8xi4CfXufigq4JIWOq+0UWqAG6dREarh+2uDt82ApbMQbv9P0WKDr4BZGGc0d/cPgmPtRTRI9BmuFPadMWBVf4KQ7n76GQcpeSmAmj/PIwSPkpJOrlwsLTtxJmYDeUUm+sNOW94K8mg8ZdFlGDHYRjgfUtaHTERevYH07HDukDdyAjkci4QGfwd0t7kZdDwor66od8jLmSE1//vdZ8eMEy6WOShgIpcF5p4AdHffs/nNNN55CKyvv0LCXcHQiRyWvdkJdBRwzuXmBOj4/UNEljrDDXgrIVUYa6vG7Nssefiz4T9gvkGHOSAVa7q5gQmX4mTE1lJLT3j3YC11hLaokHyRDK6zNEGCl4zxX9N+MCJ0WBv37h1pCaGm9M73Tw577KNmXAsOCL+tQGUgI7AWZZYRlDwEGqCWZFgiq7gK4XtMKV+Xpy6jUCn28eZrGhRdvnsI/UcdwTLB57qPbWpjTPlBlNG1vk47lbbsLB58ErZGkhF0CSEkG2koXgA6zQgwN2gW2joLpbyYPDUTmiMhwEW6AH+iWPedM4eO6WyObDT2vajrgDIYOzBscjTVbeWkymVnnIbDMJAtv6ZBavDtKNujMM5J8Eg8m/0Bja5v0oFibbAV2dou0SXe6cYwO2SnPw18J/hnNNje1+mvN9cKGWIRLV/bDyvuDyvuDyvuDyvuDyvuA6y4hw7Q+Q8z7pJm3NbKKM7yojF+zgtXqzpu5RbLokE8i0m9QWkUYyeEZd+xbBRmiyY80Tvjn/iJ+73PlYroRZU7GAizCavYw95domgXE3gJK7p2wZkkd1DVzK4NdFTWrsiljtndICB+JR9ikQbX6URhOhTdUoRVS2gjSC5xbvM7RkTdS05wRYcg7d8pxgBsWkb5/DKREli1cyupoau+3/hzwtoe9LO7sbfNSAUR0VgjacsHmo4y1tr2zZMnhw6a9nwQK5g265ylSkwY29DpeCny1AlZIpsPQ+kImu51PL6eQMtSaxtpRSOmMyxS4IEtfIWrpsoGvg9JPgKkmGi8rog5ij9THDf/PImWCul58mR39Oz57tPB7s7g8a6AFZemhiNsctVNSxl1iMyhTtHYkJHch1c2MBAW6DMQxihqMoJxtM09Feez4mrYINPbMEpOkapHfrYZGf668dcKmW0kqcfMdz9CzI8Fol58Q1MY+ZoaxCikdW3KcJokOV9fVO80/KypZrMouxosBpN7GtAQUnqhFQ3b81maBNPwczydT3XymIjYQfBwsFvNvEEhVoZnNOSKUr9uwsnVMFzktX4rqWZlb/vp09bKNE74r83auG8bUYpd2o+KW0AJ0UqqHEPM0J3SxYy23FP97u7ufdVzlK1thA4AF1+7fpEWFZpA9xEFlSUDbzPGmfhaMCNhPFkQK2f0if4Bb8vVNE2Ka/rT/utvcwT/ZfahMEkIVmWltbKIQv6BgpWX2tyjZ8PtrWfP+9Hj3a3N56PH9Vm1OKtp+Ymd2PTHGY28uh7o/KSVFdDKKh/CXbb77gU9MxbY6TQY+AePBv4l/cc/zQAw14wzAviCh0CIZ3o0Dj3j1lnMIqImJYQiB7kZL5ou9VSv1wdt25qCJuFBu6IDm1JnDEQ0pb3I6lxBxoWp8UFzFD57Hj5+8mz0+PHW8Hn4fFDiTrUVNEdaShwjLja7RN0QZ8EdMTOklrs9JJdIDb1gVfwba63K+PFQI2jSjgb+dIZDxy+PJpMoe0jgwPIZIhnztiAcpMiYPZilzpq7knK0lsw+2e/3gQjmUSg01AUYcclUF/RxeoTMSHw0sNu4lmAjLKJxmi0b+b4f7LSH8ThmJwkyDfM8Hi1UrnAa2EdymuSlFs7CGKfwE7vh/jGit0dErV5unxMBbmSnLk9m1ZtyqPgmhj9em9NSMcEuRaFedBaLFXRWauutqXE/8UQ+eKsyAc1HaHsyrrveNTXCJHTlBNBOft7BHMCdbMnnTM95P6djorB5moEPyeUm+KJLxtNlUokEvpzOGIPV5rZQ0IBr5OuRO1HqNZumfdBbNyPVt1mW9ErRhA9kSLs1020/bF+nA83p4MZIhlRQpLP2fMbuOGoNMu+YFnM4zwuwhmHMqYH04ixKyFCvpeElBL5DAZ+Rg4pnmcB1ztIiIhz1BRB02Oum7pR0EjEwME9HGUanTBrkwx7ZU04uKIZRJe+ZIf5Q3rdxls5negsI6gAceHSV27zUB6d87QeIXeGDgWLbmY+AOMfZuWVzXomxvKgQzrB266Ib5B5HjtE6smgcZsrvYZen0HcI6r/NqycrQ3qbkIdElQ6XL68xfY6lY8JuKsrMRw3UqEGalTDDfdqQ2C5PVtTYZ02nrk3AN8b3kAeLr45O8A6ShgNflM/7kmjBvlKkVgjJLrDdTYazOwR+EjKUs3gi1C9OyjXfH9+HWZHKonbQooCD2EhbzrJYIsMRZRj+nNLK2cin+TesnsBym0X1y8SSMXrl1fIx2m6VNtYVZ5k3jezXbyqTfBNOMB8LBiQ1Oe0yCmRmyPxQvdX/3JsNR7/9dRaNf5sl49+G6QD/ff7tr7Pxb58nOf77/FvxueCYvR+0c/W0c1c8L8i4vAJtGexTD5EDp3FyJfp2ifSpVq98cpdi53MEyXPW7EWKNtyMAONIh7hQSflsCdqe8LVgm3khZWYzWgCB7cfOm9HnEHERLSGYkEc45dvVoJLocxGQ2hPcWjfjgCDP2ROuQQKcwegEHkl9ljze5DaxBgT+C4cygppqGZ1MQpbg3CvtSAtOdKlGTmQmPu0Ivo7Bnwmz4b6Z5wOd5qq85twoApQvkhdbk6zolM0nsp4GacIdVzIfngfKzZxGUXHnjFwQInBexMR+zKi3FMfJx91EYAMUMspNOyQ4KIV+MkAPlimEeGlnQkY7HLpMH3XJ78ELjmnIwrFeNb2m/dFr0bCMFX1llt7yiYoxahfzJGJpqQS+QuRFBcBTx4CkDuNJyrjFpgYZVjqxEXRFm5qKMsoCDJMUiTWYE4SJSns5yxFZnH8S2EOuOkVciUKGrR/xUgdyIot0iO1ghFuCpr+JTAAPTSaUn4wCZYeUppsIE8Qsi6bxfOqgElNhjL2LDaRDJZRRCLuVS8gVCCmjFLbXdhEz5zSiyXgbkqj6/qS7H5xjaSTzqdymHsCkNffaAeMYQe6PQoybgONUJFmV2cFkOY3IjFRYHFmSnEBaa7sB/O9iNJ9MFp2gW2TxJ6PSMTNiOKEZVEOYTlBLpiQu4rFiJyXDCqyQSrs442WuIHljoi7uXIoKkZO7NwKNN98/LrcEb1iIz/jtOpXAGU55dZS71orHcf5d5KmXip5r4J3eZZNOLaevqfz3keYoRdShy05n0TewZTuyHUBjXL+GK2sZCWxalbz4FK3yo/gYSJInbRUEJZCuxdtx1oWDmePP7fcYWCMem7ErdRx/UzibmfdzjGaJHiaPfHBeF4m1Gbm59hyXc80QOGFSvLJp/tObKCsj+RC2VtCrLr8eqe5RyOqmYW/rx1lxvayTwVzFOjaHknX6AqVU/YSeKORkpQ7lNarcWyFlvl7DiCRWDmOdYOdZsQCIvlE7WnJDCzUTxoBNCpYfOEtHRA3laoAKwVBGvu398ssvv7RPT9uHhz2RjQ2ShAzf8h7nJZk3nVHyXM60iuLcyRZILNuIr3pxUjEz29eIdFoIhneUhfOhYbeTGFINROYo8gaaXB4/v4k4Qip0tqRgkIcyNxSg+TIstoCT0ZkJWW4ueeGxTfibj94I+PAG3k8ba0zUyAyArLn33Cc6VKDDaGjaoD1qBdOQ7s2evwp6wfq6ivnr653gZ6UUaBn6nX4UrK+nEj2/vt7gazXF3h2GUefx00ALa0rWIIMSblXpVK7stxL/qu664i5iYqJxrVPlq9PqLJS7qJjjkYU4rIdK+udl2/7oki76K5pky3aYDNv0TL7hPrqx9g3c3HeP8Z2ROzWILeG/7Gr8wWP+PXjMMTn9aJBOCZHdPV2d41kkSLPhbikvwJKUvn65371A8a/Pji6CVf6Tdr7HaioMXvTgOZHfAfGIfTiUyMJz8e7w5XYwBYWaTE7Pn/PeWkt4HyCXPfRakmSY8t2hQRp33x1PKwvwqjbIviLEOdZ0Xrd3nZuP8srzsgzI/RYmi1p5bjZ0XSY2iKk66xzSRF+7ILp1pPbDeXSlVOv3iq9tAVbW7oNQXohomIGiOZ5Hn0DzbRCN8czlwXB+pyMDoJKYxFjC2FzVopZTsh+NUhH4h9JM3nYVO9m7iwNKOpyGcKkfHm6cnm5Aag2ur/em055kO0UC/mgRpntibtQaCToK3E7DEoc4JynItcE5LkOFRXKQs13cM6nRnZ1eYwWkOBVSPkpqETCcN0xTYh8BYbfiwrH3LzZ4U3SkXJn75QHoYxVJvZLtuE/XT9i2pEEKReZJo5G6mk1epzYGybnqGmIKF5tXhxJyNSG6r8iIfE8nnY5VCWv8/hDJkTK1tMieW8cSpbzLDnVe4TC8sLGbrn3so3CcOj20odNkxyZkUl1FdqtQ4I9cTzBB3LvhDOK7tbD5TcaJaxGXCSwPrZsslCkR5lTZcS0WkezYaZesbWJrB3lOmUM0Q31Fn13Aec1qdHdt8OrV3unpXreLDZtIaCcMLl42H+8+9iXRtizSYH1dBmx9nffV5Qpjuxq4MCdPLP/Py5WKm1PuHPSfTBzDML/up2F2BzCgeaREZ4X1f2/9RToeTyILUDYGmnFYRFd/y8rRKd8BZLkwIMs9Kd81LOkadDAUCpcXRpy+OOqY372UFqvv+/TDrtkNtRmUzLzGkESCDrFY8E6/qqAwfI8BIRwDyjDmIWF0faqQ2vSoEfvhkUlwlMHxiB55D5onxLynU8oXRTgcKiJ1KSCCN5SyADoz5u88tllQv0wk+DINNoy3zjkqQ00hHGlJa7S+PpURzIO1sgGZv3G225AQmnrZ4SawoB5remRtghUbqebXo7elow2hR5+oVj1x3dvUMyKeGYq+uBETkUHiyasj2JAUsRS4Q6RCnEwQrgCWP9i7ghhyLIdhbogGJfFl/+Di5P2RcvDxwUVKM6eBJON5OPYjHrG0wyWjFwebz548Gz599nz38XBTwsc1ejGqgno0Wty0IWVkaU/prBrEW47fvCzDOsqOUX9ctVT93+wZLWm3ftBK/dTWAU1GCeIiEU6qcBG2a3DNRokGSnoixEP85GVrZ0W2qkGOZ1h4Bw3eIMRbWHgPSP4mrQGID2fEr3x/xtcdYOxl9PRGoPRaWPUG9PQ7Adu5K/jhfboEqLp0ktsjHa5b+bs7T54+39kajnZ3tp8/26mKrJqUVhjGM+XpJIgeiih1mWwYYXvPDl1LhqvljFLLDEzLjkbLG4GW6XLL6WfL6ZpRSOrOIkt4q0fJ+jrxsK2vi8TDG6dGErbs7jil5jNjbFtf50ZrESY0r3yNq2yuxWtQ8fROZeLHgv+x4P8HFjyMSb/bcu+edmWx38KJGM5mv++K/8Ms6bq1uLO9tbu9vf28P9gZDfubIePOqcB45t2sX36t/4WgvuJknNdEHRJLlhNxONCoOgreqiuk4tQvCZpGSsEiIuanqh2BcOZvI5hxBZ7qxoRtG4vXwnLToBYCRmkFj2SqHrWCR5ge/J93Av6l8/PIIGQ1a+02boXsSwKqF1V6bq0eJnKH/ZY1phfhvNdUgTomKcui9uCwSt/BrbkPFq6HJUqBk/cixn1XqtVXexqh3CvZ4dJ5NrCGOFY3JwsL4u8UYZbzHWWQngZHkFnsRrWS1AYu2dTIzMGIjGNEINg2ePgEe2w5n1DV24bUknGi8m79KlYnm2V9gRbkEqmo4xpjUMJdDORoVH8dgPBPz4+7njFIbAQWSM2JDIAKGX0eIBZj+xmNSzhARFmD+1aDIhFukc01or8ZpbB0AoDgPmAPhGZ+mHIqCc7mp6ty8hg83BF04qWUqZ3dwZPHz55ub25tD54Pn0WeMmWLqmANODGde4FpupAimfdwqtpCeIjUsrFszvmB2sntAJH/xnIlN8HCHgra3bI1HSWDbAFCpqA6F4ScV65HaDiW2ADUYHncnJ9HB1c3m4/WSKjxgfkairEN9JoFYTUeJ+TGur+Qrj5apjzQsq6jcHhfNl3T0uV3XZbHiNvsgEtVlcvZdTQFt8L5vD+JB6+jWgyn0lDoO8GMXgIUIYdDm/povWmJr8L8egkMXqK18v2Kj3KnCsrWtKfHyRKxB+/44PPQ1cwhWAF98BtcrsxFUMaYn4eLVzTiXWYyqoZEH2AwgIM2u44HMj2VSmVxy6/uamqZNV5T9bndZo31Ny9Z+fuUouG+brX5EXWN60t8zWdLxS8opjOFL+hOfR/nYbC5tb3DuzWJCniGl3Dzw1QuT3uFcTl6dC9RCIkYWgKF2aOI8jw6HbWtrBK6liaQp6BxCs/9UXYSSCq7wSzr+7Ns7GG+5MZwzvTy4mlqRX2XcQE1dra6uPiyEa1pyD4e+xQc1MF5mCsDlvp06SXhvI0+hySyhbktBlZFyKbEGq0RaMGJ0mk5vQ1WI91Da63A67hDSku0xTVjUIWV0Su4ZnBOrMDhgJs2bMPjNB1/F4FlTAUtLbFs7+6Mnu5Eo8fbT54Pd/rPPInFKetukcW2XmQW+yaEFqecb5RaaoaJQHKapZdwFr+vCBYuPHvDLMCMXxIxtuiYsQWexokHRd9UKoqa4tlygY/XKkf3Q6WsmgHR87tOxlrujCydUd5pebD/9lCkLPedBxbp/kiepFH6lb0ecHazPUXLXcYDZ992xZx097nLKEsS5+8v6w3i9nYCAgCgzCW8XcWlcopseY11jhTuL50po7RZOikPBQGt2OCsb1hbXozXN6ysC7ccb12d7/9yenR2cXW8f3H0Yf8XudLx+NdI8vxieaz52+oNbob3ojRajUN9UR4PwU4yDalvgFuIrPqaKbqjgefls2JZOYOutMokltvnHJbVg67upGpo451CQdMZ7gsFzlMNUoF7q3+9bGB7WRIHDs2sVsZtKTHA2bMPkANoYfmIEI4gwNFm8yJtk9D6ELmAF+QyIsHu083o6WAUPn/++NnuzuZzTyTQLXSXNMD6+eo+2nmIdq6JVEAvQyCQ3fFVsoAsL7Zf1YzWqh2fteoptdyBcu5Jq2kWHLx/b4lkbAXe0qiuCjvmsiZoZOwWaTpYyrWYqOVzB8ph1thGd/XTXqIkR28VK+v5MgtZG/2gddwNp/k8GX8HgTbnkpaXaLejraf958/CwfYofDrY8pavW9jdi9jpgKxe512sYbeob1/JTnVfu2jtLVg3+FTIEktU3r1zkTaWX1p37nP+Ic5PL31cL7NMbcPvWahLrzzGz19q0fXDnXA0GjzbfBZtjUbbQ2/RSTl3r7cP9FBH1hq/gmUmL3/bCsuvwxmfXb1Sf/9daqKK30neDQXvAexwagB5OZq8J222I8zNfq8P9SBoXCZShqLIILOYpAHjX+1JZzSCUKyEwhtBWJJJcZmkIwuOYBveq0KU8osPIKTuEaG11iu0FT3ujXSyy2dkjyEP+nHRCZTRiMPwmsbSwVlVagwbzotAf+mmQ7HB7AgU0vhvQh0iZN0htUyhAhAymE5uxFOWpbfspSHAqqF6qRHmmgc95V7oUONXO53OWs+gKsdFdVO5g+hsLDMoDacB/+5KKcp3FZzC78NhYgtd1EwlDvqJoqZ/YJ7IxVfqjI+MmJmJZQ4Ebpd7GDg/Vhayo4m7BHjLhnQtv/LyyXzM93TJY8C1ljjoPrbD9n/vt//yuL179eu/EXrN8pljbtJYuRYiOUiSaFCkD/JOGGNYXlPsozxA6EY2IYw7k/AFu4i4cnVriOeYQXWzdF5ExskMMYfjiDnCJDOXjDLGRQxAPmby30Ga5HP2Xgc5Qw2Zntn8Zg7gBO4YJ3M56XMmKjuLknBKBfDxUAeFfJdR9m4vt5BV9IEuU/XfKuewtrxl0vN6n5KI+K4/QfJAUMyiH2Xshe5RmlRvkM8HPfLuDlOiUykkyp1oXpDJztDFWTQBSC+CggvoS6kL46JudNoJOj1f1007u16fShNd7iJ3xelcJzj6G3zo8MbboeKcm2maF7bk/P8ICruETtP5rBzj9ilBAEC3bRNXHdwfGeRSQ80UEGopDXblCbfdNSSezsJxR9c5kQ7MbsQ5df8Y21HtR9ecEuV4/WWngEAI1idZb94o6lbsmeb06jZjN4qCj6ZxfvKd4oRs+Bs03/iTad2aufNt3e2bvG3Hf5AmgDLp/OMS3otQ5vDNI/JJ/5CIKq9tHFzFJQnR/IqB/17u8GbUL0H64ggYiVJxg5GQySVIFIzu9QAZyAMEM9NUWkFZJFkdkpKdBKB92NnafEavlfIJt4GmHC2bZx+ZLjWF9KxweVcPsjU7oVEiA2mEej8SyjuAptn0S9dpNooiSh7CC93D15KwxK/asCFNt51lgEJiwNHhPNMgdosWIwnAlCcCw6z2EhE7BnnVjyCgFhxJ1hXll6TZLM0oU8nJb0go2TgKOf/9Js4JUYtTrtxUe9OWdyfMvBlTNAF3ehbyCrBYScmwjUQDXlTxoH6878TRpHvuZkxoONIllNOwwEw9DxK3bqP+7Ksahhcf0rL8phYm8PsOQOmuQJ0t7qJzP5wMNBayWtu7t2/yZXs0G18tMdyNTBUo+fw4mKSUe1hcS/Agf4Eek4YyL2qZJLzR/GiHkxgff30g3FBP+TNFiUSaGWm7ITcmToLu+2MBnCGxgML7DDoN418FH6L+eRBPJb1D0SZbQci/qMvOQD54uYQmRUvohDuYd6CRclokg3Th10Mm2JtLC03SisDhUNRww5q+ZxROgflWpNnCDANjG5TBeKKYKuwvpBGMkef0XoMhOfO+8HrctrloJi2TBhfQrquxHVU/MtVIozwQ5pWcBBOS1LIwpxw2NEGA3s7PjtGEn86PjllsN3nTYEPOJKkHLRcinH60BBIp5X274SiyX2itrNJpOAlZfYiT4OiM1sf+27UyLtmTJ+X9yg1oNezb05NDbN2anftWr9bcpEJP4yFtYJeHl+02s/EUMdsm5BkX4yS9re+3RZ/nSa2/fgmFrEb0cQ4LLcDHB7t/59YeUQ5Jnwmitwm0fvKnBPt6oB3fym//g4b+D0RD30z/S+zucWRQT0q88ZUwflnOjlVBFUQvvNnyzSs8pGHF5OKEK/iGECCjoLwSK+zucTKbF3ImVz2trAm02HDk2mLKojwL1FUxWKQzFZ7ELlT1HXsu4/xlmr3VQ+F+PXM/Ifj5hRuCGgooUhmAbxhl1vLPeiWPWN7joegERyCEEVetMrK4xXs8VCIfhwGyaicV1cBVgqDhkthjVFr33Oo5l4h+X8EPqVE+HtklZLLLXaReV08FSkw6GnGCjiD34kYIb6IrCvtYyomwFUZPH4+e7W4+3918HvmxWLaGsteHeJjkZ8mrUuxgtg6ZVvQ69sE9CuA3YKAMzQr2V94f0MmNL4bR+CnBNlY+AKfUveAkGcJVo0CsRZX/2AiknGiAKycPb4y+VIpc4eyCenj6VjCbRCHBfIzs3H10IzIeBPNlvBQdb+jqxodEOk/+G0bDOaMvqynL0kI0Mz4wmKLD0OI4e3PuOzkManaDdQrvn59Uh+KjdbpTBJuH43/PsJiWt41ZZ40kZndYXMjpvWB1cy3oGZqQntjHLJacg/+X+/BWU5VaO8Hq1hoLz+fHAk2OEx44psn4G+DbbLo9t1Zy8xTmwEO1/R7YEOdZ1J6lhF1dhosdgKUg0ETFEoJJsApSdNp1GO4p7qEoVwGIcITpshpMOBUrnuIKDgsArMzSycTi4Xl1Mk26hUk5GSdKeM4oUnmwer5/cfBq4/zdxVrQlkYC0ctb4R6uTEKaC7/P/il+ixMCc58Vz+nsIw/yhfyKq9Pwc7BJUC9ranLGXjJH6xIWMpFd5U2HJkcYETUJbNiYLuclQTHgp648QwhTn57kwKB8B0TiP79lAdGBIia4lK/HItYSpbceQlwdkCgQ0klB1CMjt1DFNj+wlimitPAIbAOcNKUWeYAldMkoXgx7U8sINj0HFKhQwOJ6hWRJwwxnvzGgkiW0Za3EyYHMPGWEN1IJzAueFeqConTdRv3rNP3E8gZTl5A/iolOKIl4nneCP8/ZnaWHoivF2Kw5ToIGpewgumJUOGZTI3TuK8qvVuyLXvS5yMKeV6bR3IcOb4YvEzXcMkiJTm9N92l4gNpnbhqa6+Cj2rY/cLdLmHwyGNYtwGmwG2uVvSQo340oNF9lpLKCe/fwNUGwEHEq2XN5bOARoz1DTxYKPaN8UeX8Vg5qgPNZdcOq/Fs1djUb++/lfHQsA0XZFdDspzAASRrbyM633L6j52FAaegerxjQ4ggon7lBPPu4wsUJSdQPCpVmCpVlIPPM+rVDfO6unC8VXIY3Yh5iRguRc4TbgrtvkblFdtPFUEYCd7N1EdACd30QTtJknCOysFfSYnte6XQBMNsG6XmdynT/U2MJe9GeX48O/APx9vdGvK2FdH2wf1TxrYZ232f+wTyMEqJCKRzaSddxfIYIhOI6AncN8wClUZ48KgwAcswoiQSPasNkFSQxHBSm6s4hw83NUmLdQ1iDPYwS8VLkDP3IsR+SjM/8xQJDYJjHgtClrdc6lsS1vD84QQFLPby6GtQ0zD8rD0zf9gPN7OvRzDRKgSLsj5IxeDYZQCAjPJYs7MeDH0gd34zU8Y9nA7xQRVjP+gO+oo2xzyXa+gpbnxbn2oGqJf4PWcewzLVB1gYJRQxUL4Atd/1HhgnOSX4wy5W2zNnPF0d7d5u5LpPNzrfbuS6TrU6zoctrYdl0FVwm+6ROQkSLRqNooBCq6JyV7Zy13yyERIHxoNg+dWJYh5n6FmXq65N08AkTqNwmarBV+YOs/cNoEhVsiLfmf5bFAoSRT4jocUKwQoVae3MIknljsktemhx3qitzgytHBHr1e/93lKVmUPCyEMGZuef5oHteCgtOTw5XxWmxxgXJBPmzY0Hx7yh7uxOcs8qcGPzQhsdpLNIEkwsLnUOOqpsS1wKgoHIxbOkheJnsYEkNIl3nsUGQbnE0Oc0jkdyEgajlrjPHrCElWZL7xZGp9a13b990LpMnwtZeNvEXQkfozFOLXEVYOCCfADKt4ePLxURihT1YAEq6v+Mbvo6HQ5jE4mTAg85YqLn6EBw+PxIONezAED/RDPPaNLCqaaJUeM5B2Q5+TqLg59FIEc3MiUCIZmlAtnXJBzIrsh10Ma0HlOBbG0feoBJWND2JnmVPpM/Cyw/25e6tUdTI04gOBaxk6wSj7ty5HwLroRSJW27COMMqG7BKiqBpyuRQPLN+OPh0y2jV01lYGHooWbkiqGDLZdE0xVSraYTO7IvmRluLheGpkpaKb9Xh/XLhyi4TtliQszaCHaNtopm1jxRR4mAotTxwAjrIR5Pos22RG/AYJwF+NIXlbBO7THBOZfGUBXg5JHLzGDt6eWEajyPCLS4TNjZShJ2Db+HCqafCwSggbAgngUqDIey9dGentyfllAyWih4sBVwCGjGieGnma1Q1z2OLuEwYvbjkOS1Rs9WyLHDHwFJIkv8iCafxIKhFRdJRXl/fqy4FPUJCdTpDsiRTSY6FCGAynEf0mBCSclQ7yM+n01Q4JoJ5MomncUEksVkcFQt36cuCooUdOe5oR7ELKyPEL5GJDJKb5KyZe5UC6312RWdQXui2OfC2DYAMB9He+jpNbF4MaD3iPtMTk3OUOTPZPEBA0yRcZ5MFhQ3Jxa5ca5VhpbGkFWvALnV/YnmHNyklH4RsDM6LLAqnRGPr5W04VXQPX2NNTeNJaNyv4WyWpRhOjlWSNqhxsde5ayj21tfNAQELLV+8xGWh12/34oCSCElUYEudUYsWYqRIJ7BkObAdONz3J0zWaeLZKBhtNkPYbJyI4stWQBF89eXLpHAtxkyjypEGOi0GKXFCKaIkFlDUbhjkGETyjxhoUiXIzTFnSVFm/bxMwkGW5rmjlrt9aRlZYBjn2XxGN5i5ypyZEn9VxSpXnpOHXEqHEbv3+S6NEwkHcoOfhfdnWN1ol4nJ8mg6hVt+cq2z3BnussWTUV1XJsrb2mTyyLneyMqBIWLzrfBRUKpjwhdDebu0rPKolvGQfCTgK42UUtpan9hUOVm0LpOLxUz0HvcK6ZMaJMPXnxeFWGlo7YzCgdia4xorFm+KMsstnVqlRrYuEzVq0iXZX7hZHxToF0d7wao/AzrIa5dJnAe2yUnq5SsOIt3lWLKXiUaQkyA6CTOl1c3jKZMQLIJSb1j8IrYPAQxd4mhcX9+7TK7jvEgzHlbWeEQS4CfTUblPzqpaCy4TnJZxYlavJOvQYjKvXRnhQhQ7W4b702gSjnFvFJJ6mRbEET3RK84jdED/PpiY+hsJiHYebclapVKDa0iPdDQPsXQGLMDzpVcIk4a4IMoynH1VDwE+udOgYcvQbqcGHkb5LNasgixSDKU4GbeahD1RqPJKO+wSym6sVI/js3RBm9vNO90uE1rjwttdc3hyjpYed5BCjGDcdOK5Yt1DRfCSTMjHTJTQYBBHUUgDk0XXUUJM2XLLViWNBtEVPbacHfeLsTVn6GXin6GepFknCCRl11Ggkfr5ZZIqVRozpXlmbgxGXEe6G0d7q70inIYZeNB7RdjvL/gfEzpWymNBBxjbvmPC5VZpEU3OVTomIYAcFaq/jaJicB3k6ZSy1SINUGqTN7pHS4mTnpH/DFFWxeLxPB5WRWKRqYWl3bh9LcWT7yXDXjmB6BlPIY2IhclX6931IuIr3MvcPd7IEKAbRVUj8ZbdypcJHfiSjSUCn9WMcbjdxMO53DsJmxCcG0VYQ+SyYRsQtpiScGHkGzYQeeWL+TBOH+K8vMeX7VMdpSOa7S7V4v9W681u5n+mG0iv7Hz4SQoLNOhWTdEj5R5v9vqjRezKnyxqPZx6zH/LsKyvf5CM5LBsHjfXyH+ydrDf+ICGs4yiaIgT28BoXCZk66h49iiWJeRFAXVAFbqhbQVkLb4PuAqTQleKE7m9jshR4Rkdw9w1XzGDY8zfK4Q5vmVUeZECyJ40TIPbyKDpFw57lAzCB//X5hFxwuNs6I7pMFv1bV+hUNBTCadfJJT8qnxrTO5n89ixlBaB5Hg6fEV9eG2KOUh8IlIE+MAqG8k4CshpltZDrjK64rDX1Uuiw4NdgFiI6ayQcRpHhTdGeFfGyfv61kwfxeCqaZZypzGaiVVYpYKOTL8ncrI31s5+Fo0mhuAd3pG80L7VOEG5G11FaLQsttzI9fU9o/6Zhhs8R7SbdS8e5TkF9bRwVWBYNJTRXRIuX7x4qXNK+aaKMySdhpMJtkt+mXgRi9KHMn+5tmqPVXVe3wdSRm8vuDBsGbHftY4UGJvw6NDdHuquoWJ5e3xtqWZzeWUSB8bXFkkve+XV3hGFcN7X8FlwAAHORF5bVcoWobwwPBcO94WlvJAI1Aq1S7qcR20QRtHm0+3N3afD/mBzc7SU/1oNA8weclfIFewq0WRGlnPCvsgLB+NiTITuJZpmsTk3cXPwsFEGOf+TTdE6hmSJ1j/up5KpUH3UMno08n80UH2YOcEPJ/rHPTQ1qRQPVHDYqCcxwD3+cdP+3aDhkkTspDG4b6uY14/0wFEMCkitetoL19j3gxWI8yv2fl1Fw5hSGGsD2svLXjOEjuSlwCQlLREk4V7/xhuIvhNwl+/2d2LtJHissA47JGXH+bVhJeW0axPq+vAYhf2G+DHPcOLtYWVOsbnx5BWkJsgR4CT3l4JDJfQPe+a7BIOLxWc4S2O2EjKpC1VQkSjYaO/lsfGTE0mGm6S3MCRY22S5BJ9/mPGh1PIgIV4F582TF9CjzrmsIpyaJaQBot7YaIxkNcetHHVUUt9r17gbyVJ1utWYPB3J3dNuvPWmd1o1k07JRruHrxty5+7KDxFOIvE3OD5YcXtGQ4VBFYWlqqCYQHujz3VotRgVCRS8HBymQpDaDcwW9TKpGtWpDqlTaoRw14sFSefUE43SHQxS4Upmy5NLOg7VWXsi+JNStBhw3BPGOCDKyQUSWdhfiIBGbGQSR7fw5NP5jLS8TpRch8kAz5WM7czfNBrFg9jEvf3Rjhxkgk+i4ZUELCzTaF3ILykkUC+SY1Y36kNza3DKVB1yY+JmEgBSlv09RlYnSbAKOyUE04ZHmvV56qJbe8uZfDU+kzIaV63iTMo6KeIpq4PzIp6Q7cukzLhNpTG9RjTOaHEVFkU4uKbTwz/TvwOX8oXhUnYAQhR3IrA1W5owtCqC5MDHfUgv6rcmhl8G29qGaII4l+g6NGvJqQDFIJ0ZjGZpFsAgke/PZv5QuBTMv9dAWIwaoAT8Lt3WtXFnn38oMz+UmW9WZuZJ3IxEWtkseia/S+J6mA7Ci9RTIokVC8wL+iufYzdRMkyzq69DiuSXsTmMTFmbyeBnFtTnVkIsmHPY4JLZlZQO4WTTPTzJDzItq2bWskrBi4G1Z9jgO4mTM4aiMAleXVycGyOf0um9e/umFXAK2GBCKowdc8hbgIVH3ok9hyygxMKMpMDpfdf0uS8u1kOBoFmVvSi/1+iJxLCZIwA3LhaUT6dU5dhlK3sffwVa8oswjwf2m1+tzExOtK3HjxnuFEb0gglWTDzGxl9zDipntN8683gjrlSRUqYhry8ZnwsXQwABwomqzfuS2pObeeKcP1g4OX4+N0XTaUZhl+QWrSl72A9Io9j718nhE3RhTsNJR4H0QnCjiIyeEtlNzHDP09iUAv1bUAfjxHKiluEiTGINgp9fpbewopgEGgriGc/DLEyKyPHBGR1GQoDJ1q/ZNFptSwCuEePOlpp782hgJoUYSYE2tYkzpbDc4P/+r3Y7uPj58Oc9gy07iZNP+nxMnFTICDEF2MokxjBot/9DEAsERmWJzEIZdudEuEu4V9Cpj2XJnqpbEulzjTcdz2Tom4Ik7LYezingsG+63iVq2mS10c6W3IRIw+U5ZfmjPaCgag1qgCHGjJHVzosQYGEboffsxp/6KKGNb9f2gne5NHYuZimpjZcVXEazKJvGrJhxLAMDOkpz5Ax9WAvCWdz+FC1q26D4OpokIDvtX9NEGuwbC4V8tVc1irY8G2rz7ptN5mNkBRvYhJIpNbjJg6P2gRQkjxtLitmPYtm6CodDCMT333JnETvtvcuOLqR9LoIvr4bbqXInwTayWXfW+hgVlbvWCCajeDJhsQTGlqgI/jdgOPJIuW1aVMXWw6vYt9dN6PZMJMF5FoqtZUASyJ3F71RgyujygL5fAyMHiFZGA2cxc4w4iSwa+mrdg6rrutqSm+OLJqwiFgWGSjFmQHwW0gP8viYYcXMAlbu7dv/lSmtl/81Ka+XwL/hXFx+H+PgZHyf4+DM+jvHxFh+n+PiAj3f4uMAH3n2Bd1+8wgcKePECH7/g4wgf9MhP+EABL/DaC9TxAsW/2McHCn3xHh+o6IR+PcMHKn+Blr5Agw7wyGtUdICiDvDua1R0gEcuUPkBenSAdw/+Cx8H+EB5r+kNlHdAz73GB2p7hY8D9OgAzTig8tDmA1R5iOcO0fpDFHCIoo5Q6BGK6qJBx+jHEUo5Qn+7ePcIvXyJd1/ijZco4CXKe4nnjtHcc2ozPo7Rj2MUf4wCDvFxjF4e441jegPdOkbDj8/xgeYeo45jNOMY/T1G64/R+lf44RXKe4+SX+HXV2jLK7x2gtk6wXcnKO+ERhxdOEG9J3jtBLWdoJSf8OdPqPIn/PoTjSQ6+Bp/vkb7XuPX1yjlNVrwGg16g3rfYHDeYDG8QZVv8MgbtO8NXnuD4t+gQaco9BSvnaKAUzxyindP0YxTPHeK0ThFI09Ryile+4V+wCS/RCNP0ZlTzMwp+naK9p2i3lO05RRtPsVzZ/jzDKWcoeFnqOMMr53hkTM07QzvnqFBZ6joDHN0ivE7pTfQ3J9R1Dm+O0ebz1HROUo+x2vn6MI5SjlHw8/RoHNUdI42n6PyP+PhtyjqLep4i1Le0nbBc1289hqvvaEe0XqhCcWfH1BbF392UV4XRXXx8Fv6AY90qRRaohihLlraRd+6mI8u6v0LrTp6Ax9HNEf0HEayi0Z2sWy7aNUBGtRFty7Q0gv8cIEBu8APF6jtArVdoIALFH+Bpl2gVRdo6QVadYFZvUDJ7/DwO7Rgn1Y7WvUOLXiHh9+honco/j0G5z0eeY+i3uO19+jHBwzJESr/Bb/+Ba/9hc6m/6qTOeoxC3CG8snYCj4CTHx78+nT9mawP5ldh+0tknp+Xb0uilm+t7ERJZ3b+FM8Q1BPJ83GG/hr46T78xW/dhXya2ud4IMYDi1glbKdmMhRrjiOCK6lIhI9f/z02c6Tp6PRzu7ms+dbuyR9p0hMbdRvvAuxAglG77I4uQrTCAXrWvVhQm8KsonRKbSJNSwCdG/ai6UlsoBLPitCyTdCpTZnsN0X6PYDg/WfB4O1gTXarIqaF3+WtQbDUY1jwNsdUdb2tUkLvepDurqWNNfX3YHmVM4t6/xdFOYvJGYj1XlhgIOMOOoF2nFWturZBpYsTspls2+CdvGj8vZ6VAYwibOgEdeqAhZLlDZk2nJWUTBKOc8Nq4OsEwnHUa9+85JgB0k6jeG9ZZk/XYQTFsvTJFrqlOAsaNdfar1CZWMYryLYPxmzASuixx7Q7FPFGwdhOprEY4o6x3xJ64IsQlZCLlnIUsr+2SHrmALRq85V9h/W2ZegD5q4cGH/Eo4p4zxEdrouvQwGskmYafItIBuvzt+9PXi13z26env0Yf/tYS8YhDPNTFkVp8tkQclrTOnV8pWWKARIHMV5UNqncV9yiCCthi5bEuDpmORRL1iFZR6zpn4tLIksCnoyQD0JMFjDksfs5DpktV5PMowjGjAsdz92IcgFek8g6e4/chWZ31IrEXKBnUQpKVgdhNNZGI+T4OSwxT6mcCpcZsj8WiMrC9pvsU+0FDM1oniZ8H5bvOkyj4Gboe/uh6KCVmmx+EobpQYJchoV4VColb82GtwMWDoLEUfwKVps8BUwC+OM5u7+QXCsvWSf/wzfDDvjGAGrP0GMeD/9jIOU3B6A4Z/nEaJRSUkn3zCWlp04EwSCRCUTTmKnLW8FeTSesugyjBi9I5wPKY1EJiKv3kB6djh3yBs5gRzSRoKXvwML3NwMOh6UqFfUe/jlzJCa//3us2PGGRzLHBQwkcsCc08Aurvv2fxmGu88BNbXXyGDr2AsRo7z3uwEOgo453JzAnT8/iHES73rBg2WoC+MtVWTAGzaPRzk8B8wgaFDRZCKNd3cwAR0cTJia6nlO7x7sJY6QltUSL5IBtdZmiBjTMb4r2k/GBHcrA2k9460hGBYeuf7J4c9dnozUAZHmN9WsDeQYlgLW8uQTB6kDWBQMiyRVVyFcGamlADMU5dR7BU7jfM1jbIu3z0EJ6SeZZngc93HNlcypoQjShFbX6edSlt2Fg8+Cf0jyQi6hBDjjbwWL6KdZgQgHjQLbZ2FUqJNnpoJzZFh4EJngJBRrPvOmUPHdDZHehv7XtR1QCmRHRg2OTzrtnJS5bIzTsNhGMiWX9OoN/h2lD5SKOwkGiWezf6ARtc36UDBO9iKbG2X6BLvdGOYHXIUAQ18J/hnNNje1+mvN9cKu2IRLV/bDyvuDyvuDyvuDyvuDyvuA6y4hw5y+g8z7pJm3NbKKM7yojEgz4t/qzpu5RbLokE8i0m9QWkUtCcMaN+xbBRmiyaA0jvjn/iJ+73PlYroRZU7GFmzCfzYA/NdomgXZHgJK7p2wZkkd1DVzK4NdFTWrsiljtndQCp+JcFikQbX6URxPxQuU4RVy5Aj0DBxbhNGRsQFTE5whZsg7d8pxiB2Wor6/DKREli1cyup4b++3/hzwtoe9LO7wbzNSAUR8WIjC8xHro4y1tr2zZMnhw4893wQKzo365ylSkwY29DpeCmU1QlZIpsPY/MIPO91PL6eQMtSaxtpRSPmRyxSAIwtfIWrpsoGAhHJZgJGmWi8rog5ij9TYDj/PImWCul58mR39Oz57tPB7s7g8a6gH5emhiNsctVNSyl6iMyhTtHYkJHcx2s2uBIWOTQQCipqMoJxtM09Feez4mrYINPbMErOuaqHkrYpHv668dcKmW0kS8jMdz9CzI9Ftl58Q1MYSpsaxLCmdW3KcJokOV9fVO80/Ky5a7MouxosBpN7GtAQUnqhFQ3b81maBNPwczydT3XymNnYgQRxwGDNvEEhVspoNOSKcsluwsnVMFzktX4rqWZlb/vp09bKNE74r83aQHIbUYpd2o+KW2AT0UqqHENM+Z3SxYy23FP97u7ufdVzlK1thA4AF1+7fpFnFZrI+REFlSUDbzPGmfhaMCNhPFkQzWf0if4Bb8vVNE2Ka/rT/utvcwT/ZfahMEkIp2WltbKIQv6BgpWX2tyjZ8PtrWfP+9Hj3a3N56PH9Wm6OKtp+Ymd2PTHGY28uh7o/KSVFdDKKh/CXbb77gU9MxbY6TQY+AePBv4l/cc/zQAweY0zAviCh0CYbHo0Dj3j1lnMIuI6JcgjBwoaL5ou9VSv1wdt25qCJuFBu6IDm3JxDOY05dHI6lxBCoep8UFzFD57Hj5+8mz0+PHW8Hn4fFAiY7UVNEdaShwjLja7RN0QZwEyMTOklrs9ZKtIDb1gVfwba63K+PFQI2jSjgb+dIZDxy+PJpMoe0jgwPIpJxkTwSAcpMiYjpilzpq7kpK+lkxn2e/3ATHmcTI01AVcckl9FzhzeoTMSHw0sNu4lrEjLKJxmi0b+b4f7LSH8ThmJwlSF/M8Hi1UrnAa2Ee2myS6Fs7CGKfwE7vh/jGit0fE1V5unxMBbmSnLk9m1ZtyqIAphpBem9NSMcEuReFydBaLFXRWauutqXE/8UQ+eKsyQeFHaHsyrrveNTXCZIjlhPhOft7BHEigbMnn1NF5P6djorCJn4GP8eVmDKNLxtNlcpMED53OGAP+5rZQ4IVr5OuRO1HqNZumffBlN0Pft1mW9ErRhA+kXLs1020/bF+nA83p4MZIylVQpLP2fMbuOGoNUvmYZ3M4zwvQkGHMqYH04ixKyFCvpeElBL5DAZ+Rg4pnmdB6ztIiImD2BSB52Oum7pR0EjHSME9HGZenzELk4yjZU04uKMZlJe+ZYRJRIrlxls5negsIjAEceHSV20TXB+eQ7QeIXeGDgWLbmeCASMzZuWWTaIkCvagw2LB268Il5B7pjtE6smgcZkoYYpen8IEIjYBN1CcrQ3qbkIdElQ6XgK8xH4+lYwKDKspUSg1cq0GalUDIfR6S2C5PVtTYZ02nrs3oN8b3kAeLr45O8A6ShoOHlM/7kmjBvlKkVghrL8DiTcq0OwR+VjOUs3giXDJODjffH9+HqpHKchdAFsHOcxNOCCI/OA0/i0VoL9h6/BhMufVZ5T2Tu2YXtB0rCW2JE1FLAdwtBIkBEdqVusgJ5E19/PrlbdJgwglGZsFYoyZdXVYzKfyZHzS3+p97s+Hot7/OovFvs2T82zAd4L/Pv/11Nv7t8yTHf59/Kz4XHD33g1GunlHuiucFuY9XYCSDpeghEtk0Tq5E8y3xOdVqeE/uUrF8+h95zhqgSOWFww84G+kQVxupgS0B0hMqFixvL7jLZBJbbIDtx86b0ecQEQot4Y6QRzib29VlkuhzEZACEtxah9+A0MzZJ63ues4ldEKApD7LC2+yjFgXAbWFwwZBTbVkTSY1SiDslVGkBXe2VCNnI3OadgQ6x0DLhNlw38zzgU5zVXJyznbBwBcZiO06VojJ5hNZT4M04Y4rTw/PA2VJTqOouHNGLgjsNy9iIjZmQFuKqORrayKIAIoG5SYAEtKTojoZDAdLAkKUszPhmR0OXRKPurz24AVHF2ThWA/9XtP+6LVoWMYKrDJLb/kIxRi1i3kSsdxSwlUhXqICR+wYaNNhPEkZktjUIMNKzLgIf6JNTUUZsR0mQoqJ4kRrI3flfKNncf5JEA256hQRHooGtn7ESx2giCxcIcqCwWsJdf4mMqE0NJlQQzIKWR1SwmwiJA+zLJrG86kDOEyFMawuNpAOlbBBIQCWyX490YxyO2EFbRcx00kjrou3IQmN70+6+8E5lkYyn4ro4WFHWsOrHTCO1uP+KHq4Cf1NRaZU6RkkldOIDDqFhYglGQZ8tLYbgPYuRvPJZNEJukUWfzLKFZMehhOaQTVJ6QS1ZEriIh4rLFIyrCAGqdyJM17mCjIwJurizqWo6De5eyPQePP949JG8IaFIIvfrlMJYeHkU0fNaq149OXfRbJ5qcC4BrnpXTbp1NL1msq/n1zVJanKxYFxBScXg+ZusSn3wovvlp4akG2+rgMQTGnBG7JuV8YWMYkCuMz4niMPtcSwkkc+vq0LZtoMflx7Xsr5YTiQrsPML5uSYtObKCuD4RA8VdCrTnOPlNUoHJr0f6FA68dZcb2sYd1cejo6h5Jp+QKlVH1jntDhZGIO5TWq3FN7yqS3hlZINHujkbPDqFgAid4oai25C4XfCKPAarQl2c3SEfEruVqPwg6U4WN7v/zyyy/t09P24WFPpNDy8C3vZV2SvtIZJc/NSusozp0I+cRSdvjKKifSMj18jfCkhWB4R1k4HxqKOImb1OBbjpxu4Jrl8fObCJ21wgnbwFp/PxUsMFl0ZkKWUEueZ2wU/uajNwJ+Sr/308Yasx0yjR5rqz33iQ4V6NACmjZoj1rBNKQbquevgl6wvq4C9fp6J/hZcflbhsOmHwXr66lEjK+vN/gXTbF3hx7Uebk0uMCaT9WxXgJ/8uDd8up+K5GY6q4r7mL3JS5Uq5ndNa3OQrmLzzgeWZzAeryhf17K6o8uc6G/okmKa4fJsE3P5Bvuoxtr30BwffcY3xmtUoNSEv7LrsYfZODfgwwck9OPBumUYM3d09U5nsXPYTbcLcXCW6bP1y/3uxco/vXZ0UWwyn/SzveoQYUGix48JwY5oPyw34KSN3gu3h2+3A6m4CGTyen5c95bawl5AiSzh15LkgBSvjs0MOHuu+NpZQFe1QaWV4Q4x4LM6/auc/NRXnlelgG5nMJkUSvPzYaum8AG7lRnncN46GsXibaOGX44j66Ur/xe8bUt6MTafbCyC5sL0zg0x7DoE2i+DRwx3qg8GM7vNN4DmRGTGEvolqtc1BIz9qNRKiL/UJrJ265ikXp3cUCJdtMQbuTDw43T0w1IrcH19d502pMMn0gQFC1Mc08Me1ojwSWBIGlYIuLmwHy5NjivY6hQQA78tIv1JTW6s9NrrIBUp0LKR0ktAkPzhmlKFB5gvVYsNPZ4xQZjiY6UK3O/PABxqyKpVzL89un6CduWeUfhtzxpNFL3qsll1MYgIVXdIcyDYnPJUEKuxjr3FRmR7+mY0rEqAXbfHxY4UrqTFllO66iWlLzY4Z8rHJoUNivTtY99FI5Tp4c2XJgsxgTvqavIbhUKdpHrqbiOpvduOAObbm1ZfpNx4lrYYgKIQ+smC6UbhOFSdlyLRSQ7dtql2Fi1t3aQ25M5bC3UV/TZRW3XTD531wavXu2dnu51u9iwjuXDz2Dj3cdeG9qWRRqsr8uAra/zvrpcYYBUA5Hl5Ebl/3m5UnHtyZ2D/pORYxjm1/00zO4AwzOPlDihsP7vrb9Ix+NJZEG51Lpz9besHJHxHZCKC4NU3JPy2RrCo6Br0MENKFxyFXF04qhjkvRSKqi+73P4uo5d1GaQIfMaUxIJOkQFwTv9qoI88D0GhHL3KauWh4Qh6qlCatOjRryDRyapTwbHY0vkPWieEOg/nVK+KMLhUGGdS0EAvKGUSs+ZMX/nsc2C+mWin5dpsKGNdc5RGWoKW0hLWqP1qqmMYB6slQ3I0Iyz3YZB0NTLDjfO9HrA5pG1Cpb1H5XyqLelow3hNp+oVj1x3dvUNyPSuOnappmhWfi+QIyqsLUgqocwP34HZMVS41AH8f+WQ8ATArPP5GabhMl4Ho79wEHslnDJIMDB5rMnz4ZPnz3ffTzclChsDQKMqtgYjUY8bUgZ8dnTY61yp+dJy3F6l8ViR38yGpWr6arzmt2aJYXZj/2oXy11eI1RgvBCRGUq6oLtGvyqUaLxhp5U8hAnd9mAWhHXahDdGa7dQWk3yO0Wrt0DeL9Ja4DbwxnxHt+fOHUHSHoZ1bwRwLwW7rwB1fxOIHXuCn54ny4Bdi6d5PZIh+tW/u7Ok6fPd7aGo92d7efPdqpSsOZ2FYaJTPkzCemGAjNdhhlGvt6zQ9eS4Wo5o9QyA9Oyo9HyRqBlutxy+tlyumZ0nJpl7RDR5gIFsb5O/Gjr6yJE8capEa4t6zpupvnM2O/W17nRWoSJcCtLBirua/Eamzu9Uz/5seB/LPj/gQUP+9Tvtty7p11Z7LfwTIaz2e+74v8wS7puLe5sb+1ub28/7w92RsP+ZsjwbSqDnnk365df638hxKw4Gec1IYPEXuWECw40JI4ir+oKsSg89bKrkVKwiIiRqWqaILj22wiWYUF5ujHRz8aItrCcMaiF8EVawSOZqket4BGmB//nnYB/6fw8MkBTzYYAG3RCJivBposqPbeGFBN2w67QGmuOcNFrxH0dw5NlN3twTKTvM9cUAot6wxKloLJ7gde+d9aqwD0N9O2VTHvpPBtY2x5rsJOFxcJ3ijDL+Y4ySMGAb8ksdqOtSYYAl2xqZEZfhLUxsA7MJXJqKIjXco6mqgsPORrjRCXe+nWsCpLlY4Fq5VKcqDcco1ACMAzkcFQnIBDlT8+Pu56FSQwPFpHMCTeAOhN9HiDEY/sZjUw4QEBYg09YYxoRxZHNNTS+Ge6vdAaAej5gt4amUJhyKpnC5qerchaWobBfSp3a2R08efzs6fbm1vbg+fBZ5KlTtqhK0r4TkrkXmKYLXZF5D+eqLYSHSM0lyyZvH6jx3Q4QOYUsi3ETvuqhwMYtW9NRMsgWoEoKqnNBEHTleoTPYokNQA2Wx80JenRwdbP5aI3EGh/hrqEY20CvWRBX43FCvrH7C+nqo2XuAC3rOgqH96WlNS1dftflX4y4zQ5KU1W9nF1HU5AUnM/7k3jwOqoFQyoNhb4TzOglYPpxNLOpj9ablvgqzK+XALMlwinfWfkod6qgtEd7epwsEdDwjg8+D6bMHIIV9AS/weXKXChijPl5uHhFI95lSqBqRPMBBgOAYrPreCDTU6lUFrf86q6mllnjNVWf223WWH/zkpW/TynI7utWmx+o17i+xIF9tlRQhIIjU0yE7tT3cR4Gm1vbO7xbk6iAu3mJ2AHY3+VprzAuR4/uJQohIUNLoCh5FFGeR6ejtpVVqtXSBPIUNE7huT/KTv5HZTeYZX1/kow9zJfcGM6ZXl48Ta2o7zIuoMbOVhcXXzaiNw3ZcWSfgtc7OEfiIuNTqKOYXhI22uhzSEJbmNtiYFeEdEp8zhrWFpwoL5XT22A10j201gq8jjt0sUQoXDMGVXwWvYJrBufEChwOSmjDNjxO0/F3EVjGVNDSEsv27s7o6U40erz95Plwp//Mk1icsu4WWWzrRWaxb0Joccr5RqmlZpgIbaZZegln8fuKYOHinDfMAiz6JRFji44ZW+BpnHiY7k2loqgpni0X+HitcnQ/VMqqGRA9v+tkrOXOyNIZ5Z2WB/tvD0XKct95YJHuj+SeGqVf2esBpwnbU7TcZTxw9m1XzEl3n7uMsiQD/f6y3iAYcCegTHpKPMLbVYAnp8iW11jnSOH+0pkySpulk/JQEGKJjfj6hrXlBY59w8q6cMvx1tX5/i+nR2cXV8f7F0cf9n+RKx2Pf40kzy+Wx5q/rd7gZngvSqPVONQX5fEQECLTkPoGuIXIqq+ZojsaeF4+K5aVM+hKq0xiuX3OYVk96OpOqoY23ikUNJ3hvlDgPNUgFbi3+tfLBraXJXHg0MxqZdyWEgOcPfsAOYAWlg+t4AgCHMI2L9I2Ca0PkQt4QS4jEuw+3YyeDkbh8+ePn+3ubD73RALdQndJA6yfr+6jnYdo55pIBfQyBALZHV8lC8jyYvtVzWit2vFZq55Syx0o5560mmbBwfv3lpHFVuAtjeqqsGMua4JGxm6RpoOlXIsJhT53MBFmjW10Vz/tJcpR9Fax8pEvs5C10Q9ax91wms+T8XcQaHMuaXmJdjvaetp//iwcbI/Cp4Mtb/m6hd29iJ0OyOp13sUadov69pXsVPe1i9begnWDT4UssUTl3TsXaWP5pXXnPucf4vz00sf1MsvUNvyehbr0ymMg+qUWXT/cCUejwbPNZ9HWaLQ99BadlHP3evtADylFPb+CZSYvf9sKy6/DGZ9dvVJ//11qoorfSTIPRQQCNXBqkG05RL0nbbYjzM1+rw/1IGhcJlKGwrEgMZikAeNh7UlnNCxRrIRCwECgjElxmaQji21gG96rYn3yiw9gdu4RM7TWK/wPPe6NdLLLZ2SPEQv6cdEJlBqIo8qaxtIBLFWOCRsjjOwB6abDVcE0AxQn+W/CwSGs1yG1TDP9EYeYTm7EV5alt+ylIeSnofqpETubBz0lMehQ41c7nc5az8ATx0V1U7mD6GwsMygNpwH/7kopShwVnMLvw4FiC13UzMkNHoeipn+gcMjFW+qMj4yYmYllDgRul3sYOD9WFrKjibtMcssGdS2/8vLJfMz3dMljwLWWyNw+tsP2f++3//K4vXv1678R+Mzy6WhuJlq5FmILSJJoUKQP8k4YY1heU+yjPEDwRjYhsDiTRQa7iDhzdWuI75jRabN0XkTGzQwxRwM44ULPzCWj1GsRI3mPmUV3kCb5nP3XQc5IQaZnNmma4gAIMpgzxJycPBPqnUVJOKUC+HiowxS+yyh7t59bWB/6AIep+m+VvFdb3jI5f71PSUTE0Z8geSAsZtGPMvZD9yj3qjfI54MeeXcN5zyHzhNfCiJUGQM4iyZAu0WkcQF9KXVRWNSRTjtBp+frumln1+tTaaLLXeSuOJ3rBEd/gxcd/ng7VJzIM03zwpac/x+BM8+dqF8l67ZPCbAAum2buOrA9sgglxpqpoDgP2mwK0+47a5hw3QWjju6zol0YHYjzqn7x9iOaj+65jwrx+svOwVMPLA+yXrzRlG3Ys80p1e3GbtRFHw0jfMjnBXmY8PfoPnGn0zr1sydb+tu3+RtO/6DNAESSecflzlehDKHuB2xT/qHxFR5bePwKi5JGNtXDI72coc3g3YJUBfHwEicihuOhPQwPswFnOsBMpCH52WmqbSCskjC6SXPOwnAn7CztfmMXislKW4DljhaNnk/Ml1qCupZ4fKuHmRrdoKjRAbSGPV+JNxxwDyzOZ2u02wURZSRhBe6h68lC4pftYFDmsM7y4BkxMidw3mmYewW5FCyiin5BIZZ7SUidgyEqR9BQC04klQuSlpJs1lKcDAOUiElbw0mUchJ9TdxToBYnMfl5u9bnJoTprCMKZqAOz0LeQVYqKNk2EZ+AS+qeFA/3ncCUtI9dzMm+EPpEsppWGCmngeJW7dRf/ZVDcOLD2lZflOL8vd9B6B0V6DOFnfRuR9OBhoNWa3t3ds3+bI9mo2vlhjuRsoHlHx+HExSSmgsriV8kL9Aj0lDmRe1lAzeaH60w0nUib8+EMWop0SUokQid4203ZAbEydB9/2xoNiQWEABfgbyhuGrgg9R/zyIp5LgoWCRrSDkX9RlZ3AkvARFk/clvLwdzDtgPTnXkjG28OshM9XNpYUmbUUwdihuuGFN3zMKp4BsK9JsYYaBARPKCD9RTBX2F9IIhrhzeq/hkJzOX3g9btsEN5PrSYMLjNTV2I6qH5tqpFEeCPNKToIJSWpZmFNiHJogOG3nZ8dowk/nR8cstptkbNAKZ5LWg5YLo0w/WgJIlJLJ3XAU2S+0VlbpNJyErD7ESXB0Rutj/+1aGVbsyZPyfuUGtBr27enJIbZuzc59q1drbvKrp/GQNrBLaMt2m9l4iqhtE/SMi3GS3tb328K486TWX7+EoFcj+jiHhRbgw47dv3NrjyiH7c6E0dusXD+jVMJ9PSSQbyWK/8Hn/gfic2/m0SWa9DgyUColAvZKIL8sZ8eqoAqiF95sidsV3dHQS3JxQrp7QwCOUVBeiRWa9DiZzQs5k6ueVtYEWmw4cm0xZVGeBeqqGCzSmQpPYheq+o49l3H+Ms3e6qFwv565nxCO+8INQQ0FaamM6zeMMmv5Z71SSOp7PBSd4AjMKuKqVWoTt3iP0Enk4zAA1Omkohq4ShA0XBJ7jErrnls95xLR7yugJDXKxyO7hEzKugu06+qpgJ5JRyNO0RHgXdwI4U10RWEfSzkRtsLo6ePRs93N57ubzyM/FsvWUPb6EKGR/CyZVQr9y9Yh04pexz64RwH8BsuTkVVBo8r7Azq58cUwrD2l2MYKrO+UuhecJEO4ahRHtagSCRuBlBMNcOXk4Y3Rl0qRK5xdUI/z3gpmkygk7JCRnbuPbkTGg7DDjJei4w1d3fiQSOfJf8NoOGfwZDVlWX6FZuoERmh0qE4cZ2/OfSeHQc1usE7h/fOT6lB8tE53imDzAPHvGRbT8rYx66yRxOwOi4sYvResbq4FPcO30RP7mAWoc0AFcx8za6pSaydY3Vpj4fn8WJDFccIDTTUZfwMmnAIxaWslz0axEzxQ2u8BOHGeRe1ZStDTJZaDYAC4/0BTFUuwKMEq2MVp12G4p7iHolwFIIIBpstqMOFkrHiKKzgsgNoySycTC7Ln1cl84xZ75WScKHM4Q1Plwer5/sXBq43zdxdrQVsaCZgwb4V7YDUJ4w/MLDwTv8UpgblPL+d09pGHI0N+xdVp+DnYJPyYNTU5Yy+Zo3UJC5nIrvKmwzcj1IKaBjZsTJjzkqAYRVRXnmFWqU9PcrBVvgNRw5/fsoCIY6Yl1mtgsOBk0TsrLyOt8ESX5R3pq5YovfVg5+rQSQFwTgqiHhmCHA4lwWYIAmQuzGP47Ads2KouPELwALmLh8xeg4TcKwPh9JrAkWXv1msjS1plOPWNIZosLSyrJE4KZOZpIryLSvBgcKvQJam4X7dR/zpNPyniMwhAyBnFdCGUQzzPO8Gf5+zL0hPRFWFsyhznQIOYdRBdMc4cc5IRsvYVpVcr9EUv+lxkYc8r06jtQ4fzwheIGq4YZESnt6b7NDzAATTXDE108FEN2x+42yWUPxkM6xPgLNiNtcpGEoTuRlybr7JQWam9e/iacGqIfpSMuTw2cIfRhqEnCwWzUdalcnorRzTA86yKYVX4rVq6mi399zInOmaBouwHaHZSGMglDWxkz1tu39HDMKAsdI+dC/hzBHLPvB6ecVwB6IRq6Qf9STP9yTIgfGb92iE+d1fOlwoswxuxDTEbhQg5wkvB3bdY3yK46WIoY4u7qbqIZoGvPggnaTLOEVbYK6mwPa90Ov2ZKYOUvE5luv+p0Ym9UM+vxxv+gaH7e2Po1oLEPtg5qvBWQ7vvM/9gHkYJ0ZgUDnmj6zU+Q/hBcR2Bd4Y5fNIoTx4VBlI5ZtxFAly1MbIKuxgOClN155AB7GYpcdchpsEeRom4KHIGk+TAD8nEZxZgQSEQUZA8hw75u9axJFLm/ZEJCoHqIeBVcVto/llzYBK0H2BmXw9mpiEKFF5/lIzBVsnoARnBsWRhPx78AOr4JqCOf0wD4IVqwXrWH/AVbSx9LknWVxj6tDjXCFQt8X/INIZlrg2yBkgoYqCPARC66zwyLG5O5oNZrrRlzn6+ONq728Z1mWx2vt3IdZlsdZqtXF4Ly3ar4DLZJ3USIlo0GkUDBWVF56xs56z9ZiEkCoz7xPapE8M0zASyKFNfn6SDT5hAZUtRa63KH2TqH0aTqGArvLX9sywmzPMgaZwQqlChpt4cgmTemOmSlybHnerK3BDTPAv06vT+7yhLzaDgZSFxM3PP80H3vBQWnJ4crorHYo0LkgnyZ8fC7N9R9nYnOGeVOUmLyBrFax6nsUgTTC7Mcw7FqG5KXAtAgsrFqqWH4GWygyU1iHSdxwaTusWh5DSPRJsTBqKWu54cs4aUuEnuF0em1rfAcXWZPBHO87J9vxAqQWeeWuQnwsIBnQWwbg2XXi4mEivswQJQ0v0dS9B1PBzCHhYnAx50QqHFOmAHgsPFR8KhxhwYMimaYV6b0ec4L1iwVRo756BsBz8nUfDzaKSAZuZEIECzNCDDuiQDmRXZDrqY1gPK7q0NIm9QCSuanoTOshvS57LlB/ty99YoauRmRIcCVrJ1glF37twPgXVPisQtN2GcYZUNWCVFxDSlcSicWT8cfLpl/OvpLCwM4ZSsXBFUsOWyaJpiqtU0Qmf2RXOjrcXCMF9JS8Wx6nCJuWhllwlbLMhTG8GO0TahzNpHCidxAJRaHjIBHeSjSfTZtsiNdoyTAD+awnK2iV0mOKeyeMoCvBwSuXmMvby8MI27EbEWlwkbGym8zgG3cAHaU+FPFAw2xJJApcEQ9l66s9Pbk3JKBksGQDQFXAIZMaJgaeZaVDXP45+4TJjxsuQ2LdG91fI2cMfAMEiS/yIJp/EgqIVE0lFeX9+rLgU9QkL1OEOyJFNJjoUIVDKcR/SYkIlySDsoxKfTVFgrgnkyiadxQQSvWRwVC3fpy4KihR05vmhHsQsrI8QvkYkMkpskrJl7laLqfWZEZ1Be6LY58LYNcAwH0d76Ok1sXgxoPeI+0xOTE5Q5Ldk8ENyGtMemyLCgmCG52JW9rTKsNJa0Yg3Wpe5PLO/wJqXMg5CNwXmRReGUKGi9pA2niu7ha6ypaTwJje81nM2yFMPJgUrSBjUu9jp3DcXe+ro5IGCh5YuX2DH0+u1eHFAGIYkKbKkzatFCjBTpBJYsB7MDh/v+hIk2TTAbRaLNZoiZjRNRfNkKKIKvvnyZFK7FmClQOcxAp8UAJU4oP5TEAgrZDYMcg0jOEYNMquS2OeYsKcqMnZdJOMjSPHfUcrcvLSMLDOM8m8/oBjNXmTNT4qyqWOXKc/KQS+kwYt8+36VxIrFAbuSzMAkNqxvtMjEpHk2ncMvPrHWWO6NdtngyquvKhHhbm0weOdcbWTkwRGy+FYYLynNM+GIob5eWVR7VMh6SjwRco5HSQVvrE5sqJ4vWZXKxmIne414hfVKDZPj686IQKw2tnVE4EFtzXGPF4k1RZqilU6vUyNZlokZNuiT7Czflg6L84mgvWPVnQAd57TKxkPkRRcS6yYqDSHc5luxlouHjJIhOwkwpcfN4yrQGi6DUGxa/iD9E8EKXOBrX1/cuk+s4L9KMh5U1HpEE+Ml0VO6Ts6rWgssEp2WcmNUrmTq0mMxrV0a4EMXOluH+NJqEY9wbheRdpgXxO0/0ivMoItC/Dyag/kaioZ1HW7JWqdTgGtIjHc1DLJ0BC/B86RXCzSEuiLIMZ1/VQ4BP7jRo2DK026mBh1E+izWlIIsUQClOxq0mYU8UqrzSDruEshsr1eP4LF3Q5nbzTrfLhNa4cG7XHJ6coKXHHaQQIxg3nXiuWPdQEbwkE/IxEyU0GMR6FNLAZNF1lBDLtdyyVUmjQXRFjy0LyP1ibM0Zepn4Z6gnadYJAknZdRRomH5+maRKvsbca56ZG4MR1xH5xtHeaq8Ip2EGDvNeEfb7C/7HhI6V8ljQAca275hguVVaRJNzlY5JCCBHhepvo6gYXAd5OqVUtUijk9rkje7RUuKMZyQ/Q5RVsXg8j4dVkVhkamFYN25fSxrle8mwV04gesZTSCNiYfLVene9iPgK9zJ3jzcyBOhGUdVIvGW38mVCB76kYonAZzVjHG438XAu907CJgTnRmFNWS8bYRAJLK0XRr5hA5FXvpgP4/Qhzst7fNk+eVI6otnuUi3+b7Xe7GZOabqB9MrOh5+ksEAjbtUUPVLe8GavP1rErvzJotbDqcf8twzL+voHSUcOy+Zxc438J2sH+40PaDjLKIqGOLENhsZlQraOimePYllCXhRQB1ShG9pWQNbi+4CrMPlzpTiR2+uIHBWe0THMXfMVc0LG/L0imONbBpUXKYDsScM0uI0MmH7h8FHJIHzwf20eESc2zobumA6zVd/2FQoFPZVw7kVCma/K4MZ0gTaJHUtpYcKYLANSH16bYh4M0iwiRYAPrLKRjKOAnGZpPeQqoysOe129JDo82AWIhZjOChmncVR4Y4R3ZZy8r2/N9FEArppmKXEao5lYhVUq6Mj0eyIne2Pt7GfRaGJI4+EdyQvtW40TlLvRVXhGy4vLjVxf3zPqn2m4AXNEu1n34lGeU1BPC1cFhkXjGN0l4XLQi5c6p3xvqjhDxmk4mWC75JeJF64ofSgzomur9lhV5/V9IGX09oILQ5YR+13rSIGxiY0O3e2h7hoqlrfH15ZqNpdXJlFgfG2R9LJXXu0dgWu8gc6CAwhwJvLaqjK2COOFoblwqC8s44WEn1aYXdLlPGqDMIo2n25v7j4d9gebm6Ol/NdqGGDykLtCrmBXiSYzspwT8EVeOAAXY6KILxE/i825iZqDh43Sx/mfbIrWMSRLtP5xP5NMhemjltCjkf6jgenDzAl+ONE/7mGpSaV4QILDRj2Jgezxj5vz70YMlyRiJ4fBfVvFvH6kB44CUEBq1dNeqMa+H6ZAnF+x9+sqGsaUv1gbzV5e9poedCQvBSYjaYkgCff6N95A9J1Qu3y3vxNrJ8FjhXXYISM7zq8NzynnXJtQ14fHKOw3xI95hhNvDytxik2MJ68gNUGOACezvxQcKqF/2DPfJRJcLD7DWRqzlZA5XaiCikTBRnsviY2fnEgm3CS9hSHB2ibLJfiMxgwOpZYHCfEqOGmevIAec85lFd7ULCENEPXGRmMkqwlu5aijkvpeu8bdSJaq063G5OlI7p524603vdOqaXRKX9o9fN2QOHcnPasI+0RMJF4HxxMrzs+IUZtNgNhC+JVFUdHZ/uiyhDcAsmhMfjsfftrQpGwq3DVk3MSIjFWZSc0MZkd7WVeN2hcHLxmjhbu+LKI656loVO9gkApbM1uq3A5B1dYeC1ilFC0GHwR4mux24teuK4as7SRIppnnSneBBbmwOuZpT5LO00nk5oz2Gplrez7Xa10Swx/pdMPouDHETmwNQnhwCZGBRx3ALfa4ZhG4q2+iVhAOAOg2iYaIgPvI0kErEF63ll6Z5sjyF7Mtl5MHaPCKYhINryRQY5kR1A38kkIh9QI9ZjWrPiS5BpxN1UA3FnAmgS9lncfjtnUyI6tYW0LVbRi52Y5BXXRrb4lW4hrdSQmPq94AUrfnkyKesho8L+IJ2fxMnpDbVBrTa0QhjRZXYVGEg2s6Nf277DuwUl8YVmoHFUXBNgJbs2VHQ6siSEx8zYX0on5rchdksK1NjCaIE6iuQ7OwnQpQDHK4QeSWZgEMMfn+bOYPhUtm/XsNhAXmATTC79JtXRt39vmHEvdgJS44T3PGW+IklBIHpihxLVdxq1BeKlOmZcd0OTMdpkyrbpXpMVOE7TVR1quZnAYgt7mCPCDTcHAdJ5G5+w05/TyJm3FUK6teD9d3SVwPMkJol7rdk1iRzLyoxfKBdBMlwzS7+jqcS34Zq9wIxbWpGH5qRH1mKOSUOcc9LpkbSvkcTjrgw7MUIZSzbmlNwxR9GViDjL1xJdDPWLrCJHh1cXFurJRKBvju7ZtWwDlsgwnpYHbMIQEC1B6XvT1QLBzGwoykgAF+1/y/JhXCuYzo9BMVwtEs3ARuVTD0O/cV7yyvKh/3qBGCYbHiZ/zelbVYVihKIsv9KgalZb9VZeVLNSMMm2Tn8WPGnYVDo2CmGxMbs/HXnAP8GXa5zlVRIvWiY6C6WqsEFvScS3OAaykeHMFgeAqtZXxHkzf/eE3e/uM1eeeP1eQvrZWp0NYB9mhwzfBH1yt7Kxt9o8hu3GxuzBbTol18Tjb+bnfYlw3aYxmiCShPmE7dleuimOV7Gxt5mAz76ecOPDSdJGLQmxyJCHGxIIoS7ie8yK+jBRlQ3XiBWQwCRYgwKFQp/fhqWlFrqx4fVdon8Cji2oe25qYNGcfkLItG8efgcmV/FrdfR4tLmsMXYR4Pym1Bl9BXajRhzudI6fnSWsGkikXwRTpcHDGWrZuGbG+fUiqc/cGcdBbeywpnnk1WzuCrcDiEcIR6EDO46ZaGL7a8euNi4f4tYqfzAFqa4Zn9l2hOipyQUisbAMCqIdcYlUm6CCfFgkVbGC6GKrWY/Hq3/mlUhEIc+oVUgXg2+/+nl62VUZzlhQhATm1hzZeURAZhIo+y/09QjDuDdIrCOZ3UGTyT8cFY1m45Yl8j6H2O91nZWxnFnyMximXF1ZD7svV4a6f9+Fl7a1eF/EXtT9Pws1rtZlF2NVgMJv5Q4Isrik64CSdXw3CRr+w9Bh8SDQl+5S9GJM0kA7QozgSNbMWsTZNWRAfBZMLY3OVxYomg/C1U83GalXcDFoAVQLxhcnRk0l5ZynNLzIZXDHcIcf4KecTAJkCbpnFyJQPG2ZWP3ezffpwV13UDaZ64Y67NM/VLx0vLrvm6dmmV85KbfrnytsBwHl1pBqjXk4vNJ3tPNve2nnceP9v8iy7dK8szjpOn0rVfa5JSbWVlBBGjfjda6JwnyIGf8pg8dtNPOVnUY0unU4SH32rIuEqmeembWyjX4Wzmfe0RfDtnrhxcPsd1hZLEo452wDHkdeV1MwTKzmTQT84usMzG9ktLUVzHHey01qf/tT+UOHzdXTRz0edWyvSxDo6kMvQ5pfoCRyM5ak11Om42Z7IB9knWgo895NoSXcCZ0mFSZzKT8hrsSPKro2LbIj2l19G4XV3SGQtlTFRpi9TA/fMTh2N4b2Wz87jzuCKXmEe/8P0zDRPnwDwPM9jeJ4vgHYVXGIvphR39cpGOtOm8z+EZHHsnsZs1ZV0mf/rTn4LzKJvGea5B47+R7BMIL+tvlnfFeS747TL5rd1u03945aPIcL46OmbA1DZdYdFww5fGNv4UzuL2p2jRxvdrwW8E7DBzalkNh9M4EbijtYBrsvLZwyojkc1U1TtAVg2l6xvNXhT3nMkQnAeitkpgJkmyh9ZcJv8RrK8fa9KKaTkia+h9wN2IbNezJhekEBbBx5J5e0l0f+Jz29vbwyK8TIAlRCpry0TkiM/ApoKHeQCUESUXKlV7mQikShYJSjLhjXWoksvEngWADN2YTcKYTVVsX2Fd4eNK39H1sQ02se1FY1hprex5WjlO6us0L/Di3/+OQKB32eTLF3z9N8A0rex9/LW1wtIQNthHOrlEiqwz8bp7YFXX61rQ1HY92BMc6WREhC7UWvnER65t6pdfHRL5j3+XBw64rjaSv50CXE3vc/v29raN8W/Ps0lEQzwkQiwuYp9klIaXSU2EqmQ0M5phCP/pkETqKZ9fTtEt94+9j2h3WNGmPpE2Jf9wYJ38gSgrVtxiZoxveOXvf2dd7csX8zz/1PiG0eb4aczLr1++fPl/eJKvVg== sidebar_class_name: "patch api-method" info_path: developers/apis/ottu-api custom_edit_url: null diff --git a/docs/developers/apis/retrieve-payment-transaction-checkout.StatusCodes.json b/docs/developers/apis/retrieve-payment-transaction-checkout.StatusCodes.json index 5ad4100..73d5c87 100644 --- a/docs/developers/apis/retrieve-payment-transaction-checkout.StatusCodes.json +++ b/docs/developers/apis/retrieve-payment-transaction-checkout.StatusCodes.json @@ -1 +1 @@ -{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short attachment retrieval URL. Max length: 200. `shortify_attachment_url` request parameter should be `true` in order to generate it.\n"},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"Short checkout URL. `shortify_checkout_url` request parameter should be set to `true` in order to generate it.\n"},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead.\n"},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. It is present only when [Basic Authentication](/developers/getting-started/authentication/#basic-auth) is used, because [API Key](/developers/getting-started/authentication/#api-key-auth) Authentication is not associated with any user.\n"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time.\n"},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. The request parameter `generate_qr_code` should be set to `true`.\n"},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"It is a JSON object containing preloaded data necessary for initializing the [Checkout SDK](/developers/payments/checkout-sdk/). This data encompasses vital details such as customer information, available payment methods, and specific transaction details, all formatted according to the Checkout SDK's initialization specifications. It must be passed to the Checkout SDK constructor without any modifications. It will be included in the response solely when the `include_sdk_setup_preload` parameter is set to `true`.\n"},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process. It can be used to perform subsequent operations, like retrieve, acknowledge, [refund, capture, and cancellation](/developers/operations/).\n"},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment. Possible values: `created`, `pending`, `attempted`, `authorized`, `paid`, `failed`, `canceled`, `expired`, `invalided`, `refunded`, `cod`. \n"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"CheckoutGETResponse"}}},"description":""},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file +{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer to work with PaymentTransaction instances.\n\nAlso uses request data from other serializers to save into PaymentTransaction db table:","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges. The number of decimals must correlate with the `currency_code`.\n"},"currency_code":{"type":"string","description":"The currency in which the transaction is denominated. However, it does not guarantee that the payment must be made in this currency, as there can be currency conversions or exchanges resulting in a different currency being charged. \n"},"pg_codes":{"type":"array","items":{"type":"string"},"title":"Gateway","description":"The list of [payment gateway codes](/developers/payments/payment-methods/) from which a customer can select to perform the payment or authorization. Customer uses only one PG code. For [Basic Authentication](/developers/getting-started/authentication/#basic-auth): User can use the PG code that has permission to access to. For [API Key](/developers/getting-started/authentication/#api-key-auth): User can use all the PG codes.\n"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices. Available choices: `payment_request`, `e_commerce`. \n"},"billing_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the customer is living and registered."},"state":{"type":"string","maxLength":40,"description":"State of the customer's city (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Customer's country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."}},"required":["city","country","line1"],"title":"Address"},"branding_options":{"allOf":[{"type":"object","properties":{"payment_methods":{"type":"object","additionalProperties":{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}}},"required":["payment_methods"],"title":"BrandingOptions"}],"writeOnly":true,"description":"Per-payment-method branding customization provided by the merchant. Use payment_methods.{pg_code} to supply display data for each gateway. Only pg_codes present in payment_methods will have 'branding_options' included in their sdk_setup_preload_payload.payment_methods entry.\n\nfont_weight follows CSS conventions (400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700 when omitted."},"loyalty":{"oneOf":[{"type":"object","properties":{"enabled":{"type":"boolean","description":"Required. Set to `true` to mark this transaction as eligible for loyalty rewards. When `true` AND the pg_code used to settle the transaction is linked to an active wallet service whose provider declares the `POST_PURCHASE_REWARD` capability (currently STC Qitaf), the customer earns points on payment success.\n\nSetting `false` (or omitting the entire `loyalty` object) disables rewards for this transaction even if a wallet service is configured."},"reference":{"type":"string","description":"Optional merchant-side loyalty reference (campaign ID, program code, etc.). Forwarded to the loyalty provider as the external reference for this reward operation. Defaults to the transaction's `order_no` when omitted.","maxLength":128},"metadata":{"type":"object","additionalProperties":{},"description":"Optional opaque key/value pairs forwarded to the loyalty provider as additional context. Treated as a black box by Ottu — useful for attaching merchant-specific tags such as campaign IDs, segment codes, or audit references."}},"required":["enabled"],"title":"Loyalty"},{"type":"null"}],"description":"Merchant-provided loyalty intent for this transaction. When `enabled=true` AND the pg_code used to pay is linked to an active wallet service with reward capability (e.g. STC Qitaf), the customer earns loyalty points on payment success.\n\n**How it works**\n\n1. Merchant sets `loyalty.enabled=true` on checkout creation.\n2. Customer completes payment via any PGMID configured on this merchant.\n3. If that PGMID has an active wallet service with the `POST_PURCHASE_REWARD` capability, an asynchronous reward job fires after the transaction enters `PAID` state.\n4. The reward operation is stored on the transaction and automatically reversed (proportionally on partial refunds) if the transaction is later refunded.\n\n**Provider selection is implicit** — Ottu picks the right loyalty backend based on the PGMID's wallet-service configuration, so merchants do not need to know which loyalty program runs at the gateway level. Adding new loyalty providers (e.g. Mada Loyalty) requires no payload change."},"shipping_address":{"type":"object","description":"Nested serializer to save Address data into PaymentTransaction","properties":{"line1":{"type":"string","maxLength":128,"description":"Location details where the shipment should be delivered to. Should be filled by street & house data."},"line2":{"type":"string","maxLength":128,"description":"Additional address data for accuracy."},"city":{"type":"string","maxLength":40,"description":"The city where the shipment should be delivered to."},"state":{"type":"string","maxLength":40,"description":"The state where the shipment should be delivered to (sometimes the same as the city)."},"country":{"enum":["AF","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","HR","CU","CW","CY","CZ","CI","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RO","RU","RW","RE","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TM","TC","TV","TR","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AX"],"type":"string","description":"Destination country, [ISO 3166-1 Alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Will be validated against existing countries.","x-spec-enum-id":"8067456ff4917829"},"postal_code":{"type":"string","maxLength":12,"description":"Postal code (may have different length for different countries)."},"first_name":{"type":"string","maxLength":64,"description":"Shipment recipient first name."},"last_name":{"type":"string","maxLength":64,"description":"Shipment recipient last name."},"email":{"type":"string","format":"email","maxLength":128,"description":"Shipment recipient email address."},"phone":{"type":"string","maxLength":16,"description":"Shipment recipient phone number."}},"required":["city","country","email","first_name","last_name","line1","phone"],"title":"ShippingAddress"},"agreement":{"allOf":[{"type":"object","description":"Serializer to hold the recurring data information.\nThis is required for being able to create recurring payments and the PGs\nrequire this information.","properties":{"id":{"type":"string","description":"It serves as a unique identifier for the agreement established with the payer. The Agreement ID plays a crucial role as an identifier for correlated payments associated with a customer order or invoice, highlighting the need for it to vary based on the correlated payments.\n","maxLength":128},"amount_variability":{"enum":["fixed","variable"],"type":"string","x-spec-enum-id":"559f7896c94c0925","description":"It defines if the payment amount can vary with each transaction within the agreement. Enum: `fixed`, `variable`."},"start_date":{"type":"string","format":"date","description":"The date on which the agreement with the payer to process payments begins."},"expiry_date":{"type":"string","format":"date","description":"The final date until which the agreement remains valid."},"max_amount_per_cycle":{"type":"string","format":"decimal","description":"The agreed-upon maximum amount for an individual payment within the series."},"cycle_interval_days":{"type":"integer","maximum":366,"minimum":1,"description":"The number of days between each recurring payment."},"total_cycles":{"type":"integer","maximum":999,"minimum":1,"description":"The total number of payment cycles within the agreement duration."},"frequency":{"enum":["irregular","daily","weekly","semi_monthly","monthly","quarterly","semi_annually","yearly","other"],"type":"string","x-spec-enum-id":"f7d3278be09218f0","description":"This pertains to the frequency of payments within the series as agreed upon with the payer. Such as: `irregular`, `daily`, `weekly`, `monthly`, `quarterly`, `semi_annually`, `yearly`, and `other`. When `type` set as `unscheduled`, `frequency` should set as `irregular`.\n"},"type":{"enum":["event_based","installment","recurring","unscheduled","other"],"type":"string","x-spec-enum-id":"a78a057f002d8a8c","default":"recurring","description":"The type of commercial agreement that the payer has with the merchant: `recurring` (Default), `unscheduled`, `other`, `event_based`, `installment`.\n"},"seller":{"allOf":[{"type":"object","properties":{"name":{"type":"string","description":"The retailer's trading name.","maxLength":128},"short_name":{"type":"string","description":"Abbreviation of the retailer's trading name, suitable for payer's statement display.","maxLength":64},"category_code":{"type":"string","description":"A 4-digit code classifying the retailer's business by the type of goods or services it offers.","maxLength":64}},"title":"AgreementSeller"}],"description":"Details about the retailer, if the agreement is for installment payments."}},"title":"Agreement"}],"description":"An established contractual arrangement with the payer, which authorizes you to securely store and subsequently utilize their payment information for specific purposes. This could encompass arrangements like recurring payments for services such as mobile subscriptions, installment-based payments for purchases, arrangements for ad-hoc charges like account top-ups, or for standard industry practices like penalty charges for missed appointments. \n\nNote: If your intention is solely to store payment details for transactions initiated by the payer in the future, then this parameter group should not be used."},"attachment":{"type":"string","format":"uri","description":"A writable field that accepts an attachment file to be included in email notifications sent to the customer regarding their payment, and also be available for download on the checkout page. This field may be used to provide the customer with additional information or documentation related to their purchase. The value of this field should be a file object. Upon successful submission, the API will return the URL for downloading the attached file. "},"attachment_short_url":{"type":"string","format":"uri","readOnly":true,"description":"A short attachment retrieval URL. Max length: 200. `shortify_attachment_url` request parameter should be `true` in order to generate it.\n"},"attachment_upload_url":{"type":"string","description":"A writable field that accepts an attachment that has already been uploaded to the server.","pattern":"(?:pdf|jpeg|png|doc|docx|jpg|xls|xlsx|txt)$"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"card_acceptance_criteria":{"allOf":[{"type":"object","properties":{"min_expiry_time":{"type":"integer","maximum":365,"minimum":1,"description":"Specifies the minimum required validity period, in days, for a card to be eligible for payment. If set to 30 days, for example, cards set to expire within the next month would be declined. Additionally, it defaults to 30 days when the `payment_type` is `auto_debit`. If any other payment type is selected, no default value is set.\n"}},"title":"CardAcceptanceCriteria"}],"description":"This field allows you to define specific rules and conditions that a card must meet to be eligible for payment. These stipulations apply regardless of whether a customer chooses to pay using a saved card or opts to add a new card for the transaction. By leveraging the `card_acceptance_criteria`, you gain the power to fine-tune your payment processing strategy, tailoring acceptance rules to align with your business needs, security standards, and risk management policies.\n\n**Example**: If you run an exclusive service that caters predominantly to premium customers, you might set criteria that only allow transactions from high-tier credit cards like VISA Platinum. This ensures that payments align with the exclusivity and branding of your services. Remember to configure these criteria thoughtfully. Striking the right balance between security, risk mitigation, and user experience is paramount.\n\n**Note**: The `card_acceptance_criteria` field is applicable only for direct payments and not for hosted session payments."},"checkout_page_url":{"type":"string","format":"uri","readOnly":true,"description":"Frontend Checkout Url.","maxLength":2000},"checkout_short_url":{"type":"string","format":"uri","readOnly":true,"description":"Short checkout URL. `shortify_checkout_url` request parameter should be set to `true` in order to generate it.\n"},"checkout_url":{"type":"string","format":"uri","readOnly":true,"description":"URL that directs the customer to the Ottu Checkout Page where they can see the payment details and available payment methods for the transaction. If you need to share the payment link over SMS or WhatsApp, use `checkout_short_url` instead.\n"},"customer_birthdate":{"type":"string","format":"date","title":"Customer Date of Birth","description":"Specifies the customer's date of birth. This field can be used for various purposes such as identity verification, eligibility checks, or customer profiling. The value must be provided in the `YYYY-MM-DD` format.\n"},"customer_email":{"type":"string","format":"email","description":"This field specifies the customer's email address and is used to send payment notifications and receipts. Additionally, it is used for fraud prevention and is transmitted to the payment gateway. The email address may also be included on invoices, receipts, and displayed on the payment page. It must be a valid email address. If email [notifications](/developers/notifications/) are applied, the `notification.email` parameter must be included, making `customer_email` **required**. Otherwise, it will be **optional**.\n","maxLength":128},"customer_first_name":{"type":"string","description":"The first name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in [tokenization](/developers/cards-and-tokens/tokenization/). All the customer's cards will be associated with this ID.\n","maxLength":64},"customer_last_name":{"type":"string","description":"The last name of the recipient of the payment. This field is used for various communications such as the invoice, receipt, email, SMS, or displayed on the payment page. It may also be sent to the payment gateway if necessary.\n","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page. It becomes a **required** parameter if the merchant wants to enable KFAST on KNET (KFAST is a tokenization feature on KPay page, which works with UDF3 mapped with `customer_phone`), or if SMS [notifications](/developers/notifications/) are enabled. Otherwise, it remains **optional**.\n","maxLength":16},"customer_phone_2":{"type":"string","title":"Customer additional phone","description":"The customer's additional phone number, if any. This field can be updated by the customer on the payment page or in the Checkout SDK.","maxLength":16},"due_datetime":{"type":"string","format":"date-time","title":"Due date and time","description":"The date and time by which the payment is due. This field may be used to help remind the customer to complete the payment before the due date. The default value is UTC. Format: `DD/MM/YYYY hh:mm`. If the `expiration_time` for a payment has passed, the payment state will be changed and cannot be paid. However, if the `due_datetime` has passed, the payment can still be paid, but the customer may incur fees or penalties.\n"},"email_recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"A comma-separated list of email addresses for internal recipients who will receive customer emails. These recipients will be included in email notifications sent to the customer regarding their payment.\n"},"expiration_time":{"type":"string","description":"If defined, any payment transactions created more than the defined period of time ago will be invalidated or expired if the customer tries to pay them. This field may be used to help ensure that payment transactions are processed in a timely manner. By default, this expiration period is set to 24 hours from the time of transaction creation. Format: `DD HH:MM:SS`. In order to automatically change the state to **expired**, the \"Expire Payment Transactions?\" field should be enabled in Ottu dashboard. \n"},"generate_qr_code":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to true, the `qr_code_url` field will be present in the response. Upon scanning it, the customer will be redirected to the checkout_url, which is the Ottu Checkout page."},"include_sdk_setup_preload":{"type":"boolean","writeOnly":true,"default":false,"description":"Set this to true to include the 'sdk_setup_preload_payload' payload in the API response. This payload is only generated and added when this parameter is explicitly set to true. By default, it is false and the 'sdk_setup_preload_payload' payload will not be included."},"initiator_id":{"type":"integer","title":"initiator","description":"The user who initiated the creation of this payment transaction, if available. This field is optional and may be used to track who created the payment transaction. It is present only when [Basic Authentication](/developers/getting-started/authentication/#basic-auth) is used, because [API Key](/developers/getting-started/authentication/#api-key-auth) Authentication is not associated with any user.\n"},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction. Available choices: `en`, `ar`. Default language is `en`.\n"},"notifications":{"allOf":[{"type":"object","properties":{"email":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an email notification has been set up for the **failed** state, then the customer will receive an email.\n"},"sms":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized","voided","refunded","captured"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized\n* `voided` - Voided\n* `refunded` - Refunded\n* `captured` - Captured","x-spec-enum-id":"a9456842df943874"},"description":"Will be triggered at the following notification events: `created`, `paid`, `canceled`, `failed`, `expired`, `authorized`, `voided`, `refunded`, `captured`. If the payment transaction transitions to an **error** state and an SMS notification has been set up for the **failed** state, then the customer will receive an SMS.\n"},"whatsapp":{"type":"array","items":{"enum":["created","paid","canceled","failed","expired","authorized"],"type":"string","description":"* `created` - Created\n* `paid` - Paid\n* `canceled` - Canceled\n* `failed` - Failed\n* `expired` - Expired\n* `authorized` - Authorized","x-spec-enum-id":"43293338bc4fdb1a"}}},"title":"Notifications"}],"title":"Notification settings","description":"A JSON field that contains the notification settings for this payment transaction, including SMS and email notifications, as well as the events for which they will be sent (e.g., 'created', 'paid', 'refund', 'canceled', etc.). This field may be used to configure and customize the notifications sent to customers and internal recipients throughout the payment process."},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time.\n"},"order_no":{"type":"string","description":"The unique identifier assigned to this payment transaction. It is used for tracking purposes and is set by the merchant or the system. For MPGS transactions, the `order_no` value must not exceed 37 characters.\n","maxLength":128},"payment_instrument":{"oneOf":[{"type":"object","description":"Apple Pay payment instrument","properties":{"instrument_type":{"enum":["apple_pay"],"type":"string","x-spec-enum-id":"49c50763123c8d7e","default":"apple_pay","description":"Payment type: Apple Pay\n\n* `apple_pay` - apple_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Apple Pay token structure","properties":{"paymentData":{"allOf":[{"type":"object","description":"Encrypted Apple Pay payment data","properties":{"version":{"type":"string","description":"Token version (e.g., 'EC_v1')"},"data":{"type":"string","description":"Encrypted payment data"},"signature":{"type":"string","description":"Signature of the payment data"},"header":{"allOf":[{"type":"object","description":"Apple Pay header containing encryption details","properties":{"ephemeralPublicKey":{"type":"string","description":"Ephemeral public key for encryption"},"publicKeyHash":{"type":"string","description":"Hash of the merchant's public key"},"transactionId":{"type":"string","description":"Unique transaction identifier"}},"required":["publicKeyHash","transactionId"],"title":"ApplePayHeaderSchema"}],"description":"Cryptographic header"}},"required":["data","header","signature","version"],"title":"ApplePayPaymentDataSchema"}],"description":"Encrypted payment data"},"paymentMethod":{"allOf":[{"type":"object","description":"Apple Pay payment method details","properties":{"displayName":{"type":"string","description":"Display name (e.g., 'Visa 1234')"},"network":{"type":"string","description":"Card network (e.g., 'Visa')"},"type":{"type":"string","description":"Card type (e.g., 'debit')"}},"required":["displayName","network","type"],"title":"ApplePayPaymentMethodSchema"}],"description":"Payment method information"},"transactionIdentifier":{"type":"string","description":"Apple Pay transaction identifier"}},"required":["paymentData","paymentMethod","transactionIdentifier"],"title":"ApplePayPayloadSchema"}],"description":"Apple Pay payment token received from Apple Pay SDK. Pass the complete token object exactly as received without modification. Includes paymentData (encrypted), paymentMethod details, and transactionIdentifier."}},"required":["payload"],"title":"ApplePayInstrument"},{"type":"object","description":"Google Pay payment instrument","properties":{"instrument_type":{"enum":["google_pay"],"type":"string","x-spec-enum-id":"394f64ef0358d4b7","default":"google_pay","description":"Payment type: Google Pay\n\n* `google_pay` - google_pay"},"payload":{"allOf":[{"type":"object","description":"Complete Google Pay payment data structure","properties":{"apiVersion":{"type":"integer","description":"Google Pay API version (e.g., 2)"},"apiVersionMinor":{"type":"integer","description":"API minor version (e.g., 0)"},"paymentMethodData":{"allOf":[{"type":"object","description":"Google Pay payment method data","properties":{"type":{"type":"string","description":"Payment method type (e.g., 'CARD')"},"description":{"type":"string","description":"Payment method description"},"info":{"allOf":[{"type":"object","description":"Google Pay card information","properties":{"cardNetwork":{"type":"string","description":"Card network (e.g., 'VISA')"},"cardDetails":{"type":"string","description":"Last 4 digits of card"}},"required":["cardDetails","cardNetwork"],"title":"GooglePayInfoSchema"}],"description":"Card information"},"tokenizationData":{"allOf":[{"type":"object","description":"Google Pay tokenization data","properties":{"type":{"type":"string","description":"Tokenization type (e.g., 'PAYMENT_GATEWAY')"},"token":{"type":"string","description":"Encrypted payment token"}},"required":["token","type"],"title":"GooglePayTokenizationDataSchema"}],"description":"Tokenization data with encrypted token"}},"required":["description","info","tokenizationData","type"],"title":"GooglePayPaymentMethodDataSchema"}],"description":"Payment method and tokenization data"}},"required":["apiVersion","apiVersionMinor","paymentMethodData"],"title":"GooglePayPayloadSchema"}],"description":"Google Pay payment data received from Google Pay SDK. Pass the complete paymentData object exactly as received without modification. Includes apiVersion, paymentMethodData with tokenization data."}},"required":["payload"],"title":"GooglePayInstrument"},{"type":"object","description":"Token-based payment instrument for auto-debit","properties":{"instrument_type":{"enum":["token"],"type":"string","x-spec-enum-id":"961e6cfa88079418","default":"token","description":"Payment type: Token (Auto-Debit)\n\n* `token` - token"},"payload":{"allOf":[{"type":"object","description":"Payload for token-based payment (auto-debit)","properties":{"token":{"type":"string","description":"Payment token or CVV code for auto-debit tokenization."}},"required":["token"],"title":"TokenPayPayload"}],"description":"Token for auto-debit payment. Provide the payment token or CVV code as received from your tokenization service."}},"required":["payload"],"title":"TokenPayInstrument"},{"type":"object","description":"Samsung Pay payment instrument","properties":{"instrument_type":{"enum":["samsung_pay"],"type":"string","x-spec-enum-id":"33e26b87ac3fa6c2","default":"samsung_pay","description":"Payment type: Samsung Pay\n\n* `samsung_pay` - samsung_pay"},"payload":{"allOf":[{"type":"object","description":"Payload for Samsung Pay","properties":{"token":{"type":"string","description":"Encrypted Samsung Pay payment token."}},"required":["token"],"title":"SamsungPayPayload"}],"description":"Samsung Pay payment token received from Samsung Pay SDK. Pass the token exactly as received without modification."}},"required":["payload"],"title":"SamsungPayInstrument"},{"type":"object","properties":{"instrument_type":{"enum":["wallet"],"type":"string","x-spec-enum-id":"ba4affc717e2ff3d","default":"wallet","description":"Payment type: Wallet.\n\n* `wallet` - wallet"},"payload":{"allOf":[{"type":"object","description":"Payload shape for `instrument_type=wallet`.\n\nUsed as the runtime validator in `PaymentInstrumentWalletValidator` and\nas the documented schema for the `payload` field of the wallet variant\nof `payment_instrument`.","properties":{"wallet_code":{"type":"string","description":"The `code` of the active `WalletPaymentService` to debit. Required when `instrument_type=wallet` and the PGMID has more than one wallet configured (e.g. Ottu + Qitaf). The native strategy resolves the row by this code, then calls `provider.debit(...)` against it."}},"required":["wallet_code"],"title":"WalletPayload"}],"description":"Wallet instrument payload. Must specify `wallet_code` so the native strategy knows which configured wallet to debit."}},"required":["payload"],"title":"WalletInstrument"}],"title":"PaymentInstrument"},"payment_methods":{"allOf":[{"type":"object","properties":{"code":{"type":"string","description":"The slug code of the payment method.","pattern":"^[-a-zA-Z0-9_]+$"},"name":{"type":"string","description":"The name of the payment method."},"connector":{"allOf":[{"type":"object","description":"Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`.","properties":{"identifier":{"type":"string","readOnly":true,"description":"The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway."},"processor":{"type":"string","readOnly":true,"description":"The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)."}},"required":["identifier","processor"],"title":"Connector"}],"readOnly":true,"description":"The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector](/developers/payments/payment-methods/#connector) for the identifier-vs-processor concept."},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"amount":{"type":"string","description":"The total amount to be charged, including fees."},"currency_code":{"type":"string","description":"The currency code for the payment method represented as an ISO 4217 code.","maxLength":3},"fee":{"type":"string","description":"The fee charged by the payment gateway."},"fee_description":{"type":"string","description":"This field provides the label for any additional transaction fee. In the SDK, this label will be displayed prominently during the checkout process to inform the payer about the nature of the fee. Ensure to incorporate this field in a clear and visible manner within the checkout UI to maintain transparency with the end-users."},"icon":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."},"icons":{"allOf":[{"type":"object","properties":{"webp":{"type":"string","format":"uri","description":"The webp URL of the icon for the payment method."},"svg":{"type":"string","format":"uri","description":"The svg URL of the icon for the payment method."}},"required":["svg","webp"],"title":"Icons"}],"description":"The URLs of the icon for the payment method."},"pg_icons":{"allOf":[{"type":"object","description":"Serializer for PG logo with custom logo URL resolution.","properties":{"svg":{"type":["string","null"],"format":"uri","readOnly":true,"description":"`Optional` field. Upload a logo in SVG format only. If provided and no WebP image is uploaded, a WebP version will be automatically generated. Only .svg files are accepted. Do not upload any other format."},"webp":{"type":"string","readOnly":true,"description":"`Mandatory` field. This must be provided either by uploading a WebP image directly, or it will be auto-generated from the SVG file (if provided). This field does not accept SVG files — only raster images like PNG or JPEG that will be converted to WebP."},"label":{"type":"string","description":"The display name of the logo (translatable in EN and AR).","maxLength":255}},"required":["label","svg","webp"],"title":"MIDIcon"}],"description":"Represents list of mid icons configured for `pgmid` settings"},"flow":{"type":"string","default":"redirect","description":"The flow type of the payment method."},"redirect_url":{"type":["string","null"],"format":"uri","description":"The URL where the customer should be redirected to perform the payment."},"branding_options":{"allOf":[{"type":"object","properties":{"text":{"type":"string","description":"Display text, e.g. 'Have 30% off'."},"color":{"type":"string","description":"Hex color code for the text, e.g. '#FFFF00' or '#FFF'.","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"},"font_weight":{"type":"integer","default":700,"description":"CSS font-weight value (e.g. 400 regular, 500 medium, 600 semibold, 700 bold). Defaults to 700."}},"required":["color","text"],"title":"BrandingItem"}],"description":"Merchant-supplied display customization for this payment method. Present only when the merchant provided branding data for this pg_code via the branding_options.payment_methods input field."}},"required":["amount","code","connector","currency_code","fee","fee_description","icon","icons","name","type"],"title":"PaymentMethodsForRedirect"}],"readOnly":true,"description":"An array containing all the payment methods derived from the `pg_codes` input. Each object in the array contains information about a single payment gateway, including its icon and the `redirect_url` that will redirect the customer to the payment gateway's payment page."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Enum: `one_off`, `auto_debit`, or `save_card`. `one_off`: For payments that occur only once without future commitments. `save_card`: Indicates that the transaction is for the purpose of saving the card information. For additional information, please refer to the [Tokenization](/developers/cards-and-tokens/tokenization/) document. `auto_debit`: For payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. For more information about auto-debit API, please refer to [Auto-Debit API documentation](/developers/cards-and-tokens/recurring-payments/). If `auto_debit` is selected: (1) `agreement` and `customer_id` parameters will also be mandatory. (2) Only PG codes supporting [tokenization](/developers/cards-and-tokens/tokenization/) can be selected.\n"},"preload_checkout_page":{"type":"boolean","writeOnly":true,"default":false,"description":"Pre-populate checkout page cache on transaction creation (POST only). Improves performance when clients immediately poll for the checkout page after creation. Ignored on updates (PATCH/PUT) - cache is automatically invalidated on any update. The cache expires based on the transaction's expiration time (max 1 hour)."},"product_type":{"type":"string","description":"The type of product or service being purchased. This field may be used for tracking and reporting purposes.\n","maxLength":128},"qr_code_url":{"type":"string","format":"uri","readOnly":true,"description":"A QR code that, when scanned, redirects to the checkout page for this payment. This QR code may be displayed on invoices, receipts, or other documents to allow customers to easily access the checkout page and make a payment. The request parameter `generate_qr_code` should be set to `true`.\n"},"redirect_url":{"type":"string","format":"uri","description":"It is the destination where customers are redirected after the payment stage, only if the `webhook_url` returns a success status. Query parameters, including `order_no`, `reference_number`, `session_id`, and any `extra` parameters, will be added to the `redirect_url`. For more information on how redirection works, please check [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000},"sdk_setup_preload_payload":{"allOf":[{"type":"object","description":"Serialize data for SDK init.\nThe SDK will use this data to initialize the payment process and\nto display the payment methods.","properties":{"amount":{"type":"string","format":"decimal","description":"Represents the total amount of the payment transaction, which includes the cost of the purchased items or services but excludes any additional fees or charges"},"billing":{"type":"string","readOnly":true,"description":"Detailed billing information including formatted amounts for display and raw values for processing. Contains both the total transaction amount and any applicable fees with their respective currency codes and labels."},"cards":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"List of saved tokenized cards for customer payments, which can be used for transactions. Render alongside `payment_methods` for customers to choose from.","readOnly":true},"customer_id":{"type":"string","description":"The customer ID is a unique identifier for the customer within the merchant's system. It is also used as a merchant identifier for the customer and plays a critical role in tokenization. All the customer's cards will be associated with this ID.","maxLength":64},"customer_phone":{"type":"string","description":"Customer phone number associated with the payment. This might be sent to the payment gateway and depending on the gateway, it may trigger a click to pay process on the payment page. The phone number will also be included in the invoice, receipt, email, and displayed on the payment page.","maxLength":16},"currency_code":{"type":"string","description":"The specified currency represents the denomination of the transaction.Nevertheless, it doesn't necessarily mandate payment in this exact currency.Due to potential currency conversions or exchanges, the final charge may be in a different currency."},"expiration_time":{"type":"string","readOnly":true,"description":"The datetime when this payment transaction will expire. "},"language":{"enum":["en","ar"],"type":"string","x-spec-enum-id":"ac1757d67890d125","default":"en","description":"This field specifies the language to be used for communication with the customer, including the payment page, receipt, invoice, email, SMS, and any other communications related to the payment transaction.\n\n* `en` - English\n* `ar` - Arabic"},"operation":{"type":"string","readOnly":true,"description":"Specifies the type of operation to be performed by the payment gateway. If set to `purchase`, the payment source will be directly charged. If set to `authorize`, the payment source will only be authorized and the actual charge will be made at a later time."},"payment_type":{"enum":["one_off","auto_debit","save_card"],"type":"string","x-spec-enum-id":"b2ae60f7918918e7","default":"one_off","description":"Type of payment. Choose `one_off` for payments that occur only once without future commitments. Choose `auto_debit` for payments that are automatically deducted, such as recurring subscriptions, installments, or unscheduled auto-debits. \n\nChoose `save_card` if you want to perform a card tokenization operation.\n\nNOTE: If `auto_debit` is selected: \n1. `agreement` and `customer_id` parameters will also be mandatory. \n2. Only PG codes supporting tokenization can be selected. \nAs a side effect, the card used for the payment will be associated with the supplied `agreement.id`. This card will be locked, preventing the customer from deleting it from the system until an alternate card is chosen for auto-debit payments.\n\nNOTE: If `save_card` is selected: \n1. The amount must be zero for the save card operation. \n2. The selected MID(pg_code) must support tokenization to enable the save card operation. \n3. Please note that the save card operation is considered successful without any funds being charged.\n4. Once a card is created, Ottu will send a webhook containing the card details to the merchant's webhook URL.\n5. When the transaction type is `save_card`, all previously saved cards returned in the sdk_preload_payload should be hidden since the user is saving a new card and does not need to select from existing ones.\n\n* `one_off` - One Off\n* `auto_debit` - Auto Debit\n* `save_card` - Save Card"},"payment_methods":{"type":"array","items":{},"description":"The provided documentation describes the `payment_methods` field.\n\n Detailing the types of payment methods included and their functionality \nas well as backward compatibility considerations for removed methods. \n\nThe `payment_methods` field includes various payment options available to customers\nexcluding device-specific methods like `apple_pay`, `google_pay`and `flex_methods` represented in flex methods section\nit primarily supports methods requiring a redirect flow\nwhere users complete transactions on an external webpage.\n\n`Functionality`: users are redirected to an external \nsite mostly to gateway payment page \nusing `redirect_url` where they can complete the payment flow\n\n**The dynamic nature of the payment_methods**:`payment_methods` type is an array of objects \nand it's type allows it to accommodate an unlimited variety of payment options\nas each object represents a gateway payment option but strictly associated to redirect payment flow\n\n**Backward Compatibility Notice:**\n\n`stc_pay`: \nprevious Inclusion, `stc_pay` was formerly listed within the `payment_methods` array\nit has been removed in favor of a more streamlined integration within the SDK\nsimilar to the approach for `payment_services`.\n\n**Backward Compatibility:** \n\nThe SDK must still support STC Pay for applications relying on older API versions.\nAlthough it will not appear in current and future versions\nthe SDK will manage its inclusion internally\n\nto ensure a seamless transition and consistent user experience\nacross different API versions, without disrupting existing integrations.\n","readOnly":true},"payment_services":{"type":"array","items":{},"description":"Dedicated to singular, prominently featured payment options\n\nsuch as `apple_pay`, `google_pay`, `samsung_pay`, `stc_pay`, etc.,\nthe `payment_services` field presents these methods in a distinctive manner.\n\nUnlike `payment_methods`, payment services are intended to be displayed uniquely,\nTypically represented by dedicated buttons or interfaces within the payment page.\n\nThis ensures that each payment service,\nidentifiable by its unique flow ie: (`apple_pay`, `stc_pay`)\nis presented no more than once to the user\nmaintaining clarity and simplicity in the payment selection process.\n\n**Backward Compatibility Notice**:\nhistorically, the availability of (`apple_pay`, `google_pay`) \nwas indicated through the `apple_pay_available` and `google_pay_available` flags\nat the root level of the API response.\n\nWith the evolution of the API, these flags have been deprecated, \nand the respective payment methods have been integrated into the `payment_services` array.\n\nDespite this restructuring, backward compatibility for these payment methods\nis preserved in the SDK to accommodate previous API versions,\nensuring a seamless transition for existing implementations.\n","readOnly":true},"flex_methods":{"type":"array","items":{},"description":"The `flex_methods` field encompasses a comprehensive array\nof payment options available to customers,\nexplicitly excluding device-specific methods such as `apple_pay`\n`google_pay`, redirect flow `payment_methods` and tokenized card solutions\notherwise it represents the flexible payment methods ie:(`tamara`, `tabby`, `taly`)\npayment options that necessitate dynamic flows\nwhere SDK might need to fetch some `pre-payment-check` API calls then\nusers are guided to an external webpage to finalize their payment transactions.\n\nIt's important to note that the flex_methods array is dynamic\nand can accommodate an unlimited array of payment methods.\neach method listed should be individually rendered within the user interface with a separated flow.\n","readOnly":true},"sdk_studio":{"type":"object","additionalProperties":{},"description":"Represents the configuration of SDK Studio configuration, which includes the available payment methods and services sdk config required by the frontend to initialize the payment SDK properly.","readOnly":true},"response":{"type":"object","additionalProperties":{},"description":"**What is a payment gateway response?**\n\nA payment gateway response is the feedback received\nfrom payment gateway after a user has completed a payment\nthis response provides information on whether the payment was successful or if it was canceled or failed.\n\n**When do we receive the response?**\n\nWe receive the payment gateway response immediately after the user has made a payment\nor after n of minutes defined for a gateway inquiry request initiated by ottu core\nto fetch the transaction status after the defined time for each gateway.\n\n**Which attempt do we get the response for?**\n\nthe response we provide is from the most recent payment attempt.\nthis ensures that the information reflects the latest status of the transaction.\n\n**Structure of the response**: \n\nThe response structure is managed by our SDK,\nwhich updates the payment details and triggers one of three callbacks\nbased on the status provided in the response:\n\n`successCallback`: Triggered if the response.status indicates a successful payment.\n\n`cancelCallback`: Triggered if the response.status indicates a canceled payment.\n\n`errorCallback`: Triggered if the response.status indicates a error payment.\n\n","readOnly":true},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment.\n\n* `created` - Created\n* `pending` - Pending\n* `attempted` - Attempted\n* `authorized` - Authorized\n* `paid` - Paid\n* `failed` - Failed\n* `canceled` - Canceled\n* `expired` - Expired\n* `invalided` - Invalided\n* `refunded` - Refunded\n* `cod` - Cash on Delivery"},"type":{"enum":["e_commerce","payment_request"],"type":"string","x-spec-enum-id":"ad398830c7970f0a","description":"The type of the payment transaction. This field represents the purpose of the payment and can be one of several pre-defined choices.\n\n* `e_commerce` - Ecommerce\n* `payment_request` - Payment Request"},"is_amount_editable":{"type":"boolean","readOnly":true,"title":"Editable amount","description":"This field specifies whether the customer can modify the payment amount and choose the amount he wishes to pay."},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process."},"cancel_url":{"type":"string","format":"uri","readOnly":true,"description":"This endpoint used to cancel the transaction using the merchant cancellation flow, \nto ensure the transaction cannot be paid again \nand trigger the webhook notification \n"}},"required":["amount","billing","cancel_url","cards","currency_code","expiration_time","flex_methods","is_amount_editable","operation","payment_methods","payment_services","response","sdk_studio","session_id","state","type"],"title":"CheckoutSDK"}],"readOnly":true,"default":false,"description":"It is a JSON object containing preloaded data necessary for initializing the [Checkout SDK](/developers/payments/checkout-sdk/). This data encompasses vital details such as customer information, available payment methods, and specific transaction details, all formatted according to the Checkout SDK's initialization specifications. It must be passed to the Checkout SDK constructor without any modifications. It will be included in the response solely when the `include_sdk_setup_preload` parameter is set to `true`.\n"},"session_id":{"type":"string","readOnly":true,"description":"A unique identifier for each payment transaction, used to maintain the session state during the payment process. It can be used to perform subsequent operations, like retrieve, acknowledge, [refund, capture, and cancellation](/developers/operations/).\n"},"settled_pg_code":{"type":"string","readOnly":true,"title":"Final Payment Gateway","description":"The code of the payment gateway used for completing the transaction. This field indicates the specific gateway that processed and settled the payment, providing clarity on which payment service was ultimately utilized for this transaction."},"shortify_attachment_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the URL of the uploaded attachment will be shortened using a URL shortener service. This should be used when sharing the attachment URL via SMS or WhatsApp."},"shortify_checkout_url":{"type":"boolean","writeOnly":true,"default":false,"description":"If set to True, the checkout URL will be shortened using a URL shortener service. This should be used when sharing the payment URL via SMS or WhatsApp."},"state":{"enum":["created","pending","attempted","authorized","paid","failed","canceled","expired","invalided","refunded","cod"],"type":"string","x-spec-enum-id":"caee163196dbc11f","readOnly":true,"description":"The current state of the payment transaction, it helps to understand the progress of the payment. Possible values: `created`, `pending`, `attempted`, `authorized`, `paid`, `failed`, `canceled`, `expired`, `invalided`, `refunded`, `cod`. \n"},"unit_code":{"type":"string","writeOnly":true,"title":"Unit","description":"The slug of the unit to be used for the transaction."},"vendor_name":{"type":"string","description":"The name of the vendor or merchant associated with this payment. This field may be used for accounting and reporting purposes.\n","maxLength":64},"webhook_url":{"type":"string","format":"uri","description":"In case of a payment event or payment operation, Ottu triggers an HTTP request to this URL, to disclose transactional data. It should be provided by merchant. See [Payment Webhooks](/developers/webhooks/payment-events/).\n","maxLength":2000}},"required":["amount","attachment_short_url","billing","checkout_page_url","checkout_short_url","checkout_url","currency_code","operation","payment_methods","pg_codes","qr_code_url","sdk_setup_preload_payload","session_id","settled_pg_code","state","type"],"title":"CheckoutGETResponse"}}},"description":""},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"403":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""},"404":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"],"title":"GenericErrorMessage"}}},"description":""}}} \ No newline at end of file diff --git a/docs/developers/apis/retrieve-payment-transaction-checkout.api.mdx b/docs/developers/apis/retrieve-payment-transaction-checkout.api.mdx index 0f828b3..93c9e8f 100644 --- a/docs/developers/apis/retrieve-payment-transaction-checkout.api.mdx +++ b/docs/developers/apis/retrieve-payment-transaction-checkout.api.mdx @@ -5,7 +5,7 @@ description: "Retrieve an existing Payment Transaction by session_id" sidebar_label: "Retrieve Payment Transaction" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "get api-method" info_path: developers/apis/ottu-api custom_edit_url: null diff --git a/docs/developers/payments/checkout-sdk/index.md b/docs/developers/payments/checkout-sdk/index.md index 5bafad4..5f894a2 100644 --- a/docs/developers/payments/checkout-sdk/index.md +++ b/docs/developers/payments/checkout-sdk/index.md @@ -48,6 +48,10 @@ The customer has the option of choosing from different payment methods. 3. Ottu redirect: Will guide to the required payment gateway page. 4. Apple Pay: A type of payment service, Apple Pay is only available for iOS devices. +:::note Identifying payment methods programmatically +The SDK fetches and renders the available payment methods for you, so you normally don't handle the list yourself. If you build a custom payment-selection UI instead, call the [Payment Methods API](../payment-methods) directly — each method includes a [`connector`](../payment-methods#connector) object that identifies its gateway (`connector.identifier`) and the processor it routes through (`connector.processor`). +::: +
Payment method selection flow diagram
e.g., After selecting the payment method, the response will be proceeded to one of the three below flow. Form error: for example when customer enter invalid card expiry dates, error message will be appeared, then the customer can try again. (this is only for multiple trial payment). Error: The cancel callback will be executed when the payment has an error. e.g., the session has expired. Success. diff --git a/docs/developers/payments/payment-methods.md b/docs/developers/payments/payment-methods.md index 5159f1c..27fada8 100644 --- a/docs/developers/payments/payment-methods.md +++ b/docs/developers/payments/payment-methods.md @@ -70,6 +70,40 @@ graph LR 3. **Customer sees current payment options** — the checkout page displays only the active, relevant payment methods. When gateway configurations change, the API automatically reflects the updates — no code changes needed. +### Connector {#connector} + +Every entry in `payment_methods` includes a `connector` object. It answers two questions your integration often needs: **which gateway integration is this**, and **which processor does it settle through?** Reach for it whenever your code has to recognize a specific gateway — for branding, routing rules, analytics, or reconciliation. + +```json title="A payment method with its connector" +{ + "code": "kpay-prod", + "connector": { + "identifier": "kpay", + "processor": "knet" + } +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `connector.identifier` | `string` | The stable, unique identifier of the connector — for example `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so this is the value to match on when you need to detect one specific gateway. | +| `connector.processor` | `string` | The processor the connector routes through — for example `knet` or `cybersource`. It is equal to `identifier` for most connectors, and differs only when several connectors share the same processor. Group by this field when you care about the underlying network rather than the exact integration. | + +**Why two fields?** Ottu sometimes offers more than one connector for the same processor. When that happens, the connectors have different `identifier` values but the same `processor`: + +| `connector.identifier` | `connector.processor` | What it is | +|------------------------|-----------------------|------------| +| `knet` | `knet` | The KNET connector | +| `kpay` | `knet` | KPay — a second connector that also settles through KNET | +| `cybersource` | `cybersource` | The CyberSource connector | +| `csuc` | `cybersource` | CyberSource Unified Checkout — a second connector on CyberSource | + +So `identifier` tells you the exact integration, while `processor` groups the connectors that reach the same payment network. + +:::tip Match on `connector`, not `code` +The `code` field is a slug tied to one gateway configuration that a merchant can rename at any time, so it is not a reliable way to detect a gateway in your code. Read `connector.identifier` (the exact integration) or `connector.processor` (its processor family) instead. `connector` is additive — it was added alongside the existing fields, and nothing was removed. +::: + ### Use Cases #### Expanding Payment Options diff --git a/docs/developers/payments/wallet/index.mdx b/docs/developers/payments/wallet/index.mdx index 8e57627..b1a8a1b 100644 --- a/docs/developers/payments/wallet/index.mdx +++ b/docs/developers/payments/wallet/index.mdx @@ -82,6 +82,10 @@ Call the [Payment Methods API](../payment-methods) (`POST /b/pbl/v2/payment-meth { "code": "ottu-sandbox", "name": "Ottu Sandbox", + "connector": { + "identifier": "ottu_sandbox", + "processor": "ottu_sandbox" + }, "is_sandbox": true, "default_currency": "KWD", "accepted_currencies": ["KWD", "SAR", "AED", "USD", "BHD"], @@ -100,7 +104,7 @@ Call the [Payment Methods API](../payment-methods) (`POST /b/pbl/v2/payment-meth You don't need `customer_id` to discover wallet-capable gateways generically. If you do pass `customer_id` and that customer has a wallet enabled in the session currency, the wallet entry will be returned alongside the standard payment methods. To narrow the gateway list to wallet-capable PGs for later refunds, use `payment_services: ["wallet"]` as shown above. ::: -For the full request/response reference, headers, error codes, and supported filters, see the [Payment Methods API page](../payment-methods). +For the full request/response reference, headers, error codes, and supported filters — including the [`connector`](../payment-methods#connector) object that identifies each method's gateway and processor — see the [Payment Methods API page](../payment-methods). #### 2. Create a Checkout session with the wallet-capable PGs diff --git a/static/Ottu_API.yaml b/static/Ottu_API.yaml index 64c7dd0..f84b096 100644 --- a/static/Ottu_API.yaml +++ b/static/Ottu_API.yaml @@ -5319,6 +5319,21 @@ components: - $ref: "#/components/schemas/NestedFieldErrors" - $ref: "#/components/schemas/GenericErrorMessage" - $ref: "#/components/schemas/OperationErrorResponse" + Connector: + type: object + description: Identifies the payment method's underlying gateway integration and the processor it routes through. Present on every payment-method entry, giving consumers a stable connector identity that is independent of the merchant-renamable `code`. + properties: + identifier: + type: string + readOnly: true + description: The stable, unique identifier of the connector, such as `knet`, `kpay`, `cybersource`, or `csuc`. It does not change, so use it to reliably detect one specific gateway. + processor: + type: string + readOnly: true + description: "The processor the connector routes through, such as `knet` or `cybersource`. Equal to `identifier` for most connectors; differs only when several connectors share one processor (for example `kpay` routes through `knet`, and `csuc` routes through `cybersource`)." + required: + - identifier + - processor CustomerWalletTransaction: type: object description: |- @@ -7529,6 +7544,11 @@ components: type: string readOnly: true description: Represents the payment gateway internal name defined in Ottu. + connector: + allOf: + - $ref: "#/components/schemas/Connector" + readOnly: true + description: The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector]({{apiBaseUrl}}/payments/payment-methods/#connector) for the identifier-vs-processor concept. is_sandbox: type: boolean readOnly: true @@ -7635,6 +7655,7 @@ components: - accepted_currencies - auto_debit_enabled - code + - connector - default_currency - is_sandbox - is_tokenizable @@ -8051,6 +8072,11 @@ components: name: type: string description: The name of the payment method. + connector: + allOf: + - $ref: "#/components/schemas/Connector" + readOnly: true + description: The connector behind this payment method — its unique `identifier` and the `processor` it routes through. See [Connector]({{apiBaseUrl}}/payments/payment-methods/#connector) for the identifier-vs-processor concept. type: enum: - e_commerce @@ -8104,6 +8130,7 @@ components: required: - amount - code + - connector - currency_code - fee - fee_description