> 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/models.md).

# Models

## The Address object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The AddressSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The AkifastAddressField object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The AkifastAddressSelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The AkifastAddressSubField object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The AkifastAgreementListPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}},"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."}}},"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."}}}}}}
```

## The AkifastCardInfo object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The AkifastNotificationTransaction object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The AkifastOrderNotificationPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}},"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."}}},"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."}}}}}}
```

## The AkifastShippingOptionSelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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\"`)."}}}}}}
```

## The AkifastUserField object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The ApplePayPaymentInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}}}
```

## The ApplePaySelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The AttributeBasedShippingOptionSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The B2BInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The BankAccount object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The Basket object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"Basket":{"type":"object","properties":{"pk":{"type":"integer"},"total_amount":{"type":"string","pattern":"^\\d+\\.\\d{2}$"}}}}}}
```

## The BexBinNumberInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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}$"}}}}}}
```

## The BexInstallmentSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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`."}}}}}}
```

## The BexNonceInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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}}}}}}
```

## The BexSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"BexSelectionInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept terms and conditions to proceed.\nMust be true.","enum":[true]}}}}}}
```

## The BinNumberInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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}$"}}}}}}
```

## The CampaignListPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The CampaignSelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The CashRegisterCompleteInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"CashRegisterCompleteInput":{"type":"object","description":"No request body fields are required for this submission.\nThe system validates internally that a successful cash register transaction\nexists for the current pre-order.","properties":{}}}}}
```

## The CashRegisterInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"CashRegisterInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept terms and conditions to proceed.\nMust be true. Basket amount must be greater than zero.","enum":[true]}}}}}}
```

## The CashRegisterInstallmentSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"CashRegisterInstallmentSelectionInput":{"type":"object","properties":{"installment":{"type":"integer","description":"Primary key of the selected installment option.\nMust reference an active installment record.\nMutually exclusive with `no_installment` — exactly one must be provided."},"no_installment":{"type":"boolean","description":"Explicit confirmation to proceed without installment.\nMust be true when provided.\nMutually exclusive with `installment` — exactly one must be provided.","enum":[true]}}}}}}
```

## The CheckoutProviderSelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The CheckoutResponse object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}]}}}}}}
```

## The City object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"City":{"type":"object","properties":{"pk":{"type":"integer"},"name":{"type":"string"}}}}}}
```

## The ConfirmationPaymentAgreementConfirmPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The ConfirmationPaymentQueryPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The ConfirmationPaymentSelectedPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The Country object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"Country":{"type":"object","properties":{"pk":{"type":"integer"},"code":{"type":"string"},"name":{"type":"string"}}}}}}
```

## The CouponSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"]}}}}}}
```

## The CreditCardConfirmationInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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)"}}}}}}
```

## The CreditCardThreeDSecureInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The CreditPaymentCompleteComPayInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The CreditPaymentCompleteDefaultInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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]}}}}}}
```

## The CreditPaymentCompleteFibaInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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]}}}}}}
```

## The CreditPaymentCompleteGarantiInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The CreditPaymentCompletePageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The CreditPaymentCompleteZipInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The CreditPaymentConfirmationPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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]}}}}}}
```

## The CreditPaymentSelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The CybersourceUCPaymentInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The DataSourceShippingOptionDetail object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}]}}}}}}
```

## The DataSourceShippingOptionSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The DeliveryBagsPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The DeliveryOption object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The DeliveryOptionSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The District object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"District":{"type":"object","properties":{"pk":{"type":"integer"},"name":{"type":"string"}}}}}}
```

## The FundsTransferChoiceInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The FundsTransferInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"FundsTransferInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept terms and conditions to proceed.\nMust be true.","enum":[true]}}}}}}
```

