> For the complete documentation index, see [llms.txt](https://apidocs.akinon.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apidocs.akinon.com/commerce-openapis/checkout/entry-and-address/process-checkout-step.md).

# Process checkout step

Processes form submission for the current checkout step. The page parameter determines which page's data is being submitted.

**Processing Flow**:

1. Validates preconditions for the specified page
2. Validates submitted data according to page-specific rules
3. Updates pre-order state if validation succeeds
4. Recalculates campaigns and discounts
5. Determines next page and returns updated checkout state

**Error Handling**:

* Validation errors are returned in the `errors` object
* User remains on the current page when errors occur
* Previously entered valid data is preserved

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"tags":[{"name":"Entry & Address","description":"# Checkout Entry & Address\n\nStart a checkout session and collect delivery information from your customers. These endpoints handle session initialization, delivery address selection, order notes, B2B account settings, and the entry point for external checkout providers.\n\n## Authentication\n\nThese endpoints support both authenticated and anonymous sessions.\n\n- **Authenticated users**: Session cookie (`sessionid`) tracks checkout progress.\n- **Anonymous users**: Guest checkout is available when the `CAN_GUEST_PURCHASE` setting is enabled.\n## Request Format\n\nInclude the following header in all checkout requests:\n\n- **x-requested-with**: `XMLHttpRequest`\n\n## Dynamic Settings\n\n### CAN_GUEST_PURCHASE\nControls whether unauthenticated users can proceed through checkout. When disabled, unauthenticated users are redirected to the login page.\n\n### GIFT_BOX_CONFIGURATIONS\nControls whether the gift box option is shown during checkout entry. Set `is_active` to `true` and provide a product `sku` to enable.\n\n### DEFAULT_COUNTRY_CODE\nDefault country used to pre-populate the country field in the address selection form.\n\n### REMOTE_PRICE_ATTRIBUTE_KEY\nProduct attribute key that flags items requiring remote price calculation. When any basket item carries this attribute, the flow redirects to the remote price calculation step after address selection.\n\n### IDENTITY_NUMBER_REQUIRED_AMOUNT\nWhen set, orders exceeding this total amount require a valid identity number in the shipping address before proceeding.\n\n### USER_PHONE_FORMAT\nDisplay format used as a placeholder for phone number input fields (for example, `05999999999`)."}],"servers":[{"description":"Akinon Checkout API","url":"https://{commerce_url}","variables":{"commerce_url":{"default":"sandbox.akinon.com"}}}],"paths":{"/orders/checkout/":{"post":{"tags":["Entry & Address"],"operationId":"processCheckoutStep","summary":"Process checkout step","description":"Processes form submission for the current checkout step. The page parameter\ndetermines which page's data is being submitted.\n\n**Processing Flow**:\n1. Validates preconditions for the specified page\n2. Validates submitted data according to page-specific rules\n3. Updates pre-order state if validation succeeds\n4. Recalculates campaigns and discounts\n5. Determines next page and returns updated checkout state\n\n**Error Handling**:\n- Validation errors are returned in the `errors` object\n- User remains on the current page when errors occur\n- Previously entered valid data is preserved","parameters":[{"name":"page","in":"query","required":true,"schema":{"type":"string","enum":["IndexPage","DeliveryOptionSelectionPage","RemoteDeliveryOptionSelectionPage","AddressSelectionPage","RetailStoreSelectionPage","PickupLocationSelectionPage","AddressClearPage","ShippingOptionSelectionPage","DataSourceShippingOptionSelectionPage","AttributeBasedShippingOptionSelectionPage","RemoteShippingOptionSelectionPage","PaymentOptionSelectionPage","BinNumberPage","InstallmentSelectionPage","CreditCardConfirmationPage","CreditCardThreeDSecurePage","FundsTransferChoicePage","FundsTransferPage","PayOnDeliveryPaymentChoicePage","SendSmsPage","VerifySmsPage","PayOnDeliveryPage","BexSelectionPage","BexBinNumberPage","BexInstallmentSelectionPage","BexNoncePage","BexCompletePage","MasterpassRestBinNumberPage","MasterpassRestInstallmentPage","MasterpassRestOrderNoPage","MasterpassRestCompletePage","MasterpassRestRewardListPage","MasterpassRestRewardSelectionPage","MasterpassBinNumberPage","MasterpassInstallmentPage","MasterpassOrderNoPage","MasterpassCompletePage","MasterpassRemoteInstallmentPage","CampaignListPage","CampaignSelectionPage","CouponSelectionPage","VoucherCodePage","LoyaltyMoneyPage","LoyaltyMoneyUsagePage","LoyaltyCardPage","GiftBoxIndexPage","GiftBoxPage","CashRegisterPage","CashRegisterInstallmentSelectionPage","CashRegisterCompletePage","SendBarcodeSmsPage","SendCheckoutUrlSmsPage","MobilExpressSelectionPage","MobilExpressCardFoundOtpRequiredPhonePage","MobilExpressCardFoundOtpRequiredOtpPage","MobilExpressCardListPage","MobilExpressInstallmentSelectionPage","MobilExpressTryPaymentPage","MobilExpressPaymentCompleteOtpPage","MobilExpressPaymentCompleteCvvPage","MobilExpressPaymentCompleteCvvAndOtpPage","MobilExpressPaymentThreeDPage","RewardListPage","RewardSelectionPage","SampleProductPage","OrderNotePage","DeliveryBagsPage","OrderSelectionPage","GiftCardPage","GiftCardOtpPage","GiftCardOtpResendPage","GiftCardApplyPage","GiftCardRemovePage","GiftCardUpdateAmountPage","GiftCardPaymentPage","SlotSelectionPage","ReservationSelectionPage","CreditPaymentSelectionPage","CreditPaymentConfirmationPage","CreditPaymentCompletePage","ConfirmationPaymentAgreementCheckPage","ConfirmationPaymentAgreementConfirmPage","ConfirmationPaymentSelectedPage","ConfirmationPaymentQueryPage","ConfirmationPaymentCompletePage","RemotePriceCalculationPage","RedirectionPageCompletePage","RedirectionPaymentSelectedPage","GPaySelectionPage","GPayCompletePage","GPayRedirectPage","CheckoutProviderIndexPage","CheckoutProviderSelectionPage","CheckoutProviderAddressSelectionPage","CheckoutProviderShippingOptionPage","CheckoutProviderAgreementListPage","CheckoutProviderNotificationPage","CheckoutProviderThankYouPage","SavedCardSelectionPage","SavedCardInstallmentSelectionPage","SavedCardConfirmationPage","SavedCardThreeDSecurePage","PayLaterCompletePage","WalletSelectionPage","WalletPaymentPage","WalletCompletePage","WalletRedirectCompletePage","B2BPage"]},"description":"Page name to process (e.g., \"IndexPage\", \"AddressSelectionPage\")"},{"$ref":"#/components/parameters/AjaxRequestHeader"},{"$ref":"#/components/parameters/SessionCookieHeader"}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"oneOf":[{"$ref":"#/components/schemas/IndexPageInput"},{"$ref":"#/components/schemas/DeliveryOptionSelectionInput"},{"$ref":"#/components/schemas/AddressSelectionInput"},{"$ref":"#/components/schemas/RetailStoreSelectionInput"},{"$ref":"#/components/schemas/PickupLocationSelectionInput"},{"$ref":"#/components/schemas/ShippingOptionSelectionInput"},{"$ref":"#/components/schemas/DataSourceShippingOptionSelectionInput"},{"$ref":"#/components/schemas/AttributeBasedShippingOptionSelectionInput"},{"$ref":"#/components/schemas/PaymentOptionSelectionInput"},{"$ref":"#/components/schemas/BinNumberInput"},{"$ref":"#/components/schemas/InstallmentSelectionInput"},{"$ref":"#/components/schemas/CreditCardConfirmationInput"},{"$ref":"#/components/schemas/CreditCardThreeDSecureInput"},{"$ref":"#/components/schemas/FundsTransferChoiceInput"},{"$ref":"#/components/schemas/FundsTransferInput"},{"$ref":"#/components/schemas/PayOnDeliveryPaymentChoiceInput"},{"$ref":"#/components/schemas/PayOnDeliveryInput"},{"$ref":"#/components/schemas/BexSelectionInput"},{"$ref":"#/components/schemas/BexBinNumberInput"},{"$ref":"#/components/schemas/BexInstallmentSelectionInput"},{"$ref":"#/components/schemas/BexNonceInput"},{"$ref":"#/components/schemas/MasterpassRestBinNumberInput"},{"$ref":"#/components/schemas/MasterpassRestInstallmentSelectionInput"},{"$ref":"#/components/schemas/MasterpassRestOrderNoInput"},{"$ref":"#/components/schemas/MasterpassRestCompleteInput"},{"$ref":"#/components/schemas/MasterpassRestRewardListInput"},{"$ref":"#/components/schemas/MasterpassBinNumberInput"},{"$ref":"#/components/schemas/MasterpassInstallmentSelectionInput"},{"$ref":"#/components/schemas/MasterpassOrderNoPageInput"},{"$ref":"#/components/schemas/MasterpassCompleteInput"},{"$ref":"#/components/schemas/MasterpassRemoteInstallmentInput"},{"$ref":"#/components/schemas/CampaignListPageInput"},{"$ref":"#/components/schemas/CampaignSelectionPageInput"},{"$ref":"#/components/schemas/LoyaltyMoneyPageInput"},{"$ref":"#/components/schemas/LoyaltyMoneyUsagePageInput"},{"$ref":"#/components/schemas/LoyaltyCardPageInput"},{"$ref":"#/components/schemas/GiftBoxInput"},{"$ref":"#/components/schemas/RemoteShippingOptionSelectionInput"},{"$ref":"#/components/schemas/SendSmsInput"},{"$ref":"#/components/schemas/VerifySmsInput"},{"$ref":"#/components/schemas/CouponSelectionInput"},{"$ref":"#/components/schemas/VoucherCodeInput"},{"$ref":"#/components/schemas/MobilExpressSelectionInput"},{"$ref":"#/components/schemas/MobilExpressCardFoundOtpRequiredPhoneInput"},{"$ref":"#/components/schemas/MobilExpressCardFoundOtpRequiredOtpInput"},{"$ref":"#/components/schemas/MobilExpressCardSelectionInput"},{"$ref":"#/components/schemas/MobilExpressInstallmentSelectionInput"},{"$ref":"#/components/schemas/MobilExpressTryPaymentInput"},{"$ref":"#/components/schemas/MobilExpressPaymentCompleteOtpInput"},{"$ref":"#/components/schemas/MobilExpressPaymentCompleteCvvInput"},{"$ref":"#/components/schemas/MobilExpressPaymentCompleteCvvAndOtpInput"},{"$ref":"#/components/schemas/MobilExpressPaymentThreeDInput"},{"$ref":"#/components/schemas/RewardListPageInput"},{"$ref":"#/components/schemas/RewardSelectionPageInput"},{"$ref":"#/components/schemas/SampleProductPageInput"},{"$ref":"#/components/schemas/OrderNotePageInput"},{"$ref":"#/components/schemas/DeliveryBagsPageInput"},{"$ref":"#/components/schemas/OrderSelectionPageInput"},{"$ref":"#/components/schemas/GiftCardInput"},{"$ref":"#/components/schemas/GiftCardOtpInput"},{"$ref":"#/components/schemas/GiftCardApplyInput"},{"$ref":"#/components/schemas/GiftCardRemoveInput"},{"$ref":"#/components/schemas/GiftCardUpdateAmountInput"},{"$ref":"#/components/schemas/GiftCardPaymentInput"},{"$ref":"#/components/schemas/SlotSelectionPageInput"},{"$ref":"#/components/schemas/ReservationSelectionPageInput"},{"$ref":"#/components/schemas/CreditPaymentSelectionPageInput"},{"$ref":"#/components/schemas/CreditPaymentConfirmationPageInput"},{"$ref":"#/components/schemas/CreditPaymentCompletePageInput"},{"$ref":"#/components/schemas/ConfirmationPaymentAgreementConfirmPageInput"},{"$ref":"#/components/schemas/ConfirmationPaymentSelectedPageInput"},{"$ref":"#/components/schemas/ConfirmationPaymentQueryPageInput"},{"$ref":"#/components/schemas/RedirectionPageCompletePageInput"},{"$ref":"#/components/schemas/GPayRedirectPageInput"},{"$ref":"#/components/schemas/CheckoutProviderSelectionPageInput"},{"$ref":"#/components/schemas/AkifastAddressSelectionPageInput"},{"$ref":"#/components/schemas/AkifastShippingOptionSelectionPageInput"},{"$ref":"#/components/schemas/AkifastAgreementListPageInput"},{"$ref":"#/components/schemas/AkifastOrderNotificationPageInput"},{"$ref":"#/components/schemas/SavedCardSelectionInput"},{"$ref":"#/components/schemas/IyzicoSavedCardSelectionInput"},{"$ref":"#/components/schemas/SavedCardInstallmentSelectionInput"},{"$ref":"#/components/schemas/SavedCardConfirmationInput"},{"$ref":"#/components/schemas/IyzicoSavedCardConfirmationInput"},{"$ref":"#/components/schemas/PayURoSavedCardConfirmationInput"},{"$ref":"#/components/schemas/SavedCardThreeDSecureInput"},{"$ref":"#/components/schemas/PayLaterCompleteInput"},{"$ref":"#/components/schemas/WalletSelectionInput"},{"$ref":"#/components/schemas/ApplePaySelectionInput"},{"$ref":"#/components/schemas/ApplePayPaymentInput"},{"$ref":"#/components/schemas/GooglePayPaymentInput"},{"$ref":"#/components/schemas/CybersourceUCPaymentInput"},{"$ref":"#/components/schemas/WalletCompleteInput"},{"$ref":"#/components/schemas/WalletRedirectCompleteInput"},{"$ref":"#/components/schemas/B2BInput"}]}}}},"responses":{"200":{"description":"Step processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"302":{"description":"Redirect to basket (empty basket)"}}}}},"components":{"parameters":{"AjaxRequestHeader":{"name":"x-requested-with","in":"header","required":true,"description":"Required header for AJAX requests. Must be set to `XMLHttpRequest` for all checkout requests.","schema":{"type":"string","enum":["XMLHttpRequest"],"default":"XMLHttpRequest"}},"SessionCookieHeader":{"name":"Cookie","in":"header","required":false,"description":"Session cookie header (e.g. `sessionid=abc123` or `osessionid=<session_id>`)","schema":{"type":"string"}}},"schemas":{"IndexPageInput":{"type":"object","required":["user_email"],"properties":{"user_email":{"type":"string","format":"email","description":"User email address. Required for guest checkout."},"phone_number":{"type":"string","description":"Optional phone number. Must match phone regex pattern if provided.\nWhen the `checkout-phone` purpose is enabled, a guest must prove\nownership of this number with an SMS code first and pass the resulting\ntoken in `X-Verification-Token`; the same value must be used as the\n`target` throughout that flow."}}},"DeliveryOptionSelectionInput":{"type":"object","required":["delivery_option"],"properties":{"delivery_option":{"type":"integer","description":"Primary key of the selected delivery option"},"clear":{"type":"boolean","default":false,"description":"If true, clears shipping and billing addresses when changing delivery option"}}},"AddressSelectionInput":{"type":"object","required":["billing_address","shipping_address"],"properties":{"billing_address":{"type":"integer","description":"Primary key of the billing address"},"shipping_address":{"type":"integer","description":"Primary key of the shipping address"}}},"RetailStoreSelectionInput":{"type":"object","required":["billing_address","retail_store"],"properties":{"billing_address":{"type":"integer","description":"Primary key of the billing address"},"retail_store":{"type":"integer","description":"Primary key of the selected retail store"}}},"PickupLocationSelectionInput":{"type":"object","required":["remote_id","billing_address"],"properties":{"remote_id":{"type":"string","description":"Remote identifier for the pickup location"},"billing_address":{"type":"integer","description":"Primary key of the billing address"}}},"ShippingOptionSelectionInput":{"type":"object","required":["shipping_option"],"properties":{"shipping_option":{"type":"integer","description":"Primary key of the selected shipping option"}},"additionalProperties":{"type":"string","description":"Additional required fields defined in the shipping option's `kwargs.required_fields`.\nThese fields vary based on the shipping option configuration and may include\nfields like `delivery_date`, `time_slot`, etc."}},"DataSourceShippingOptionSelectionInput":{"type":"object","required":["data_source_shipping_options"],"properties":{"data_source_shipping_options":{"type":"string","description":"JSON-encoded array of data source shipping option IDs.\nEach ID is the primary key of a `DataSourceShippingOption` model.\nOne shipping option must be selected for each data source in the basket."}}},"AttributeBasedShippingOptionSelectionInput":{"type":"object","required":["attribute_based_shipping_options"],"properties":{"attribute_based_shipping_options":{"type":"string","description":"JSON-encoded object mapping attribute values to shipping option IDs.\nKeys are attribute values (e.g., \"electronics\", \"clothing\", \"warehouse_a\").\nValues are primary keys of `AttributeBasedShippingOption` models.\nOne shipping option must be selected for each attribute value group."}}},"PaymentOptionSelectionInput":{"type":"object","required":["payment_option"],"properties":{"payment_option":{"type":"integer","description":"Primary key of the selected payment option. Must be an active payment option that passes availability rules."}}},"BinNumberInput":{"type":"object","required":["bin_number"],"properties":{"bin_number":{"type":"string","description":"First 6 or 8 digits of the credit card (BIN - Bank Identification Number).\nUsed to determine card type, bank, and available installment options.\nMust contain only digits.","pattern":"^\\d{6,8}$"}}},"InstallmentSelectionInput":{"type":"object","required":["installment"],"properties":{"installment":{"type":"integer","description":"Primary key of the selected installment option.\nMust be one of the installments available for the card.\nInstallment count of 1 represents single payment (no installment)."}}},"CreditCardConfirmationInput":{"type":"object","required":["card_number","card_holder","card_month","card_year","card_cvv","agreement"],"properties":{"card_number":{"type":"string","description":"Full credit card number (16 digits).\nValidated using Luhn algorithm.\nSpaces are automatically removed.","pattern":"^\\d{16}$"},"card_holder":{"type":"string","description":"Cardholder name as printed on the card.\nMust contain only letters and spaces.\nValidated against format rules."},"card_month":{"type":"string","description":"Card expiration month in MM format.\nMust be between 01 and 12.","pattern":"^(0[1-9]|1[0-2])$"},"card_year":{"type":"string","description":"Card expiration year in YYYY format.\nMust be current year or future.","pattern":"^\\d{4}$"},"card_cvv":{"type":"string","description":"Card security code (CVV/CVC).\nMust be 3-4 digits depending on card type.","pattern":"^\\d{3,4}$"},"card_name":{"type":"string","description":"Nickname for the card if saving for future use.\nRequired when `save` is true.\nOptional otherwise."},"agreement":{"type":"boolean","description":"User must accept terms and conditions to proceed.\nMust be true.","enum":[true]},"save":{"type":"boolean","default":false,"description":"Whether to save the card for future purchases.\nOnly available for authenticated users.\nGuest users cannot save cards."},"use_three_d":{"type":"boolean","description":"User preference for 3D Secure verification.\nMay be overridden by system rules.\nOptional field."},"client_time":{"type":"string","format":"date-time","description":"Client-side timestamp for fraud detection"},"browser_java_enabled":{"type":"boolean","description":"Whether Java is enabled in the browser"},"browser_language":{"type":"string","description":"Browser language code (e.g., \"en-US\", \"tr-TR\")"},"browser_color_depth":{"type":"string","description":"Screen color depth in bits (e.g., \"24\", \"32\")"},"browser_screen_height":{"type":"string","description":"Screen height in pixels"},"browser_screen_width":{"type":"string","description":"Screen width in pixels"},"browser_time_zone":{"type":"string","description":"Timezone offset from UTC in minutes.\nExample: UTC-4 would be \"240\" (4 hours * 60 minutes)"}}},"CreditCardThreeDSecureInput":{"type":"object","required":["three_d_secure","success"],"properties":{"three_d_secure":{"type":"boolean","description":"3D Secure verification status.\nMust be true for successful verification.","enum":[true]},"success":{"type":"boolean","description":"Transaction success status.\nMust be true for successful transaction.","enum":[true]},"md":{"type":"string","description":"Merchant data passed through 3D Secure flow"},"xid":{"type":"string","description":"Transaction identifier from 3D Secure provider"},"eci":{"type":"string","description":"Electronic Commerce Indicator from 3D Secure"},"cavv":{"type":"string","description":"Cardholder Authentication Verification Value"},"liqpay_token":{"type":"string","description":"LiqPay-specific token (gateway-specific)"},"status":{"type":"string","description":"Status from payment gateway"},"paymentId":{"type":"string","description":"Payment identifier from gateway"},"conversationData":{"type":"string","description":"Conversation data from gateway"},"conversationId":{"type":"string","description":"Conversation identifier from gateway"},"mdStatus":{"type":"string","description":"MD status code from 3D Secure provider.\nDifferent values indicate authentication success/failure.\nGateway-specific validation logic."},"body":{"type":"object","description":"Additional gateway-specific response data"}}},"FundsTransferChoiceInput":{"type":"object","required":["bank_account"],"properties":{"bank_account":{"type":"integer","description":"Primary key of the selected bank account.\nMust be an active bank account configured in the system."}}},"FundsTransferInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept terms and conditions to proceed.\nMust be true.","enum":[true]}}},"PayOnDeliveryPaymentChoiceInput":{"type":"object","required":["payment_choice"],"properties":{"payment_choice":{"type":"string","description":"The `value` string of one of the payment choices returned in the\n`payment_choices` list from the GET context of `PayOnDeliveryPaymentChoicePage`.\nSubmitting a value not present in that list causes a validation error."}}},"PayOnDeliveryInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept terms and conditions to proceed.\nMust be true.","enum":[true]}}},"BexSelectionInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept terms and conditions to proceed.\nMust be true.","enum":[true]}}},"BexBinNumberInput":{"type":"object","required":["bin_number"],"properties":{"bin_number":{"type":"string","description":"First 6 or 8 digits of the card (BIN - Bank Identification Number).\nUsed to identify the card type and available installment options for\nBKM Express. Must contain only digits.","pattern":"^\\d{6,8}$"}}},"BexInstallmentSelectionInput":{"type":"object","required":["installment"],"properties":{"installment":{"type":"integer","description":"The installment count to select (e.g., `1` for single payment, `3` for\nthree installments). This is **not** a primary key. The system resolves\nthe matching active `Installment` record for the card by `installment_count`."}}},"BexNonceInput":{"type":"object","required":["order_id","transaction_id","data"],"properties":{"order_id":{"type":"string","description":"Order identifier as returned by the BKM Express callback. Corresponds\nto the order number assigned in `BexSelectionPage`."},"transaction_id":{"type":"string","description":"Transaction identifier issued by BKM Express. Must match the\n`transaction_id` stored in the pre-order session data from `BexSelectionPage`."},"data":{"type":"object","description":"Payment result object sent by the BKM Express JS widget callback.","required":["status","paymentPurchased","totalAmount"],"properties":{"status":{"type":"string","description":"Payment status from BKM Express. Must be `\"ok\"` for the transaction\nto be accepted.","enum":["ok"]},"paymentPurchased":{"type":"boolean","description":"Indicates whether the payment was successfully charged on the BKM side.\nMust be truthy."},"totalAmount":{"type":"string","description":"Total amount charged by BKM Express. Uses a comma as decimal separator\n(e.g., `\"159,99\"`). Validated against `pre_order.get_total_amount_with_interest()`."}},"additionalProperties":true}}},"MasterpassRestBinNumberInput":{"type":"object","required":["bin_number"],"properties":{"bin_number":{"type":"string","description":"First 6 or 8 digits of the card (BIN - Bank Identification Number).\nCaptured by the Masterpass JS SDK on the client side. Must contain\nonly digits and have a length of 6 or 8.","pattern":"^\\d{6,8}$"},"is_masterpass_stored_card":{"type":"boolean","default":false,"description":"Flag indicating whether the card BIN comes from the user's stored\nMasterpass cards. Stored on the pre-order as\n`pre_order.data[\"is_masterpass_stored_card\"]`."}}},"MasterpassRestInstallmentSelectionInput":{"type":"object","required":["installment"],"properties":{"installment":{"type":"integer","description":"Primary key (`pk`) of the `Installment` record to select. The PK\nmust reference an active installment linked to the card resolved\nin `MasterpassRestBinNumberPage`."}}},"MasterpassRestOrderNoInput":{"type":"object","properties":{"use_three_d":{"type":"boolean","default":false,"description":"Hint forwarded to `check_three_d_secure(...)`. When the rule\nresolves to `true`, the user must complete a 3D Secure challenge\nbefore the subsequent `MasterpassRestCompletePage` step."}}},"MasterpassRestCompleteInput":{"type":"object","required":["three_d_secure"],"description":"Final Masterpass REST submission payload. The endpoint also merges any\nrequest **query string parameters** into the form data (with the form\n`amount` key removed before merging) so that 3D Secure callback\nparameters appended by the bank are captured automatically.","properties":{"three_d_secure":{"type":"boolean","description":"Must match `pre_order.redirect_to_three_d` set in\n`MasterpassRestOrderNoPage`. A mismatch returns\n`\"Transaction failed. Please try again.\"`."},"token":{"type":"string","description":"Masterpass payment token issued by the SDK."},"oid":{"type":"string","description":"Order id echoed back by the bank on 3D callback."},"md":{"type":"string","description":"3D Secure `md` parameter from the bank callback."},"xid":{"type":"string","description":"3D Secure `xid` parameter from the bank callback."},"eci":{"type":"string","description":"3D Secure ECI value from the bank callback."},"cavv":{"type":"string","description":"3D Secure CAVV value from the bank callback."},"rnd":{"type":"string","description":"3D Secure random nonce from the bank callback."},"hash":{"type":"string","description":"Bank-issued response hash. Validated via `gateway.is_hash_valid` when\n`three_d_secure` is `true` and the gateway has\n`hash_validation_enabled` (skipped for iOS/Android client types)."},"hashParams":{"type":"string","description":"3D Secure hash params list from the bank callback."},"hashParamsVal":{"type":"string","description":"3D Secure hash params values from the bank callback."},"mdStatus":{"type":"string","description":"3D Secure MD status. Validated via `gateway.is_md_status_valid`\nwhen `three_d_secure` is `true`. A failure returns\n`\"Transaction failed. Please try again.\"`."},"bankIca":{"type":"string","description":"Bank ACQ ICA value passed back by the gateway."},"paymentReceived":{"type":"string","description":"Payment received indicator returned by the gateway."},"amount":{"type":"string","format":"decimal","description":"Total amount in minor units returned by the bank. Divided by 100\nduring validation and compared against\n`pre_order.get_total_amount_with_interest()`. A mismatch returns\n`\"Transaction failed. Please try again.\"`. Note: any `amount` form\nfield is dropped before request query parameters are merged into\nthe body, so the value used is the one supplied by the bank\ncallback when present."},"clientId":{"type":"string","description":"Merchant client id echoed back by the gateway."},"sign":{"type":"string","description":"Signature value from the bank callback."},"transactionType":{"type":"string","description":"Masterpass transaction type.","enum":["PURCHASE","PURCHASE_3D","DIRECT_PURCHASE","DIRECT_PURCHASE_3D","REGISTER_AND_PURCHASE","REGISTER_AND_PURCHASE_3D"]},"status":{"type":"string","description":"Masterpass status string."},"completeStatus":{"type":"string","description":"Masterpass complete status string."},"paymentId":{"type":"string","description":"Masterpass payment id."},"conversationData":{"type":"string","description":"Masterpass conversation data."},"conversationId":{"type":"string","description":"Masterpass conversation id."},"callbackStatus":{"type":"string","description":"Masterpass callback status string."}}},"MasterpassRestRewardListInput":{"type":"object","required":["card_alias"],"properties":{"card_alias":{"type":"string","description":"Alias of the Masterpass stored card to query rewards for. The alias\nis the value the Masterpass JS SDK uses to identify a card. The\nvalue is forwarded to `gateway.query_rewards(...)`."}}},"MasterpassBinNumberInput":{"type":"object","required":["bin_number"],"properties":{"bin_number":{"type":"string","description":"First 6 or 8 digits of the card (BIN — Bank Identification Number).\nCaptured by the Masterpass JS SDK on the client side. Must contain\nonly digits and have a length of 6 or 8.","pattern":"^\\d{6,8}$"},"is_masterpass_stored_card":{"type":"boolean","default":false,"description":"Indicates whether the card BIN comes from the user's stored\nMasterpass cards. Saved to the session so later steps can\ndistinguish stored-card and fresh-card flows."}}},"MasterpassInstallmentSelectionInput":{"type":"object","required":["installment"],"properties":{"installment":{"type":"integer","description":"Primary key (`pk`) of the `Installment` record to select. The PK\nmust reference an active installment linked to the card resolved\nin `MasterpassBinNumberPage`."}}},"MasterpassOrderNoPageInput":{"type":"object","description":"No input fields are required for this step. Submit an empty form body\nto trigger order number assignment and 3D Secure routing evaluation."},"MasterpassCompleteInput":{"type":"object","required":["token","three_d_secure"],"description":"Final Masterpass submission payload. The endpoint also merges any\nrequest **query string parameters** into the form data (with the form\n`amount` key removed before merging) so that 3D Secure callback\nparameters appended by the bank are captured automatically.","properties":{"token":{"type":"string","description":"Masterpass payment token received from the gateway."},"three_d_secure":{"type":"boolean","default":false,"description":"Indicates whether the transaction went through 3D Secure. When\n`true`, the hash and MD status are validated. Defaults to `false`."},"oid":{"type":"string","description":"Order ID echoed back by the bank on 3D callback."},"md":{"type":"string","description":"3D Secure `md` parameter from the bank callback."},"xid":{"type":"string","description":"3D Secure `xid` parameter from the bank callback."},"eci":{"type":"string","description":"3D Secure ECI value from the bank callback."},"cavv":{"type":"string","description":"3D Secure CAVV value from the bank callback."},"rnd":{"type":"string","description":"3D Secure random nonce from the bank callback."},"hash":{"type":"string","description":"Bank-issued response hash. Validated via the gateway when\n`three_d_secure` is `true`."},"hashParams":{"type":"string","description":"3D Secure hash params list from the bank callback."},"hashParamsVal":{"type":"string","description":"3D Secure hash params values from the bank callback."},"mdStatus":{"type":"string","description":"3D Secure MD status. Validated via the gateway when\n`three_d_secure` is `true`. A failure returns\n`\"Transaction failed. Please try again.\"`."},"bankIca":{"type":"string","description":"Bank ACQ ICA value passed back by the gateway."},"paymentReceived":{"type":"string","description":"Payment received indicator returned by the gateway."},"amount":{"type":"string","format":"decimal","description":"Total amount from the bank callback. When present, it is validated\nagainst the order total. A mismatch returns\n`\"Transaction failed. Please try again.\"`. Note: any `amount` form\nfield is removed before query string parameters are merged into\nthe body, so the value used is the one supplied by the bank\ncallback when present."},"clientId":{"type":"string","description":"Merchant client ID echoed back by the gateway."},"sign":{"type":"string","description":"Signature value from the bank callback."}}},"MasterpassRemoteInstallmentInput":{"type":"object","required":["remote_installment_id"],"properties":{"remote_installment_id":{"type":"string","maxLength":32,"description":"Identifier of the installment option returned by the remote\ninstallment service. Must match an active, filter-passing\ninstallment for the current card and basket amount."}}},"CampaignListPageInput":{"type":"object","required":["card_number"],"properties":{"card_number":{"type":"string","description":"The full credit card number. Leading, trailing, and internal spaces are\nstripped before validation is applied. Must be a valid card number."}}},"CampaignSelectionPageInput":{"type":"object","required":["campaign"],"properties":{"campaign":{"type":"string","description":"The code of the campaign to apply to the order. Must match one of the\ncampaign codes present in the `campaigns` list of the current pre-order\nstate. Submitting a code not present in that list causes a validation\nerror."}}},"LoyaltyMoneyPageInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept the terms and conditions to proceed with the loyalty\nmoney payment. Must be `true`.","enum":[true]}}},"LoyaltyMoneyUsagePageInput":{"type":"object","properties":{"loyalty_amount_to_use":{"type":["number","null"],"format":"decimal","description":"The flat loyalty money amount to apply to the order, as a decimal value\nwith up to 12 digits and 2 decimal places (e.g., `\"50.00\"`). When\nprovided alongside `account_usages`, this field takes precedence and\n`account_usages` is ignored. Submit `0` or `null` to remove any\npreviously applied loyalty money amount."},"account_usages":{"type":["string","null"],"description":"A JSON-encoded array specifying the loyalty money amount to debit from\neach account label. Each array item must contain:\n- `label_id`: integer primary key of the account label, or `null` for\n  unlabeled accounts\n- `amount`: decimal string representing the amount to debit from that\n  label group\n\nThe requested amount per label must not exceed the user's available\nbalance for that label. Unlabeled accounts are referenced with\n`\"label_id\": null`. Malformed JSON returns a validation error.\n\nIgnored when `loyalty_amount_to_use` is also provided."}}},"LoyaltyCardPageInput":{"type":"object","required":["selected_loyalty_amount"],"properties":{"selected_loyalty_amount":{"type":"number","format":"decimal","description":"The loyalty card points amount to apply to the order, as a decimal\nvalue with up to 12 digits and 2 decimal places (e.g., `\"5.00\"`).\nMust not exceed the user's available points balance. The effective\nmaximum is `basket_total - MINIMUM_ORDER_AMOUNT` plus any previously\napplied amount. Submitting a value above this cap or above the\navailable balance returns a validation error."}}},"GiftBoxInput":{"type":"object","properties":{"note":{"type":["string","null"],"maxLength":160,"description":"An optional personal message to include with the gift box.\nMaximum 160 characters. Accepts `null` and empty string."},"gift_video":{"type":"boolean","description":"When `true`, a gift video is requested for this order."},"gift_video_notification_sent":{"type":"boolean","description":"Indicates whether the gift video notification has already been\nsent. Passed through from the client after the notification\nis dispatched."}}},"RemoteShippingOptionSelectionInput":{"type":"object","required":["shipping_option"],"properties":{"shipping_option":{"type":"integer","description":"Primary key of the selected shipping option.\nMust be one of the options returned by the remote shipping service\nfor the current checkout context."}}},"SendSmsInput":{"type":"object","required":["phone_number"],"properties":{"phone_number":{"type":"string","description":"Recipient phone number for the Pay on Delivery verification SMS.\nValidated against the configured phone number format."}}},"VerifySmsInput":{"type":"object","required":["verify_code"],"properties":{"verify_code":{"type":"string","description":"The 6-digit numeric verification code sent via SMS for Pay on Delivery verification.\nMust consist of exactly 6 digits. The code is validated against the\nstored `pre_order.verification_code` and must be submitted before\nthe `verify_timeout` (default: 180 seconds) elapses.","pattern":"^\\d{6}$"}}},"CouponSelectionInput":{"type":"object","required":["coupon","action"],"properties":{"coupon":{"type":"string","description":"Primary key of the `BasketOffer` record to add or remove, as a string."},"action":{"type":"string","description":"Action to perform: `\"add\"` to apply the coupon or `\"remove\"` to unapply it.","enum":["add","remove"]}}},"VoucherCodeInput":{"type":"object","properties":{"voucher_code":{"type":"string","description":"Voucher code to apply to the checkout session. Leading and trailing whitespace\nis trimmed automatically. Submit an empty string or omit this field to clear\nthe currently set voucher code. Maximum 128 characters.","maxLength":128}}},"MobilExpressSelectionInput":{"type":"object","properties":{"clear":{"type":"boolean","default":false,"description":"Set to `true` to cancel the MobilExpress flow and clear all stored MobilExpress\ndata from the pre-order. Set to `false` (default) to proceed with the card-list\nlookup."}}},"MobilExpressCardFoundOtpRequiredPhoneInput":{"type":"object","required":["phone_number"],"properties":{"phone_number":{"type":"string","minLength":10,"maxLength":10,"description":"Recipient phone number for the OTP SMS. Must be exactly 10 characters."}}},"MobilExpressCardFoundOtpRequiredOtpInput":{"type":"object","required":["otp"],"properties":{"otp":{"type":"string","minLength":4,"maxLength":8,"description":"One-time password received by the user via SMS. Between 4 and 8 characters."}}},"MobilExpressCardSelectionInput":{"type":"object","required":["card_token","masked_card_number"],"properties":{"card_token":{"type":"string","description":"Opaque token identifying the selected stored card."},"masked_card_number":{"type":"string","description":"Partially masked PAN of the selected card (e.g., `\"450803******1234\"`).\nUsed for BIN-based card type and installment lookup."}}},"MobilExpressInstallmentSelectionInput":{"type":"object","required":["installment"],"properties":{"installment":{"type":"integer","description":"Primary key of the `Installment` record to use. Must be an active installment\noption linked to the selected card type."}}},"MobilExpressTryPaymentInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept the terms and conditions to proceed. Must be `true`.","enum":[true]}}},"MobilExpressPaymentCompleteOtpInput":{"type":"object","required":["otp"],"properties":{"otp":{"type":"string","minLength":4,"maxLength":8,"description":"OTP code for payment completion. Between 4 and 8 characters."}}},"MobilExpressPaymentCompleteCvvInput":{"type":"object","required":["cvv"],"properties":{"cvv":{"type":"string","minLength":3,"maxLength":3,"description":"3-digit card security code (CVV/CVC) printed on the back of the card."}}},"MobilExpressPaymentCompleteCvvAndOtpInput":{"type":"object","required":["cvv","otp"],"properties":{"cvv":{"type":"string","minLength":3,"maxLength":3,"description":"3-digit card security code (CVV/CVC)."},"otp":{"type":"string","minLength":4,"maxLength":8,"description":"OTP code for payment completion. Between 4 and 8 characters."}}},"MobilExpressPaymentThreeDInput":{"type":"object","required":["TransactionId","MobilexpressTransId","Result","TotalAmount","InstallmentCount","Hash"],"properties":{"TransactionId":{"type":"string","description":"Internal order transaction ID posted by the bank redirect."},"MobilexpressTransId":{"type":"string","description":"MobilExpress transaction ID posted by the bank redirect."},"Result":{"type":"string","description":"3D Secure result code. Must be `'3DSuccess'` to proceed.","enum":["3DSuccess","3DFailed"]},"TotalAmount":{"type":"string","format":"decimal","description":"Total payment amount posted by the bank redirect (12 digits, 2 decimal places).\nMust match `pre_order.get_total_amount_with_interest()`."},"InstallmentCount":{"type":"integer","description":"Number of installments used in the transaction."},"Hash":{"type":"string","description":"HMAC hash from the MobilExpress gateway for response integrity verification.\nValidated via `gateway.is_hash_valid`."}}},"RewardListPageInput":{"type":"object","required":["card_number","card_month","card_year","card_cvv"],"properties":{"card_number":{"type":"string","description":"Full credit card number. Leading, trailing, and internal spaces are stripped\nbefore validation. Must pass card number format validation."},"card_month":{"type":"string","description":"Card expiry month. Must be a valid month value."},"card_year":{"type":"string","minLength":4,"maxLength":4,"description":"Card expiry year (4 digits). Must be a valid future year."},"card_cvv":{"type":"string","description":"Card security code (CVV/CVC). Must pass CVV format validation."},"card_holder":{"type":"string","description":"Cardholder full name. Optional."},"card_name":{"type":["string","null"],"description":"Optional alias or label for the card."}}},"RewardSelectionPageInput":{"type":"object","description":"Dynamic input schema — the fields are determined at runtime based on the reward\ntypes returned by the payment gateway in the preceding `RewardListPage` step.\nEach field name is a `RewardType` enum value (`general` or `special`) and\neach value is a decimal amount between `0` and the maximum available for that type.\nThe sum of all submitted amounts must not exceed the order total.","additionalProperties":{"type":"string","format":"decimal","description":"Amount of this reward type to apply. Between 0 and the maximum available\nfor this type (12 digits, 2 decimal places)."}},"SampleProductPageInput":{"type":"object","required":["sample_products"],"properties":{"sample_products":{"type":"array","items":{"type":"integer"},"description":"List of product PKs to add as sample products. Must be from the set of\navailable sample products for the current basket's offer discount applications.\nDuplicates are deduplicated automatically. Submit an empty array to explicitly\ndecline all sample products (sets `unwanted_sample_products = true`).\nThe count must not exceed the `allowed_quantity` returned in the page context."}}},"OrderNotePageInput":{"type":"object","required":["notes"],"properties":{"notes":{"type":["string","null"],"maxLength":320,"description":"Free-text note to attach to the order. Maximum 320 characters.\nSubmitting `null` or an empty string clears any previously stored note."}}},"DeliveryBagsPageInput":{"type":"object","required":["product"],"properties":{"product":{"type":"string","description":"SKU of the delivery bag product. Must match the SKU configured in\n`DELIVERY_BAGS_CONF.sku`. The product must be active and have\n`product_type = miscellaneous`."},"quantity":{"type":"integer","minimum":0,"description":"Number of bags requested by the user. Only used when\n`DELIVERY_BAGS_CONF.is_quantity_changeable` is `true`. Must be greater than\nor equal to `DELIVERY_BAGS_CONF.min_quantity`. Defaults to `0` if omitted,\nwhich falls back to `min_quantity`. Raises a validation error if\n`is_quantity_changeable` is `false` and a non-zero value is submitted."}}},"OrderSelectionPageInput":{"type":"object","required":["extra_field"],"properties":{"extra_field":{"description":"A JSON value for the `Order` model's `extra_field` attribute. Must conform\nto the schema defined by the `Order` model's attribute configuration\n(accessible via the `schema` key in the GET page context). Validated via\n`Order.get_attribute_config('extra_field')`. If no attribute config is\nregistered, the value is stored as-is without additional validation."}}},"GiftCardInput":{"type":"object","required":["card_number","provider_slug"],"properties":{"card_number":{"type":"string","maxLength":64,"description":"The gift card number to look up. Leading and trailing whitespace is\nstripped automatically. Must not be blank."},"provider_slug":{"type":"string","maxLength":100,"description":"Slug of an active gift card provider. Returns a validation error if\nno active provider with this slug exists."}}},"GiftCardOtpInput":{"type":"object","required":["otp_code"],"properties":{"otp_code":{"type":"string","maxLength":16,"description":"The one-time password received by the user (SMS or similar channel).\nLeading and trailing whitespace is stripped. Maximum 16 characters."}}},"GiftCardApplyInput":{"type":"object","required":["amount"],"properties":{"amount":{"type":"string","format":"decimal","description":"Decimal amount to apply from the gift card (12 digits, 2 decimal places).\nMust be greater than zero. The actual reserved amount may be lower after\ncaps are applied: available balance, remaining unpaid order total, and\nthe headroom under `GIFT_CARD_CONFIG.max_amount_per_order`."}}},"GiftCardRemoveInput":{"type":"object","required":["card_number_hash"],"properties":{"card_number_hash":{"type":"string","maxLength":255,"description":"Hash of the gift card number that identifies the reservation to remove.\nObtained from `card_number_hash` in the applied cards list returned by\nthe Gift Card Page. If the hash does not match any reservation the\nrequest succeeds silently."}}},"GiftCardUpdateAmountInput":{"type":"object","required":["card_number_hash","new_amount"],"properties":{"card_number_hash":{"type":"string","maxLength":255,"description":"Hash of the gift card number identifying the reservation to update.\nObtained from `card_number_hash` in the applied cards list returned by\nthe Gift Card Page."},"new_amount":{"type":"string","format":"decimal","description":"New desired reserved amount (12 digits, 2 decimal places). Must be\ngreater than zero. Subject to the same cap rules as the apply step,\nadjusted so the card's current reserved amount is treated as if it\nwere not yet applied."}}},"GiftCardPaymentInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"Must be `true`. The user must explicitly accept the terms and conditions\nto confirm the gift card payment. Any other value returns a validation\nerror."}}},"SlotSelectionPageInput":{"type":"object","required":["lower","upper"],"properties":{"lower":{"type":"string","format":"date-time","description":"Start of the selected delivery time window. Must be an ISO 8601 datetime with timezone.\nMust be a currently available slot according to `SlotService.is_delivery_range_available()`."},"upper":{"type":"string","format":"date-time","description":"End of the selected delivery time window. Must be an ISO 8601 datetime with timezone."}}},"ReservationSelectionPageInput":{"type":"object","required":["skip_reservation"],"properties":{"skip_reservation":{"type":"boolean","default":false,"description":"Set to `true` to skip reservation scheduling. When `true`, `lower` and `upper`\nare not required and no delivery range is stored. When `false`, both `lower`\nand `upper` are required."},"lower":{"type":"string","format":"date-time","description":"Start of the selected reservation time window. Required when `skip_reservation` is `false`."},"upper":{"type":"string","format":"date-time","description":"End of the selected reservation time window. Required when `skip_reservation` is `false`."}}},"CreditPaymentSelectionPageInput":{"type":"object","required":["credit_payment_option"],"properties":{"credit_payment_option":{"type":"integer","description":"Primary key of the selected `Pos` object. Must be one of the available POS options\nreturned by `payment_option.get_available_poses()` for the current credit payment option."}}},"CreditPaymentConfirmationPageInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept the terms and conditions to initiate the payment redirect. Must be `true`.","enum":[true]}}},"CreditPaymentCompletePageInput":{"description":"The active schema depends on the gateway of the selected POS option\n(`pre_order.data['credit_payment_option'].gateway`).","oneOf":[{"$ref":"#/components/schemas/CreditPaymentCompleteDefaultInput"},{"$ref":"#/components/schemas/CreditPaymentCompleteFibaInput"},{"$ref":"#/components/schemas/CreditPaymentCompleteGarantiInput"},{"$ref":"#/components/schemas/CreditPaymentCompleteZipInput"},{"$ref":"#/components/schemas/CreditPaymentCompleteComPayInput"}]},"CreditPaymentCompleteDefaultInput":{"type":"object","description":"Default gateway callback input (`SuccessRequiredInputSerializer`).","required":["success"],"properties":{"success":{"type":"boolean","description":"Payment result flag posted by the gateway. Must be `true`.","enum":[true]}}},"CreditPaymentCompleteFibaInput":{"type":"object","description":"Fiba credit gateway callback input (`fiba_credit`). Extends the default serializer.","required":["success"],"properties":{"success":{"type":"boolean","description":"Payment result flag posted by the gateway. Must be `true`.","enum":[true]}}},"CreditPaymentCompleteGarantiInput":{"type":"object","description":"Garanti credit gateway callback input (`garanti_credit`).","required":["success","TransactionId","Key","CardToken"],"properties":{"success":{"type":"boolean","description":"Payment result flag posted by the gateway. Must be `true`.","enum":[true]},"TransactionId":{"type":"string","minLength":3,"maxLength":32,"description":"Transaction ID from the Garanti gateway callback."},"Key":{"type":"string","minLength":3,"maxLength":64,"description":"Key from the Garanti gateway callback."},"CardToken":{"type":"string","minLength":3,"maxLength":64,"description":"Card token from the Garanti gateway callback."}}},"CreditPaymentCompleteZipInput":{"type":"object","description":"Zip credit gateway callback input (`zip_credit`).","required":["checkout_id"],"properties":{"checkout_id":{"type":"string","maxLength":256,"description":"Checkout ID from the Zip gateway callback."}}},"CreditPaymentCompleteComPayInput":{"type":"object","description":"ComPay credit gateway callback input (`compay_credit`). Hash-validated against\nthe gateway's `generate_hash()` output and `is_status_valid()` check.","required":["Response","acqResponseCode","orderId","amount"],"properties":{"Response":{"type":"string","maxLength":32,"description":"Response code from the ComPay gateway callback."},"acqResponseCode":{"type":"string","maxLength":32,"description":"Acquirer response code from the ComPay gateway."},"AuthCode":{"type":"string","maxLength":32,"description":"Authorization code from the ComPay gateway. Optional."},"orderId":{"type":"string","maxLength":64,"description":"Order ID from the ComPay gateway callback."},"amount":{"type":"string","description":"Payment amount posted by the ComPay gateway (comma-separated decimal, e.g. `\"150,00\"`).\nMust match `pre_order.get_unpaid_amount()`."},"productType":{"type":"string","maxLength":2,"description":"Product type from the ComPay gateway callback. Optional."}}},"ConfirmationPaymentAgreementConfirmPageInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"Must be `true` to accept the pre-payment terms and conditions and trigger\nthe gateway's `enable_payment` call. Submitting `false` returns a\nvalidation error."}}},"ConfirmationPaymentSelectedPageInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"Must be `true` to accept the standard checkout order agreement\n(`OrderAgreementInputSerializer`) and initiate the confirmation payment\nvia the gateway's `start_payment` call. This is distinct from the\ngateway-specific pre-payment agreement accepted in\n`ConfirmationPaymentAgreementConfirmPage`. The user must also be a\nregistered (non-anonymous) user with a valid phone number.\nSubmitting `false` returns a validation error."}}},"ConfirmationPaymentQueryPageInput":{"type":"object","description":"Gateway-dependent input for the confirmation payment polling step.\nMost gateways (TomPay, Apple Pay, default) require no fields — submit an\nempty body for those. Gateway-specific fields are listed below.","properties":{"otp":{"type":"string","minLength":4,"maxLength":4,"description":"**Paycell only.** 4-digit one-time password sent to the user's registered\nphone number. Required when the active gateway is `paycell`."},"customer_card_no":{"type":"string","maxLength":16,"description":"**PosAs Gift Card only.** The gift card number. Required when the active\ngateway is `posas_giftcard`."},"password":{"type":"string","pattern":"^\\d{4}$","description":"**PosAs Gift Card only.** 4-digit PIN for the gift card. Required when the\nactive gateway is `posas_giftcard`. Must consist of exactly 4 digits."}}},"RedirectionPageCompletePageInput":{"description":"Gateway callback payload posted to this endpoint after the customer\ncompletes or abandons the payment on the provider's hosted page.\nThe exact fields required depend on the active payment gateway. The gateway\nis determined by the POS record associated with the selected payment option.\nMost providers include a `success` indicator; additional fields carry\ntransaction identifiers, hash values, and status codes for server-side\nverification.","oneOf":[{"$ref":"#/components/schemas/RedirectionCompleteGenericInput"},{"$ref":"#/components/schemas/RedirectionCompleteFastPayInput"},{"$ref":"#/components/schemas/RedirectionCompletePayUPolandInput"},{"$ref":"#/components/schemas/RedirectionCompleteExtensionInput"},{"$ref":"#/components/schemas/RedirectionCompleteComPayInput"},{"$ref":"#/components/schemas/RedirectionCompleteIyzicoInput"},{"$ref":"#/components/schemas/RedirectionCompleteMobilExpressHostedInput"},{"$ref":"#/components/schemas/RedirectionCompleteYKBWorldPayInput"},{"$ref":"#/components/schemas/RedirectionCompleteStripeInput"},{"$ref":"#/components/schemas/RedirectionCompleteTeqPayInput"},{"$ref":"#/components/schemas/RedirectionCompletePaypalInput"},{"$ref":"#/components/schemas/RedirectionCompletePayuRoByClickInput"},{"$ref":"#/components/schemas/RedirectionCompleteTapInput"},{"$ref":"#/components/schemas/RedirectionCompleteMaximumPayInput"}]},"RedirectionCompleteGenericInput":{"type":"object","description":"Used by gateways that only require a success flag on return: `yandex_money`, `alpha`, `multisafepay`, `netopia`, `payu_pl`, `bulut`, `paymob`, `dummypay`.","required":["success"],"properties":{"success":{"type":"boolean","enum":[true],"description":"Indicates a successful payment authorisation. Must be `true`; any other value is treated as a failed transaction."}}},"RedirectionCompleteFastPayInput":{"type":"object","description":"Used by the `fastpay` gateway. All `Encrypted*` fields contain values encrypted by the FastPay service and are decrypted server-side using the configured gateway credentials.","required":["success","EncryptedResultCode","EncryptedApproveCode","EncryptedCustomerGsm","EncryptedErrorMessage"],"properties":{"success":{"type":"boolean","enum":[true]},"EncryptedResultCode":{"type":"string","description":"Encrypted result code returned by FastPay."},"EncryptedApproveCode":{"type":"string","description":"Encrypted approval code returned by FastPay."},"EncryptedCustomerGsm":{"type":"string","description":"Encrypted customer mobile number returned by FastPay."},"EncryptedErrorMessage":{"type":"string","description":"Encrypted error message (present even on success)."},"EncryptedInitialAmount":{"type":"string"},"EncryptedDiscountedAmount":{"type":"string"},"EncryptedInstallCount":{"type":"string"},"EncryptedUserToken":{"type":"string"},"EncryptedEnterpriseOrderId":{"type":"string"}}},"RedirectionCompletePayUPolandInput":{"type":"object","description":"Used by the `payu_poland` gateway.","required":["success","payment_id","status"],"properties":{"success":{"type":"boolean","enum":[true]},"payment_id":{"type":"string","description":"PayU transaction identifier. Validated against the transaction ID stored at the time the redirect was initiated."},"status":{"type":"string","description":"Payment status string returned by PayU. A value of `Failed` is rejected with a validation error."}}},"RedirectionCompleteExtensionInput":{"type":"object","description":"Used by the `extension` gateway.\nWhen this gateway is active, `installment_count` and `interest_fee` are\nstored on the pre-order under `installment_alt` for downstream order\nprocessing. Field names containing hyphens are automatically normalised\nto underscores before validation.","required":["success","salt","order_id","amount","installment_count","interest_fee","status","substatus","hash"],"properties":{"success":{"type":"boolean","enum":[true]},"salt":{"type":"string","maxLength":10},"order_id":{"type":"string","maxLength":64},"amount":{"type":"string","description":"Payment amount as returned by the extension provider."},"installment_count":{"type":"string","description":"Number of instalments selected by the customer at the payment provider's page. Stored on the pre-order for interest calculation."},"interest_fee":{"type":"string","description":"Interest fee amount applied by the payment provider for the selected instalment plan. Stored on the pre-order for final amount calculation."},"status":{"type":"string","enum":[3,4,"RESOLVED","PENDING"],"description":"Primary transaction status code returned by the extension provider."},"substatus":{"type":"string","enum":[7,8,"RESOLVED","PAYMENT_WAITING"],"description":"Secondary transaction status code returned by the extension provider."},"hash":{"type":"string","maxLength":256,"description":"HMAC hash used for server-side payload integrity verification. Computed using the gateway's configured hash key."}}},"RedirectionCompleteComPayInput":{"type":"object","description":"Used by the `compay` gateway. The submitted payload is verified against a provider-generated hash and validated against the outstanding pre-order amount before acceptance.","required":["Response","acqResponseCode","orderId","amount"],"properties":{"Response":{"type":"string","maxLength":32,"description":"Transaction response code returned by ComPay."},"acqResponseCode":{"type":"string","maxLength":32,"description":"Acquirer response code returned by ComPay."},"AuthCode":{"type":"string","maxLength":32,"description":"Authorisation code (optional, present on approved transactions)."},"orderId":{"type":"string","maxLength":64,"description":"Order identifier returned by ComPay."},"amount":{"type":"string","description":"Payment amount as a string (comma decimal separator accepted). Validated to match the outstanding pre-order amount."},"productType":{"type":"string","maxLength":2}}},"RedirectionCompleteIyzicoInput":{"type":"object","description":"Used by `pay_with_iyzico`, `iyzico_bkm`, and `iyzico_funds_transfer`\ngateways. For `iyzico_funds_transfer` only `token` is required.","required":["token"],"properties":{"token":{"type":"string","description":"Iyzico transaction token returned in the callback."},"oid":{"type":"string","maxLength":128,"description":"Optional order identifier returned by Iyzico alongside the token."}}},"RedirectionCompleteMobilExpressHostedInput":{"type":"object","description":"Used by the `mobilexpress_hosted` gateway.","required":["Result","SystemTransId"],"properties":{"Result":{"type":"string","enum":["Success"],"description":"Transaction result returned by MobilExpress Hosted. Only `Success` is accepted; any other value is treated as a failed transaction."},"SystemTransId":{"type":"string","description":"MobilExpress Hosted system-level transaction identifier."}}},"RedirectionCompleteYKBWorldPayInput":{"type":"object","description":"Used by the `ykb_worldpay` gateway.","required":["success","transactionResult"],"properties":{"success":{"type":"boolean","enum":[true]},"transactionResult":{"type":"string","description":"YKB WorldPay transaction result code. Must equal `\"1\"` for the payment to be considered approved."}}},"RedirectionCompleteStripeInput":{"type":"object","description":"Used by the `stripe` gateway.","required":["success","session_id"],"properties":{"success":{"type":"boolean","enum":[true]},"session_id":{"type":"string","minLength":3,"description":"Stripe Checkout Session ID returned in the redirect URL."}}},"RedirectionCompleteTeqPayInput":{"type":"object","description":"Used by the `teqpay` gateway. Field names are case-mapped before validation: `Token` → `token`, `Result` → `result`.","required":["success","Token","Result"],"properties":{"success":{"type":"boolean","enum":[true]},"Token":{"type":"string","maxLength":128,"description":"TeqPay transaction token (submitted as `Token`, mapped to `token`)."},"Result":{"type":"boolean","description":"TeqPay payment result flag (submitted as `Result`, mapped to `result`)."}}},"RedirectionCompletePaypalInput":{"type":"object","description":"Used by the `paypal` gateway. `token` and `PayerID` are present on standard PayPal Express Checkout returns but may be absent in some PayPal flow variants.","required":["success"],"properties":{"success":{"type":"boolean","enum":[true]},"token":{"type":"string","description":"PayPal transaction token (optional on some flows)."},"PayerID":{"type":"string","description":"PayPal payer identifier (optional on some flows)."}}},"RedirectionCompletePayuRoByClickInput":{"type":"object","description":"Used by the `payu_ro_paybyclick` gateway.","required":["success","body","date","merchant","signature"],"properties":{"success":{"type":"boolean","enum":[true]},"body":{"type":"string","description":"Signed response body returned by PayU Romania."},"date":{"type":"string","description":"Response timestamp returned by PayU Romania."},"merchant":{"type":"string","description":"Merchant identifier returned by PayU Romania."},"signature":{"type":"string","description":"Cryptographic signature for payload verification."}}},"RedirectionCompleteTapInput":{"type":"object","description":"Used by `qpay_tap` and `benefit_tap` gateways.","required":["success","tap_id","oid","price"],"properties":{"success":{"type":"boolean","enum":[true]},"tap_id":{"type":"string","maxLength":256,"description":"Tap payment identifier returned by the gateway."},"oid":{"type":"string","maxLength":256,"description":"Order identifier returned by the gateway."},"price":{"type":"string","description":"Payment amount string returned by the gateway."}}},"RedirectionCompleteMaximumPayInput":{"type":"object","description":"Used by the `maximumpay` gateway.","required":["success","Response","PAY3D"],"properties":{"success":{"type":"boolean","enum":[true]},"Response":{"type":"string","enum":["Approved"],"description":"Must be `\"Approved\"` for the transaction to be accepted."},"PAY3D":{"type":"boolean","description":"Indicates whether 3D Secure was used for this transaction."},"oid":{"type":"string"},"hash":{"type":"string"},"timestamp":{"type":"string"},"Ecom_Payment_Card_ExpDate_Month":{"type":"string"},"Ecom_Payment_Card_ExpDate_Year":{"type":"string"},"currency":{"type":"string"},"phone":{"type":"string"},"ajaxHash":{"type":"string"},"PHONENO":{"type":"string"},"maskedCreditCard":{"type":"string"},"transId":{"type":"string"},"tranUid":{"type":"string"},"CHANNEL":{"type":"string"},"storetype":{"type":"string"},"failUrl":{"type":"string"},"clientIp":{"type":"string"},"extra1":{"type":"string"},"PAYMENTMETHOD":{"type":"string"},"paymentType":{"type":"string"},"returnCode":{"type":"string"},"clientid":{"type":"string"},"MaskedPan":{"type":"string"},"okUrl":{"type":"string"},"xid":{"type":"string","description":"3D Secure transaction identifier."},"lang":{"type":"string"},"HASH":{"type":"string","description":"MaximumPay hash value for server-side integrity verification."},"rnd":{"type":"string","description":"Random nonce included in hash computation."},"HASHPARAMS":{"type":"string","description":"Pipe-separated list of field names used to compute HASH."},"HASHPARAMSVAL":{"type":"string","description":"Concatenated values of the fields listed in HASHPARAMS."},"ProcReturnCode":{"type":"integer","description":"Processor return code from the acquirer."}}},"GPayRedirectPageInput":{"type":"object","description":"No input fields are required for this step. The request body must be empty.\nAny fields submitted in the body are not processed by this page and will\nnot cause a validation error; however, the Garanti Pay gateway is not\ninvolved at this step, so gateway-specific parameters are irrelevant here.","properties":{}},"CheckoutProviderSelectionPageInput":{"type":"object","description":"Payload for selecting a checkout provider (e.g. Akifast) to use for the\ncurrent order. The submitted provider must be available for the pre-order.","required":["checkout_provider"],"properties":{"checkout_provider":{"type":"integer","description":"Primary key of the checkout provider to select. Only providers that are currently available for the pre-order are accepted."}}},"AkifastAddressSelectionPageInput":{"type":"object","description":"Address data posted back from the checkout provider's hosted address form.\nBoth shipping and billing addresses must be provided in the provider's format.","required":["basket_id","session_token","shipping_address","billing_address"],"properties":{"basket_id":{"type":"integer","description":"Primary key of the active basket."},"session_token":{"type":"string","format":"uuid","description":"Session token issued by the checkout provider for this session."},"shipping_address":{"$ref":"#/components/schemas/AkifastAddressField"},"billing_address":{"$ref":"#/components/schemas/AkifastAddressField"}}},"AkifastAddressField":{"type":"object","required":["name","surname","phone_number","address_title","line","hash_data","country","city","town","district"],"properties":{"name":{"type":"string","description":"First name of the address holder."},"surname":{"type":"string","description":"Last name of the address holder."},"phone_number":{"type":"string","description":"Phone number of the address holder."},"postal_code":{"type":["string","null"],"description":"Postal code. Optional."},"address_title":{"type":"string","description":"Short label for the address (e.g. \"Home\", \"Work\")."},"tax_no":{"type":["string","null"],"description":"Tax number. Required for corporate addresses."},"tax_office":{"type":["string","null"],"description":"Tax office name. Required for corporate addresses."},"company_name":{"type":["string","null"],"description":"Company name. Required for corporate addresses."},"line":{"type":"string","description":"Full street address line."},"address_type":{"type":["string","null"],"description":"Address type (`\"individual\"` or `\"corporate\"`). Mapped to lowercase internally."},"notes":{"type":["string","null"],"description":"Optional delivery notes."},"hash_data":{"type":"string","description":"Provider-generated hash string used to verify address integrity. Stored in the address `extra_field` as `remote_hash`."},"country":{"$ref":"#/components/schemas/AkifastAddressSubField"},"city":{"$ref":"#/components/schemas/AkifastAddressSubField"},"town":{"$ref":"#/components/schemas/AkifastAddressSubField"},"district":{"$ref":"#/components/schemas/AkifastAddressSubField"}}},"AkifastAddressSubField":{"type":"object","required":["name","code"],"properties":{"name":{"type":"string","description":"Human-readable name of the geographic unit."},"code":{"type":"string","description":"Provider-specific code for the geographic unit."}}},"AkifastShippingOptionSelectionPageInput":{"type":"object","description":"Payload forwarded by the checkout provider after the customer selects a\nshipping option on the hosted form. The `conversation_id` is validated\nagainst the active session to prevent replay.","required":["basket_id","conversation_id"],"properties":{"basket_id":{"type":"integer","description":"Primary key of the active basket."},"conversation_id":{"type":"string","description":"Provider conversation identifier. Must match the value stored in `pre_order.checkout_provider_data['conversation_id']`."},"language":{"type":["string","null"],"description":"Optional language code forwarded by the provider (e.g. `\"tr\"`, `\"en\"`)."}}},"AkifastAgreementListPageInput":{"type":"object","description":"Payload posted back from the checkout provider's agreement selection step.\nIncludes the selected agreement code, shipping option, address data, and\nuser information. Sets payment option, shipping, and records the agreement\non the pre-order.","required":["basket_id","session_token","shipping_option_key","user","code"],"properties":{"basket_id":{"type":"integer","description":"Primary key of the active basket."},"session_token":{"type":"string","format":"uuid","description":"Session token issued by the checkout provider for this session."},"shipping_option_key":{"type":"integer","description":"Primary key of the selected shipping option. Must be one of the available shipping options for the pre-order's address."},"shipping_address":{"$ref":"#/components/schemas/AkifastAddressField"},"billing_address":{"$ref":"#/components/schemas/AkifastAddressField"},"user":{"$ref":"#/components/schemas/AkifastUserField"},"code":{"type":"string","enum":["info","sales"],"description":"Agreement type accepted by the customer. `info` for the preliminary information form; `sales` for the distance sales agreement."}}},"AkifastUserField":{"type":"object","required":["akinon_user_id","name","surname","email"],"properties":{"akinon_user_id":{"type":"string","maxLength":255,"description":"Provider-assigned unique user identifier."},"name":{"type":"string","maxLength":255,"description":"First name of the user."},"surname":{"type":"string","maxLength":255,"description":"Last name of the user."},"identity_number":{"type":["string","null"],"maxLength":255,"description":"National identity number. Optional."},"email":{"type":"string","format":"email","description":"Email address. Normalized to lowercase."},"phone_number":{"type":["string","null"],"maxLength":255,"description":"Phone number. Optional."},"status":{"type":["string","null"],"maxLength":255,"description":"User status from the provider. Optional."},"verification_status":{"type":["string","null"],"maxLength":255,"description":"Identity verification status. Optional."},"verification_date":{"type":["string","null"],"maxLength":255,"description":"Date when identity was verified. Optional."},"gender":{"type":["string","null"],"maxLength":255,"description":"Gender. Optional."},"email_verified":{"type":["boolean","null"],"description":"Whether the email address has been verified by the provider."},"birth_date":{"type":["string","null"],"maxLength":255,"description":"Date of birth. Optional."}}},"AkifastOrderNotificationPageInput":{"type":"object","description":"Payment notification payload sent by the checkout provider after the\ncustomer completes payment on the hosted form. Used to create the order,\nset shipping, link the customer account, and finalize the pre-order.","required":["agreements","conversation_id","payment_info","transaction","card_info","akifast_user","is_successful"],"properties":{"agreements":{"type":"boolean","enum":[true],"description":"Customer's acceptance of the agreement. Must be `true`; any other value returns a validation error."},"is_successful":{"type":"boolean","enum":[true],"description":"Payment success flag from the provider. Must be `true`; any other value returns a validation error."},"conversation_id":{"type":"string","description":"Provider conversation identifier. Must match `pre_order.checkout_provider_data['conversation_id']`."},"payment_info":{"type":"object","required":["payment_system_code"],"properties":{"payment_system_code":{"type":"string","description":"Slug of the POS (payment system) used for the transaction. Must match an existing POS record."}}},"transaction":{"$ref":"#/components/schemas/AkifastNotificationTransaction"},"card_info":{"type":"array","items":{"$ref":"#/components/schemas/AkifastCardInfo"},"description":"List of card details. At minimum the first item's BIN is used."},"shipping_address":{"$ref":"#/components/schemas/AkifastAddressField"},"billing_address":{"$ref":"#/components/schemas/AkifastAddressField"},"akifast_user":{"$ref":"#/components/schemas/AkifastUserField"}}},"AkifastNotificationTransaction":{"type":"object","required":["installment_count","interest_amount","total_paid_amount","payment_system_raw_response","shipping_option_key","is_threed"],"properties":{"installment_count":{"type":"integer","minimum":1,"maximum":12,"description":"Number of instalments selected for the payment."},"interest_rate":{"type":"number","format":"float","minimum":0,"maximum":100,"description":"Interest rate applied (as a percentage). Optional."},"interest_amount":{"type":"number","format":"float","description":"Total interest amount charged."},"total_paid_amount":{"type":"number","format":"float","description":"Total amount charged to the customer including interest."},"payment_system_raw_response":{"type":"string","description":"Raw response payload from the payment processor, as a string."},"shipping_option_key":{"type":"integer","description":"Primary key of the shipping option selected during the provider flow. Must be one of the available shipping options for the pre-order."},"is_threed":{"type":"boolean","description":"Whether the transaction was secured with 3D Secure authentication."}}},"AkifastCardInfo":{"type":"object","required":["bin"],"properties":{"bin":{"type":"string","minLength":6,"maxLength":8,"description":"Bank Identification Number (BIN) of the card used for payment. Must be 6 or 8 digits."}}},"SavedCardSelectionInput":{"type":"object","description":"Standard saved card selection input, used by all payment gateways except\nIyzico. For the Iyzico gateway, use `IyzicoSavedCardSelectionInput` instead.","required":["card"],"properties":{"card":{"type":"string","description":"Token of the saved card to use for payment. Must correspond to an active\nsaved card linked to the current user and the active payment gateway."}}},"IyzicoSavedCardSelectionInput":{"type":"object","description":"Iyzico gateway input for saved card selection. The card is identified by the\ntoken provided by the Iyzico UCS hosted card selection interface. The `card`\nfield is optional because card identity is managed internally by the Iyzico\nwidget. For all other gateways, use `SavedCardSelectionInput` instead.","properties":{"card":{"type":"string","maxLength":512,"description":"Token provided by the Iyzico UCS hosted card selection interface."}}},"SavedCardInstallmentSelectionInput":{"type":"object","required":["installment"],"properties":{"installment":{"type":"integer","description":"Primary key (`pk`) of the installment plan to select. Must reference an\nactive installment linked to the card resolved in `SavedCardSelectionPage`."}}},"SavedCardConfirmationInput":{"type":"object","description":"Standard saved card payment confirmation input, used by all payment gateways\nexcept Iyzico and PayU RO. For gateway-specific fields, use\n`IyzicoSavedCardConfirmationInput` (Iyzico gateway) or\n`PayURoSavedCardConfirmationInput` (PayU RO gateway).","required":["agreement"],"properties":{"agreement":{"type":"boolean","enum":[true],"description":"Acceptance of the terms and conditions. Must be `true` to proceed."}}},"IyzicoSavedCardConfirmationInput":{"type":"object","description":"Iyzico gateway input for saved card payment confirmation. Either `card_token`\n(to charge an existing Iyzico card) or `card_number` with full card details\n(to pay with a new card) must be provided. `register_consumer_card` is always\nrequired. For all other gateways, use `SavedCardConfirmationInput` or\n`PayURoSavedCardConfirmationInput` instead.","required":["agreement","register_consumer_card"],"properties":{"agreement":{"type":"boolean","enum":[true],"description":"Acceptance of the terms and conditions. Must be `true` to proceed."},"card_token":{"type":"string","maxLength":128,"description":"Token of the existing Iyzico card to charge. Either `card_token` or\n`card_number` must be provided."},"consumer_token":{"type":"string","maxLength":128,"description":"Consumer token returned by the Iyzico UCS widget."},"register_consumer_card":{"type":"boolean","description":"Whether to register the card for future use through the Iyzico consumer\ncard programme."},"card_number":{"type":"string","description":"Full card number when paying with a new card instead of an existing Iyzico\ncard token. Either `card_number` or `card_token` must be provided."},"card_holder":{"type":"string","description":"Card holder name. Defaults to \"No Name\" if omitted."},"card_month":{"type":"string","description":"Card expiry month (2-digit, e.g. \"06\")."},"card_year":{"type":"string","minLength":4,"maxLength":4,"description":"Card expiry year (4-digit, e.g. \"2028\")."},"card_cvv":{"type":"string","description":"Card CVV/CVC security code."},"card_name":{"type":"string","nullable":true,"description":"Optional card nickname or programme name."}}},"PayURoSavedCardConfirmationInput":{"type":"object","description":"PayU RO gateway input for saved card payment confirmation. Extends the standard\nagreement with optional browser device fingerprint fields used during\n3D Secure authentication. `browser_header` and `browser_user_agent` are\npopulated automatically from request headers and must not be submitted by the\nclient. For all other gateways, use `SavedCardConfirmationInput` instead.","required":["agreement"],"properties":{"agreement":{"type":"boolean","enum":[true],"description":"Acceptance of the terms and conditions. Must be `true` to proceed."},"browser_java_enabled":{"type":"boolean","nullable":true,"description":"Whether Java is enabled in the browser. Used for 3D Secure device\nfingerprinting."},"browser_language":{"type":"string","nullable":true,"description":"Browser language code (e.g. \"en-US\"). Used for 3D Secure device\nfingerprinting."},"browser_color_depth":{"type":"string","nullable":true,"description":"Browser screen colour depth. Used for 3D Secure device fingerprinting."},"browser_screen_height":{"type":"string","nullable":true,"description":"Browser screen height in pixels. Used for 3D Secure device fingerprinting."},"browser_screen_width":{"type":"string","nullable":true,"description":"Browser screen width in pixels. Used for 3D Secure device fingerprinting."},"browser_time_zone":{"type":"string","nullable":true,"description":"Browser time zone offset. Used for 3D Secure device fingerprinting."}}},"SavedCardThreeDSecureInput":{"type":"object","description":"3D Secure callback payload posted by the bank after the customer completes\nauthentication. The required fields depend on the active payment gateway.\n\nAny GET query string parameters appended by the bank redirect are merged into\nthis payload before validation.\n\n- **Garanti Switch**: `success`, `approved`, `returnCode`, `reasonCode`,\n  `hashedData`, `requestId`, `message`, and `txnAmount` are required. `txnAmount`\n  is sent by the bank in cents and divided by 100 before being validated against\n  the order total. The full payload is verified against a gateway-generated hash.\n- **PayU RO**: `success` (must be `true`). An optional `body` JSON payload from\n  the bank may also be submitted.\n- **Tap**: `success` (must be `true`), `tap_id`, `oid`, and `price` are required.","properties":{"success":{"type":"boolean","enum":[true],"description":"Payment success flag returned by the gateway. Must be `true`; any other\nvalue is treated as a failed transaction."},"approved":{"type":"boolean","enum":[true],"description":"(Garanti Switch only) Authorisation approval flag. Must be `true`."},"returnCode":{"type":"string","enum":["00"],"description":"(Garanti Switch only) Bank return code. Must be `\"00\"` for a successful\ntransaction."},"reasonCode":{"type":"string","enum":["00"],"description":"(Garanti Switch only) Bank reason code. Must be `\"00\"` for a successful\ntransaction."},"hashedData":{"type":"string","description":"(Garanti Switch only) Gateway-generated hash. Validated server-side before\nthe payment is accepted."},"requestId":{"type":"string","description":"(Garanti Switch only) Gateway request identifier."},"message":{"type":"string","description":"(Garanti Switch only) Human-readable status message from the gateway."},"txnAmount":{"type":"string","format":"decimal","description":"(Garanti Switch only) Transaction amount posted by the bank in cents\n(e.g. `\"15000\"` for 150.00). Divided by 100 before being validated against\nthe order total. A mismatch returns a validation error."},"body":{"type":"object","nullable":true,"description":"(PayU RO only) Optional JSON payload posted by the bank alongside the\n3D Secure callback."},"tap_id":{"type":"string","maxLength":256,"description":"(Tap only) Tap charge identifier returned by the gateway."},"oid":{"type":"string","maxLength":256,"description":"(Tap only) Order identifier echoed back by the Tap gateway."},"price":{"type":"string","description":"(Tap only) Transaction amount returned by the Tap gateway."}}},"PayLaterCompleteInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","enum":[true],"description":"Acceptance of the terms and conditions. Must be `true` to place the\npay-later order."}}},"WalletSelectionInput":{"type":"object","description":"Input for `WalletSelectionPage` for all wallet methods except Apple Pay.\nOnly the terms-and-conditions agreement is required. For Apple Pay use\n`ApplePaySelectionInput` instead.","required":["agreement"],"properties":{"agreement":{"type":"boolean","enum":[true],"description":"Acceptance of the terms and conditions. Must be `true` to proceed."}}},"ApplePaySelectionInput":{"type":"object","description":"Input for `WalletSelectionPage` when the active wallet method is Apple Pay.\nIn addition to the agreement, the `validationURL` returned by the browser\nPayment Request API must be provided so the server can perform merchant\nvalidation with Apple's servers.","required":["agreement","validationURL"],"properties":{"agreement":{"type":"boolean","enum":[true],"description":"Acceptance of the terms and conditions. Must be `true` to proceed."},"validationURL":{"type":"string","maxLength":4096,"description":"Merchant validation URL returned by the browser `ApplePaySession.onvalidatemerchant`\nevent. The server uses this URL to call Apple's merchant validation endpoint and\nobtain a merchant session object."}}},"ApplePayPaymentInput":{"type":"object","description":"Input for `WalletPaymentPage` when the active wallet method is Apple Pay.\n`payment_token` must be the JSON object returned by the browser\n`ApplePaySession.onpaymentauthorized` event.","required":["payment_token"],"properties":{"payment_token":{"type":"object","description":"Payment token object from the Apple Pay `onpaymentauthorized` event. Contains\n`data` (encrypted payment data), `header` (encryption metadata), `signature`,\nand `version`.","properties":{"data":{"type":"string","description":"Base64-encoded encrypted payment data."},"header":{"type":"object","description":"Encryption metadata for the payment token.","properties":{"applicationData":{"type":"string","nullable":true},"ephemeralPublicKey":{"type":"string","nullable":true},"wrappedKey":{"type":"string","nullable":true},"publicKeyHash":{"type":"string","nullable":true},"transactionId":{"type":"string","nullable":true}}},"signature":{"type":"string","description":"PKCS"},"version":{"type":"string","description":"Encryption protocol version (e.g. `\"EC_v1\"`)."}}},"device_info":{"type":"object","nullable":true,"description":"Optional device information for fraud detection.","properties":{"session_id":{"type":"string","nullable":true},"device_type":{"type":"string","nullable":true}}},"merchant_defined_info":{"type":"array","nullable":true,"description":"Optional merchant-defined key/value pairs.","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"merchant_defined_secure_info":{"type":"object","nullable":true,"description":"Optional secure merchant-defined data fields.","properties":{"secure1":{"type":"string"},"secure2":{"type":"string"},"secure3":{"type":"string"},"secure4":{"type":"string"}}}}},"GooglePayPaymentInput":{"type":"object","description":"Input for `WalletPaymentPage` when the active wallet method is Google Pay.\n`payment_token` must be the JSON object from the Google Pay\n`PaymentData.paymentMethodData.tokenizationData.token` field.","required":["payment_token"],"properties":{"payment_token":{"type":"object","description":"Payment token object returned by the Google Pay API. Typically contains\n`signature`, `protocolVersion`, and `signedMessage`."}}},"CybersourceUCPaymentInput":{"type":"object","description":"Input for `WalletPaymentPage` when the active wallet method is Cybersource UC.\n`payment_token` is required. Browser fingerprint fields are optional and used\nfor 3-D Secure device profiling. `browser_header` and `browser_user_agent` are\npopulated automatically from request headers and must not be submitted by the client.","required":["payment_token"],"properties":{"payment_token":{"type":"string","description":"Payment token string returned by the Cybersource UC hosted widget."},"browser_java_enabled":{"type":"boolean","nullable":true,"description":"Whether Java is enabled in the browser. Used for 3D Secure device fingerprinting."},"browser_language":{"type":"string","nullable":true,"description":"Browser language code (e.g. \"en-US\"). Used for 3D Secure device fingerprinting."},"browser_color_depth":{"type":"string","nullable":true,"description":"Browser screen colour depth. Used for 3D Secure device fingerprinting."},"browser_screen_height":{"type":"string","nullable":true,"description":"Browser screen height in pixels. Used for 3D Secure device fingerprinting."},"browser_screen_width":{"type":"string","nullable":true,"description":"Browser screen width in pixels. Used for 3D Secure device fingerprinting."},"browser_time_zone":{"type":"string","nullable":true,"description":"Browser time zone offset. Used for 3D Secure device fingerprinting."}}},"WalletCompleteInput":{"type":"object","description":"Input for `WalletCompletePage`. Required only when the active payment gateway\nis `checkout_flow` (Checkout.com); for all other wallet gateways the page\naccepts an empty submission.","properties":{"success":{"type":"boolean","enum":[true],"description":"Must be `true` for checkout.com gateway. Indicates the payment was authorised\non the provider side."},"oid":{"type":"string","maxLength":64,"description":"Checkout.com payment identifier. Required for the `checkout_flow` gateway."},"cko_payment_id":{"type":"string","description":"Optional Checkout.com payment reference returned by the provider."}}},"WalletRedirectCompleteInput":{"type":"object","description":"Input for `WalletRedirectCompletePage`. The `success` flag is required and\nis supplied by the payment provider as a query parameter in the callback URL.\nA value of `true` finalises the order; `false` rolls the flow back to\n`WalletPaymentPage`.","required":["success"],"properties":{"success":{"type":"boolean","description":"`true` if the payment provider reports a successful transaction;\n`false` if it reports a failure."}}},"B2BInput":{"type":"object","description":"Input for `B2BPage`. Accepts the terms and conditions agreement to finalise\nthe B2B (Business-to-Business) order.","required":["agreement"],"properties":{"agreement":{"type":"boolean","enum":[true],"description":"Acceptance of the terms and conditions. Must be `true` to place the B2B order."}}},"CheckoutResponse":{"type":"object","properties":{"context_list":{"type":"array","items":{"$ref":"#/components/schemas/PageContext"}},"pre_order":{"$ref":"#/components/schemas/PreOrder"},"errors":{"oneOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},{"type":"null"},{"type":"array","items":{"type":"string"}}]},"template_name":{"type":"string"}}},"PageContext":{"type":"object","properties":{"page_name":{"type":"string","description":"Class name of the page (e.g., \"IndexPage\", \"AddressSelectionPage\")"},"page_slug":{"type":"string","description":"URL-friendly slug for the page"},"page_context":{"type":"object","description":"Page-specific context data","additionalProperties":true}}},"PreOrder":{"type":"object","description":"Pre-order state containing basket, addresses, shipping, payment information","properties":{"basket":{"$ref":"#/components/schemas/Basket"},"shipping_address":{"oneOf":[{"$ref":"#/components/schemas/Address"},{"type":"null"}]},"billing_address":{"oneOf":[{"$ref":"#/components/schemas/Address"},{"type":"null"}]},"shipping_option":{"oneOf":[{"$ref":"#/components/schemas/ShippingOptionDetail"},{"type":"null"}]},"billing_and_shipping_same":{"oneOf":[{"type":"boolean"},{"type":"null"}]},"payment_option":{"oneOf":[{"$ref":"#/components/schemas/PaymentOptionDetail"},{"type":"null"}]},"notifications":{"type":"array","items":{"type":"object"}},"shipping_amount":{"oneOf":[{"type":"string","pattern":"^\\d+\\.\\d{2}$"},{"type":"null"}]},"total_amount":{"oneOf":[{"type":"string","pattern":"^\\d+\\.\\d{2}$"},{"type":"null"}]},"unpaid_amount":{"oneOf":[{"type":"string","pattern":"^\\d+\\.\\d{2}$"},{"type":"null"}]},"loyalty_money":{"oneOf":[{"type":"string","pattern":"^\\d+\\.\\d{2}$"},{"type":"null"}]},"currency_type_label":{"type":"string"},"installment":{"oneOf":[{"$ref":"#/components/schemas/Installment"},{"type":"null"}]},"card_info":{"oneOf":[{"type":"object","description":"Card information from BIN lookup","properties":{"bin_number":{"type":"string","description":"Card BIN (first 6-8 digits)"},"card":{"type":"object","description":"Card details from BIN database","properties":{"pk":{"type":"integer"},"name":{"type":"string","description":"Card type name (e.g., \"Visa\", \"Mastercard\")"}}}}},{"type":"null"}]},"redirect_to_three_d":{"oneOf":[{"type":"boolean"},{"type":"null"}]},"delivery_option":{"oneOf":[{"$ref":"#/components/schemas/DeliveryOption"},{"type":"null"}]},"retail_store":{"oneOf":[{"$ref":"#/components/schemas/RetailStore"},{"type":"null"}]},"funds_transfer_bank":{"oneOf":[{"$ref":"#/components/schemas/BankAccount"},{"type":"null"}]},"number":{"oneOf":[{"type":"string","description":"Pre-order/order number"},{"type":"null"}]},"order":{"oneOf":[{"type":"object","description":"Created order (after checkout completion)","properties":{"pk":{"type":"integer"},"number":{"type":"string"},"status":{"type":"string"}}},{"type":"null"}]},"payment_choice":{"oneOf":[{"$ref":"#/components/schemas/PaymentChoice"},{"type":"null"}]},"user_email":{"oneOf":[{"type":"string"},{"type":"null"}]},"phone_number":{"oneOf":[{"type":"string"},{"type":"null"}]},"user_phone_number":{"oneOf":[{"type":"string"},{"type":"null"}]},"gift_box":{"oneOf":[{"type":"object","properties":{"note":{"type":"string"},"gift_video":{"type":"boolean"},"gift_video_notification_sent":{"type":"boolean"},"price":{"type":"string"}}},{"type":"null"}]},"delivery_range":{"oneOf":[{"type":"object","properties":{"lower":{"type":"string","format":"date-time"},"upper":{"type":"string","format":"date-time"}}},{"type":"null"}]},"total_amount_with_interest":{"oneOf":[{"type":"string","pattern":"^\\d+\\.\\d{2}$"},{"type":"null"}]},"is_guest":{"type":"boolean"},"is_post_order":{"type":"boolean"},"data_source_shipping_options":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/DataSourceShippingOptionDetail"}},{"type":"null"}]},"attribute_based_shipping_options":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/PreOrderAttributeBasedShippingOption"}},{"type":"null"}]}}},"Basket":{"type":"object","properties":{"pk":{"type":"integer"},"total_amount":{"type":"string","pattern":"^\\d+\\.\\d{2}$"}}},"Address":{"type":"object","properties":{"pk":{"type":"integer"},"email":{"type":"string"},"phone_number":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"country":{"$ref":"#/components/schemas/Country"},"city":{"$ref":"#/components/schemas/City"},"line":{"type":"string"},"title":{"type":"string"},"township":{"$ref":"#/components/schemas/Township"},"district":{"oneOf":[{"$ref":"#/components/schemas/District"},{"type":"null"}]},"postcode":{"type":"string"},"notes":{"type":"string"},"company_name":{"type":"string"},"tax_office":{"type":"string"},"tax_no":{"type":"string"},"e_bill_taxpayer":{"type":"boolean"},"is_corporate":{"type":"boolean"},"primary":{"type":"boolean"},"identity_number":{"type":"string"}}},"Country":{"type":"object","properties":{"pk":{"type":"integer"},"code":{"type":"string"},"name":{"type":"string"}}},"City":{"type":"object","properties":{"pk":{"type":"integer"},"name":{"type":"string"}}},"Township":{"type":"object","properties":{"pk":{"type":"integer"},"name":{"type":"string"}}},"District":{"type":"object","properties":{"pk":{"type":"integer"},"name":{"type":"string"}}},"ShippingOptionDetail":{"type":"object","description":"Detailed shipping option with calculated amount","properties":{"pk":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"},"logo":{"oneOf":[{"type":"string","format":"uri"},{"type":"null"}]},"shipping_amount":{"type":"string","pattern":"^\\d+\\.\\d{2}$"},"description":{"oneOf":[{"type":"string"},{"type":"null"}]},"kwargs":{"type":"object","additionalProperties":true}}},"PaymentOptionDetail":{"type":"object","description":"Detailed payment option with type information","properties":{"pk":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"},"payment_type":{"type":"string","enum":["credit_card","funds_transfer","bkm_express","loyalty_money","cash_register","gpay","redirection","stored_card","masterpass","masterpass_rest","credit_payment","pay_later","saved_card","confirmation","b2b","wallet","pay_on_delivery"]},"payment_type_label":{"type":"string"}}},"Installment":{"type":"object","properties":{"pk":{"type":"integer"},"installment_count":{"type":"integer"},"label":{"type":"string"},"price_with_accrued_interest":{"type":"string","pattern":"^\\d+\\.\\d{2}$"},"monthly_price_with_accrued_interest":{"type":"string","pattern":"^\\d+\\.\\d{2}$"}}},"DeliveryOption":{"type":"object","properties":{"pk":{"type":"integer"},"name":{"type":"string"},"delivery_option_type":{"type":"string","enum":["customer","retail_store","pickup_location"]},"is_active":{"type":"boolean"}}},"RetailStore":{"type":"object","properties":{"pk":{"type":"integer"},"name":{"type":"string"},"erp_code":{"type":"string"},"township":{"$ref":"#/components/schemas/Township"},"click_and_collect":{"type":"boolean"},"is_active":{"type":"boolean"}}},"BankAccount":{"type":"object","description":"Bank account for funds transfer payments","properties":{"pk":{"type":"integer"},"bank_name":{"type":"string","description":"Name of the bank"},"account_holder":{"type":"string","description":"Account holder name"},"iban":{"type":"string","description":"International Bank Account Number"},"currency":{"type":"string","description":"Currency code (e.g., \"USD\", \"EUR\", \"TRY\")"},"is_active":{"type":"boolean"}}},"PaymentChoice":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"price":{"type":"string","pattern":"^\\d+\\.\\d{2}$"}}},"DataSourceShippingOptionDetail":{"type":"object","description":"Data source shipping option for multi-vendor shipping","properties":{"pk":{"type":"integer"},"shipping_amount":{"type":"string","pattern":"^\\d+\\.\\d{2}$"},"shipping_option_name":{"type":"string"},"shipping_option_logo":{"oneOf":[{"type":"string","format":"uri"},{"type":"null"}]},"data_source":{"type":"object","properties":{"pk":{"type":"integer"},"title":{"type":"string"}}},"description":{"oneOf":[{"type":"string"},{"type":"null"}]}}},"PreOrderAttributeBasedShippingOption":{"type":"object","description":"Attribute-based shipping option selected for a product group","properties":{"pk":{"type":"integer"},"shipping_option_name":{"type":"string"},"shipping_option_logo":{"oneOf":[{"type":"string","format":"uri"},{"type":"null"}]},"shipping_amount":{"type":"string","pattern":"^\\d+\\.\\d{2}$"},"product_ids":{"type":"array","items":{"type":"integer"}},"attribute_value":{"type":"string"},"attribute_key":{"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://apidocs.akinon.com/commerce-openapis/checkout/entry-and-address/process-checkout-step.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
