# Checkout Pages

![Checkout Pages](/assets/checkout-page.b7cbd6b27e3a5eec96fc21e705150b0e4599adb9b81157df454a3845262ef1e2.fec90461.svg)

Using Checkout Pages you can quickly accept payments from buyers with minimal development work. Checkout pages are a low-code solution that enables you to create a customizable payment page where buyers can easily enter their payment details and submit a payment on both desktop and mobile devices.

Checkout pages are only available via the Finix API. If you want to create a similar experience on the Dashboard, look into our [Payment Links](/low-code-no-code/payment-links).

Level 2 / Level 3 processing is supported for Checkout Forms. For more information, see our guide on [Level 2 / Level 3 Processing](/guides/online-payments/payment-features/level-2-level-3-processing#create-a-checkout-form-with-level-2level-3-processing).

## Buyer Experience

1. When your buyers are ready to complete their payment, create a `checkout_form`.
2. The `checkout_form` provides a URL you can send to buyers to redirect them to a Finix checkout form.
3. Buyers enter their payment details into the checkout form and complete their payment.


![Checkout Form](/assets/checkout-form.4796031cb3a92fb2abd5624a2d33e3d329de7c0db009663ce038598fad762b75.08ff7529.png)

## Supported Payment Methods

Checkout pages support:

- Card payments
- Bank account payments (ACH in USA, EFT in Canada)
  - For more details about ACH payments, see [ACH Direct Debits](/guides/online-payments/bank-payments/ach-direct-debits).
- Apple Pay
- Google Pay


## Checkout Form Expiration

By default, `checkout_forms` expire after 10 minutes. You can extend the expiration date to a maximum of 3 weeks.
Please note the expiration time of the `checkout_form` must be less than your cart expiration time; otherwise, timeout issues can come up for your buyers when submitting a payment.

`checkout_forms` can only be used once. After a buyer makes a successful payment, the `checkout_form` cannot be used again. If a buyer returns to a successful `checkout_form` link, they'll see a *You have already paid* message and/or get redirected to a new page.

## Finix API

To create a checkout form, include:

- The `ID` of the `Merchant` that the payment will be created under.
- The amount of the transaction.
- Any additional URLs ([terms of service](/low-code-no-code/pre-built-checkout-page/checkout-pages#terms-of-service) required).
- Allowed payment methods.


At this time, only `APPROVED` `Merchants` with one of the following `processors` can create checkout pages:

- `DUMMY_V1`
- `LITLE_V1`
- `FINIX_V1`



```shell Checkout Form Request
curl https://finix.sandbox-payments-api.com/checkout_forms \
    -H "Content-Type: application/json" \
    -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
    -X POST \
    -d '{
        "merchant_id": "MUucec6fHeaWo3VHYoSkUySM",
        "payment_frequency": "ONE_TIME",
        "allowed_payment_methods": ["PAYMENT_CARD"],
        "nickname": "string",
        "items": [
            {
                "image_details": {
                    "primary_image_url": "https://images.unsplash.com/photo-1511499767150-a48a237f0083?q=80&w=2980&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
                    "alternative_image_urls": [
                        "https://google.com/image1",
                        "https://google.com/image2"
                    ]
                },
                "description": "These are cool sunglasses",
                "price_details": {
                    "sale_amount": 4000,
                    "currency": "USD",
                    "price_type": "PROMOTIONAL",
                    "regular_amount": 5000
                },
                "quantity": "1"
            }
        ],
        "buyer_details": {
            "first_name": "Oscar",
            "last_name": "Barillas",
            "email": null,
            "shipping_address": null,
            "billing_address": null,
            "phone_number": null
        },
        "amount_details": {
            "amount_type": "FIXED",
            "total_amount": 5418,
            "currency": "USD",
            "min_amount": null,
            "max_amount": null,
            "amount_breakdown": {
                "subtotal_amount": 3994,
                "shipping_amount": 995,
                "estimated_tax_amount": 429,
                "discount_amount": "1000",
                "tip_amount": "1000"
            }
        },
        "branding": {
            "brand_color": "#fbe5d0",
            "accent_color": "#ff4838",
            "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/04-12-2023-05_13_37_ACME_logo-01%20%281%29.png",
            "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/04-12-2023-05_13_37_ACME_logo-01%20%281%29.png"
        },
        "additional_details": {
            "collect_name": true,
            "collect_email": true,
            "collect_phone_number": true,
            "collect_billing_address": true,
            "collect_shipping_address": true,
            "success_return_url": "https://www.example.com/success/123rw21w.html ",
            "cart_return_url": "https://www.example.com/my_cart.html",
            "expired_session_url": "https://example.com/error.html ",
            "terms_of_service_url": "https://example.com/terms_of_service.html ",
            "expiration_in_minutes": 57680
        }
    }'
```


```json Checkout Form
{
    "id": "checkout_form_cgiWUmK32ssj1nsuqQsVK",
    "created_at": "2024-10-18T03:52:54.321458Z",
    "updated_at": "2024-10-18T03:52:54.321458Z",
    "merchant_id": "MUucec6fHeaWo3VHYoSkUySM",
    "application_id": "APgPDQrLD52TYvqazjHJJchM",
    "payment_frequency": "ONE_TIME",
    "allowed_payment_methods": ["PAYMENT_CARD"],
    "nickname": "string",
    "state": "ACTIVE",
    "items": [
        {
            "image_details": {
                "primary_image_url": "https://images.unsplash.com/photo-1511499767150-a48a237f0083?q=80&w=2980&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
                "alternative_image_urls": [
                    "https://google.com/image1",
                    "https://google.com/image2"
                ]
            },
            "description": "These are cool sunglasses",
            "price_details": {
                "sale_amount": 4000,
                "currency": "USD",
                "price_type": "PROMOTIONAL",
                "regular_amount": 5000
            },
            "name": null,
            "quantity": 1
        }
    ],
    "buyer_details": {
        "identity_id": null,
        "first_name": "Oscar",
        "last_name": "Barillas",
        "email": null,
        "phone": null,
        "billing_address": null,
        "shipping_address": null
    },
    "amount_details": {
        "amount_type": "FIXED",
        "total_amount": 5418,
        "currency": "USD",
        "min_amount": null,
        "max_amount": null,
        "amount_breakdown": {
            "subtotal_amount": 3994,
            "shipping_amount": 995,
            "estimated_tax_amount": 429,
            "discount_amount": 1000,
            "tip_amount": 1000
        }
    },
    "branding": {
        "brand_color": "#fbe5d0",
        "accent_color": "#ff4838",
        "logo": "https://s3.amazonaws.com/customer-uploaded-assets-prod/04-12-2023-05_13_37_ACME_logo-01%20%281%29.png",
        "icon": "https://s3.amazonaws.com/customer-uploaded-assets-prod/04-12-2023-05_13_37_ACME_logo-01%20%281%29.png",
        "logo_alternative_text": null,
        "button_font_color": null
    },
    "additional_details": {
        "collect_name": true,
        "collect_email": true,
        "collect_phone": false,
        "collect_billing_address": true,
        "collect_shipping_address": true,
        "success_return_url": "https://www.example.com/success/123rw21w.html ",
        "cart_return_url": "https://www.example.com/my_cart.html",
        "expired_session_url": "https://example.com/error.html ",
        "terms_of_service_url": "https://example.com/terms_of_service.html ",
        "expiration_in_minutes": 57680,
        "send_receipt": false,
        "receipt_requested_delivery_methods": []
    },
    "link_url": "https://link.sandbox-payments-checkout.com/fLnady",
    "link_expires_at": "2024-11-27T05:12:54.177946Z",
    "tags": {},
    "_links": {
        "self": {
            "href": "https://finix.sandbox-payments-api.com/checkout_forms/checkout_form_cgiWUmK32ssj1nsuqQsVK"
        }
    }
}
```

## Form Submissions

When a user successfully submits a `Checkout_Form`, the `state` of the form updates to `COMPLETED`.

If a form is submitted unsuccessfully, the user returns to the checkout form to resubmit their payment details. The form's `state` remains `ACTIVE` until it expires or is deactivated.

A `Transfer Attempt` resource is created that links the `Checkout_Form` to the created `Transfer`. You will receive a [Transfer Attempt - Created](/additional-resources/developers/webhooks/webhook-events#transfer-attempt-created) webhook if you are subscribed.

If you use tags to track important information, listen to the [Transfer Attempt - Created](/additional-resources/developers/webhooks/webhook-events#transfer-attempt-created) and [Transfer Attempt - Updated](/additional-resources/developers/webhooks/webhook-events#transfer-attempt-updated) webhooks to get the `Checkout_Form` ID, query the `Checkout_Form` for tags, and apply them to the resulting `Transfer`. See [Handling Tags Between Forms/Links and Transfers](/low-code-no-code/manage-low-code-no-code/transfer-attempts#handling-tags-between-formslinks-and-transfers) for more information.

## Terms of Service

You must include a URL to your terms of service when creating a `checkout_form`.

You must include your terms and services with every `checkout_form` you create. Your terms and conditions should contain the following information:

### General Terms

- A description of the product or service that you are selling or offering.
- Any third parties involved in the product you are selling or offering.
- Reference to which governing law applies to you and your buyers.


### Privacy Policy

- Any data you are storing.
- Any data you are sharing with third parties.
- Your cookie policy.


### Shipping and Delivery Information

- Expected delivery and shipping timelines
- Any restrictions to where you can ship or deliver your goods or services


### Refunds and Cancellations

- Your general refund policies (e.g., 10 days, 30 days, no refunds allowed).
- Directions on submitting a refund request or canceling a subscription.


### Contact Information

You should include general contact information such as:

- Business name
- Doing Business as
- Support Email address
- Support Phone number