> This page is for Afterpay Online Developer, version Main (default).
> For other versions, use one of these documentation indexes:
> - Main (default): https://developers.afterpay.com/afterpay-online-developer/main/llms.txt
> - v1: https://developers.afterpay.com/afterpay-online-developer/v-1/llms.txt
> - Chinese: https://developers.afterpay.com/afterpay-online-developer/chinese/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.afterpay.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.afterpay.com/_mcp/server.

### Schema (`response.body`)

```yaml
openapi: 3.1.0
info:
  title: API
  version: 1.0.0
paths:
  /offer-model-test:
    get:
      operationId: subpackageModels_get-offer-model-test
      summary: Get Offer Model Test
      description: Offer schema for payment plans
      tags:
        - subpackage_models
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models_get-offer-model-test_Response_200'
tags:
  - name: subpackage_models
servers:
  - url: https://global-api-sandbox.afterpay.com
    description: Sandbox
  - url: https://global-api.afterpay.com
    description: Production
components:
  schemas:
    OfferType:
      type: string
      enum:
        - PAY_IN_4
      description: Type of the offer
      title: OfferType
    MoneyCurrency:
      type: string
      enum:
        - AUD
        - NZD
        - USD
        - CAD
        - GBP
      description: >-
        The currency in ISO 4217 format. The value provided must correspond to
        the currency of the merchant account making the request.
      title: MoneyCurrency
    Money:
      type: object
      properties:
        amount:
          type: string
          description: >-
            The amount as a string representation of a decimal number, rounded
            to 2 decimal places.
        currency:
          $ref: '#/components/schemas/MoneyCurrency'
          description: >-
            The currency in ISO 4217 format. The value provided must correspond
            to the currency of the merchant account making the request.
      required:
        - amount
        - currency
      description: "Object containing amount and currency.\n\nWhere a Money object is included in an API request, it will be validated according to the specification above. Invalid Money objects will trigger a **422 Unprocessable Entity response**. The following is a list of common examples:\n\n|Example|\terrorCode|\tmessage|\n|---|---|---|\n|`amount` is omitted or null\t|invalid_object\t|{Money object}.amount Amount field required|\n|`amount` has more than 2 decimal places\t| invalid_object\tamount| must be a valid ISO 4217 format value|\n|`amount` includes a thousands separator comma, for example: \"1,000\"\t|invalid_amount\t|Amount must be a valid ISO 4217 format value|\n|`amount` is not a decimal number, for example: \"FREE\", \"$2\" or an empty string\t|invalid_object|\t{Money object}.amount Amount field must be a valid ISO 4217 format value|\n|`currency` is omitted or null\t|invalid_object|\t{Money object}.currency Currency field required|\n|`currency` is not a valid currency code, not all uppercase or an empty string\t|invalid_object|\t{Money object}.currency Currency not supported for this merchant|\n|`currency` is supported by Afterpay, but not valid for the Merchant account\t|unsupported_currency\t|An error occurred|"
      title: Money
    PaymentSchedule:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/Money'
          description: Amount for this payment installment
        dueDate:
          type: string
          format: date
          description: Due date for this installment
      required:
        - amount
        - dueDate
      description: Represents a scheduled payment installment
      title: PaymentSchedule
    ConsumerOffersNoPaymentUpfront:
      type: object
      properties:
        eligible:
          type: boolean
          description: Indicates if the consumer is eligible for no payment upfront
        eligibilityLimit:
          $ref: '#/components/schemas/Money'
          description: The maximum amount eligible for no payment upfront
      required:
        - eligible
        - eligibilityLimit
      description: Information about the no payment upfront feature eligibility
      title: ConsumerOffersNoPaymentUpfront
    ConsumerOffers:
      type: object
      properties:
        noPaymentUpfront:
          $ref: '#/components/schemas/ConsumerOffersNoPaymentUpfront'
          description: Information about the no payment upfront feature eligibility
      description: Consumer offers
      title: ConsumerOffers
    Offer:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/OfferType'
          description: Type of the offer
        merchantAmount:
          $ref: '#/components/schemas/Money'
          description: Amount for the merchant
        exchangeRate:
          type: number
          format: double
          description: Exchange rate for cross-border transactions
        amountDueToday:
          $ref: '#/components/schemas/Money'
          description: Amount due for immediate payment
        payments:
          type: array
          items:
            $ref: '#/components/schemas/PaymentSchedule'
          description: List of scheduled payments
        crossBorder:
          type: boolean
          description: Indicates if this is a cross-border transaction
        appliedPromotion:
          $ref: '#/components/schemas/Money'
          description: Amount of promotion applied
        consumer:
          $ref: '#/components/schemas/ConsumerOffers'
          description: Consumer offer details
      description: Represents an offer with payment details
      title: Offer
    Models_get-offer-model-test_Response_200:
      type: object
      properties:
        offer:
          $ref: '#/components/schemas/Offer'
      required:
        - offer
      title: Models_get-offer-model-test_Response_200

```

**`Example`**

```json Example
{
  "type": "PAY_IN_4",
  "merchantAmount": {
    "amount": "100.00",
    "currency": "AUD"
  },
  "exchangeRate": 1.35,
  "amountDueToday": {
    "amount": "100.00",
    "currency": "AUD"
  },
  "payments": [
    {
      "amount": {
        "amount": "50.00",
        "currency": "USD"
      },
      "dueDate": "2024-03-04"
    },
    {
      "amount": {
        "amount": "50.00",
        "currency": "USD"
      },
      "dueDate": "2024-03-18"
    },
    {
      "amount": {
        "amount": "50.00",
        "currency": "USD"
      },
      "dueDate": "2024-04-01"
    },
    {
      "amount": {
        "amount": "50.00",
        "currency": "USD"
      },
      "dueDate": "2024-04-15"
    }
  ],
  "crossBorder": false,
  "appliedPromotion": {
    "amount": "100.00",
    "currency": "AUD"
  },
  "consumer": {
    "noPaymentUpfront": {
      "eligible": true,
      "eligibilityLimit": {}
    }
  }
}
```