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.
Buyer Perspective
-
When your buyers are ready to complete their payment, create a
checkout_form
-
The
checkout_form
provides a URL you can send to buyers to redirect them to a Finix checkout form. - Buyers enter their payment details into the checkout form and complete their payment.
Supported Payment Methods
Checkout pages support:
- Card payments
- Bank account payments (ACH in USA)
For more details about ACH payments, see ACH Direct Debit.
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 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
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",
"is_multiple_use": false,
"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
}
}'
Example Response
{
"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"
}
}
}
HTTP Request
POST https://finix.sandbox-payments-api.com/checkout_forms
Request Arguments
Field | Type | Description |
---|---|---|
merchant_id |
string, required | The ID of the Merchant the payment is getting created under. Only approved Merchants with one of the following processors can create checkout pages: DUMMY_V1, LITLE_V1 or FINIX_V1. |
payment_frequency |
string, required | Details if a payment created from a checkout form is:
|
is_multiple_use |
boolean, optional | If set to True, the checkout form can be used for multiple payments. |
allowed_payment_methods |
array, required | Payment methods allowed on the checkout form. |
nickname |
string, required | Descriptor name of the checkout form. |
items |
object, required | Details the items or services used in the payment form. |
tags |
object, optional | Key value pair for annotating custom metadata (e.g. order numbers). |
buyer |
object, optional | Object containing details about the buyer. This object is only used for SINGLE_USE checkout pages. |
amount_details |
object, optional | Object containing details about the amount getting charged by the checkout form. |
branding_details |
object, optional | Object containing branding details for the checkout form. |
additional_details |
object, optional | Object containing additional details about the checkout form. |
Request Arguments - items array
Field | Type | Description |
---|---|---|
item.description |
string, optional | Description for the item. |
item.image_details |
object, optional | Additional details about the item image. |
item.price_details |
object, optional | Additional details about the price. |
Request Arguments - items.image_details
Field | Type | Description |
---|---|---|
item.image_details.primary_image_url |
string, optional | Primary image URL for the item. |
item.image_details.alternative_image_urls |
array, optional | Secondary images URLs for the item. |
Request Arguments - items.price_details
Field | Type | Description |
---|---|---|
item.price_details.current_price |
string, optional | Details the sale price of the item if different from the regular_price . |
item.price_details.currency |
string, optional | 3-letter ISO code designating the currency of the Transfers (e.g. USD). |
item.price_details.current_price_type |
string, optional | Add additional details noting if the price is discounted or on sale. |
item.price_details.regular_price |
string, optional | The standard price of the item without any adjustments applied (e.g. discounts, taxes, sales). |
item.quantity |
string, optional | Set how many units of the item are part of the transaction. |
Request Arguments - buyer_details
Field | Type | Description |
---|---|---|
identity_id |
string, optional | The Identity ID of the buyer. |
first_name |
string, optional | First name of the buyer. |
last_name |
string, optional | Last name of the buyer. |
Request Arguments - amount_details
Field | Type | Description |
---|---|---|
amount_type |
integer, optional | The Identity ID of the buyer. |
total_amount |
integer, optional | First name of the buyer. |
currency |
string, optional | 3-letter ISO code designating the currency of the Transfers (e.g. USD). |
min_amount |
integer, optional | Min amount allowed for VARIABLE amount links. |
max_amount |
integer, optional | Max amount allowed for VARIABLE amount links. |
amount_breakdown |
object, optional | Breakdown of the total_amount . |
Request Arguments - amount_breakdown
Field | Type | Description |
---|---|---|
subtotal_amount |
integer, optional | Subtotal amount before tax and other fees. |
shipping_amount |
integer, optional | Shipping amount. |
estimated_tax_amount |
integer, optional | Estimated tax amount. |
min_amount |
integer, optional | Discount amount in cents. |
tip_amount |
integer, optional | Tip amount in cents. |
Request Arguments - branding
Field | Type | Description |
---|---|---|
brand_color |
string, optional | Hex code of branding color (e.g. #F2F2F2). |
accent_color |
string, optional | Hex code of the accent color. |
logo |
string, optional | URL of the logo for the checkout form. |
icon |
string, optional | URL for the icon of the checkout form. |
Request Arguments - additional_details
Field | Type | Description |
---|---|---|
collect_name |
boolean, optional | Collect name from the checkout form. Defaults to true. |
collect_email_address |
boolean, optional | Collect email address from the checkout form. |
collect_billing_address |
boolean, optional | Collect billing address from the checkout form. Defaults to false. |
collect_shipping_address |
string, optional | Collect shipping address from the checkout form. |
success_return_url |
string, optional | URL to redirect the user to after the payment is successful. |
unsuccessful_return_url |
string, optional | URL to redirect the user to after the payment is unsuccessful. |
expired_session_url |
string, optional | URL to redirect the user to if the checkout form has expired. |
terms_of_service_url |
string, required | Terms of service URL for checkout form. |
expiration_in_minutes |
string, optional | Expiration for the checkout form in minutes. |
States
When a checkout_form
is successful, the state
of the checkout form will update to COMPLETED.
If a checkout_form
is unsuccessful, the buyer is taken back to the checkout form to try submitting payment details again. The checkout_form#state
will remain ACTIVE until the form expires or gets deactivated.
Successful Payments
When a buyer successfully submits a checkout_form
, the state
of the checkout_form
updates to COMPLETED.
Terms of Service
attention
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