## The GPayCompletePageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"GPayCompletePageInput":{"type":"object","description":"Callback payload posted by the Garanti Pay gateway after the customer\ncompletes the payment on the provider's hosted form.\nAll three fields are required. `gpay` and `success` must both be `true`\nfor the payment to be accepted. `gpinstallment` carries the instalment\ncount selected by the customer on the Garanti Pay form and is resolved\nagainst the active instalment options for the pre-order's card.\nThe full payload (including any additional fields returned by the gateway)\nis also verified against a gateway-specific HMAC hash. Payloads that fail\nhash verification are rejected regardless of the `gpay` and `success`\nvalues.","required":["gpay","success","gpinstallment"],"properties":{"gpay":{"type":"boolean","enum":[true],"description":"Garanti Pay authorisation flag returned by the gateway. Must be `true`; any other value is treated as a failed transaction."},"success":{"type":"boolean","enum":[true],"description":"Payment success flag returned by the gateway. Must be `true`; any other value is treated as a failed transaction."},"gpinstallment":{"type":"string","description":"Instalment count selected by the customer on the Garanti Pay hosted form (e.g. `\"1\"` for a single payment, `\"3\"` for three instalments). The value is resolved against the active instalment records for the pre-order's card. If no matching active instalment is found the resolved instalment on the pre-order is set to `null`."}}}}}}
```

## The GPayRedirectPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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":{}}}}}
```

## The GPaySelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"GPaySelectionPageInput":{"type":"object","description":"Confirmation payload for the GPay selection step. The request body must be\nsubmitted **empty** — any fields present will cause the request to be\nrejected with a validation error.\nThis design reflects the nature of the step: the customer simply confirms\ntheir GPay selection, and no additional data entry is required. The system\nresolves the card type and order number automatically upon submission.","maxProperties":0}}}}
```

## The GiftBoxInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The GiftCardApplyInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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`."}}}}}}
```

## The GiftCardInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The GiftCardOtpInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The GiftCardPaymentInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The GiftCardRemoveInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The GiftCardUpdateAmountInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The GooglePayPaymentInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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`."}}}}}}
```

## The IndexPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"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."}}}}}}
```

## The Installment object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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}$"}}}}}}
```

## The InstallmentSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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)."}}}}}}
```

## The IyzicoSavedCardConfirmationInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The IyzicoSavedCardSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The LoyaltyCardPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The LoyaltyMoneyPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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]}}}}}}
```

## The LoyaltyMoneyUsagePageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MasterpassBinNumberInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MasterpassCompleteInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MasterpassInstallmentSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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`."}}}}}}
```

## The MasterpassOrderNoPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}
```

## The MasterpassRemoteInstallmentInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MasterpassRestBinNumberInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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\"]`."}}}}}}
```

## The MasterpassRestCompleteInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MasterpassRestInstallmentSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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`."}}}}}}
```

## The MasterpassRestOrderNoInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MasterpassRestRewardListInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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(...)`."}}}}}}
```

## The MobilExpressCardFoundOtpRequiredOtpInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MobilExpressCardFoundOtpRequiredPhoneInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MobilExpressCardSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MobilExpressInstallmentSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MobilExpressPaymentCompleteCvvAndOtpInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MobilExpressPaymentCompleteCvvInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MobilExpressPaymentCompleteOtpInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"MobilExpressPaymentCompleteOtpInput":{"type":"object","required":["otp"],"properties":{"otp":{"type":"string","minLength":4,"maxLength":8,"description":"OTP code for payment completion. Between 4 and 8 characters."}}}}}}
```

## The MobilExpressPaymentThreeDInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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`."}}}}}}
```

## The MobilExpressSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The MobilExpressTryPaymentInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"MobilExpressTryPaymentInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept the terms and conditions to proceed. Must be `true`.","enum":[true]}}}}}}
```

## The OrderNotePageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The OrderSelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The PageContext object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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}}}}}}
```

## The PayLaterCompleteInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The PayOnDeliveryInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"PayOnDeliveryInput":{"type":"object","required":["agreement"],"properties":{"agreement":{"type":"boolean","description":"User must accept terms and conditions to proceed.\nMust be true.","enum":[true]}}}}}}
```

## The PayOnDeliveryPaymentChoiceInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The PayURoSavedCardConfirmationInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The PaymentChoice object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"PaymentChoice":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"price":{"type":"string","pattern":"^\\d+\\.\\d{2}$"}}}}}}
```

## The PaymentOptionDetail object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The PaymentOptionSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The PickupLocationSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The PreOrder object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}]}}}}}}
```

## The PreOrderAttributeBasedShippingOption object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}]}}}}}}
```

## The RedirectionCompleteComPayInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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}}}}}}
```

## The RedirectionCompleteExtensionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionCompleteFastPayInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The RedirectionCompleteGenericInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionCompleteIyzicoInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionCompleteMaximumPayInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionCompleteMobilExpressHostedInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionCompletePayUPolandInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionCompletePaypalInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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)."}}}}}}
```

## The RedirectionCompletePayuRoByClickInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionCompleteStripeInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionCompleteTapInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionCompleteTeqPayInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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`)."}}}}}}
```

## The RedirectionCompleteYKBWorldPayInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionPageCompletePageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RedirectionPaymentSelectedInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"RedirectionPaymentSelectedInput":{"type":"object","description":"Submission payload for initiating a redirection-based payment. Accepting the\nterms and conditions is mandatory. Browser metadata fields are optional and\nare forwarded to the payment gateway strategy to support installment\npre-selection and device fingerprinting at the provider level.","required":["agreement"],"properties":{"agreement":{"type":"boolean","enum":[true],"description":"Customer's acceptance of the terms and conditions. Must be `true`; any other value prevents the redirect from being initiated."},"browser_installments":{"type":["string","null"],"maxLength":64,"description":"Colon-separated list of installment counts supported by the customer's browser environment (e.g., `\"1:3:6:9:12\"`). Each value must be an integer between 0 and 120 inclusive. Forwarded to the payment gateway to pre-select compatible installment options on the provider's hosted page."},"browser_client_type":{"type":["string","null"],"maxLength":64,"description":"Identifier for the type of client or browser environment initiating the payment (e.g., `\"web\"`, `\"mobile\"`). Forwarded to the payment gateway strategy for device-aware routing or display decisions."}}}}}}
```

## The RemoteShippingOptionSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The ReservationSelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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`."}}}}}}
```

## The RetailStore object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}},"Township":{"type":"object","properties":{"pk":{"type":"integer"},"name":{"type":"string"}}}}}}
```

## The RetailStoreSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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"}}}}}}
```

## The RewardListPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The RewardSelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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)."}}}}}
```

## The SampleProductPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The SavedCardConfirmationInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The SavedCardInstallmentSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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`."}}}}}}
```

## The SavedCardSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The SavedCardThreeDSecureInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The SendBarcodeSmsInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"SendBarcodeSmsInput":{"type":"object","required":["phone_number"],"properties":{"phone_number":{"type":"string","description":"Recipient phone number for the barcode SMS.\nValidated against the configured phone number format."}}}}}}
```

## The SendCheckoutUrlSmsInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"SendCheckoutUrlSmsInput":{"type":"object","required":["phone_number"],"properties":{"phone_number":{"type":"string","description":"Recipient phone number for the checkout URL SMS.\nValidated against the configured phone number format."}}}}}}
```

## The SendSmsInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The ShippingOptionDetail object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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}}}}}}
```

## The ShippingOptionSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}
```

## The SlotSelectionPageInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The Township object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"Township":{"type":"object","properties":{"pk":{"type":"integer"},"name":{"type":"string"}}}}}}
```

## The VerifySmsInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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}$"}}}}}}
```

## The VoucherCodeInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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}}}}}}
```

## The WalletCompleteInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The WalletRedirectCompleteInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```

## The WalletSelectionInput object

```json
{"openapi":"3.1.0","info":{"title":"Overview","version":"1.0.0"},"components":{"schemas":{"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."}}}}}}
```


---

# 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/models.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.
