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_c7T8y5Z7Fg1494HwEf2kx",
"created_at" : "2024-02-02T23:22:01.998681Z",
"updated_at" : "2024-02-02T23:22:01.998681Z",
"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" : "IDpYDM7J9n57q849o9E9yNrG",
"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,
"generate_receipt" : false,
"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
},
"link_url" : "https://finix.sandbox-payments-checkout.com/checkout_form?bearer_token=eyJraWQiOiJEaF9Qem9pODFHOW9BY196bHJHMGJTdHg1c0xEUzk1eFBFTVhpd3RCWkdrIiwidHlwIjoiSldTIiwiYWxnIjoiUlM1MTIifQ.eyJzdWIiOiJVU3NSaHNIWVpHQlBuUXc4Q0J5SnlFUVciLCJhdWQiOiIqLmhvc3RlZC1wYXltZW50cy1odHRwLmZpbml4b3BzLmNvbSIsImlzcyI6ImF1dGhlbnRpY2F0aW9uLnNiLmZpbml4b3BzLmNvbSIsImlhdCI6MTcwNjkxNjEyMiwiZXhwIjoxNzEwMzc2OTIyLCJlbnRpdHlfdHlwZSI6IkNIRUNLT1VUX0ZPUk0iLCJhZGRpdGlvbmFsX2RldGFpbHMiOnsiZXhwaXJlZF9zZXNzaW9uX3VybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vZXJyb3IuaHRtbCAiLCJzdWNjZXNzX3JldHVybl91cmwiOiJodHRwczovL3d3dy5leGFtcGxlLmNvbS9zdWNjZXNzLzEyM3J3MjF3Lmh0bWwgIiwiZXhwaXJhdGlvbl9pbl9taW51dGVzIjo1NzY4MCwiY29sbGVjdF9iaWxsaW5nX2FkZHJlc3MiOnRydWUsImdlbmVyYXRlX3JlY2VpcHQiOmZhbHNlLCJjb2xsZWN0X25hbWUiOnRydWUsImNvbGxlY3RfZW1haWwiOnRydWUsImNhcnRfcmV0dXJuX3VybCI6Imh0dHBzOi8vd3d3LmV4YW1wbGUuY29tL215X2NhcnQuaHRtbCIsImNvbGxlY3RfcGhvbmUiOmZhbHNlLCJ0ZXJtc19vZl9zZXJ2aWNlX3VybCI6Imh0dHBzOi8vZXhhbXBsZS5jb20vdGVybXNfb2Zfc2VydmljZS5odG1sICIsImNvbGxlY3Rfc2hpcHBpbmdfYWRkcmVzcyI6dHJ1ZX0sImJyYW5kaW5nIjp7ImFjY2VudF9jb2xvciI6IiNmZjQ4MzgiLCJidXR0b25fZm9udF9jb2xvciI6bnVsbCwiaWNvbiI6Imh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9jdXN0b21lci11cGxvYWRlZC1hc3NldHMtcHJvZC8wNC0xMi0yMDIzLTA1XzEzXzM3X0FDTUVfbG9nby0wMSUyMCUyODElMjkucG5nIiwibG9nbyI6Imh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9jdXN0b21lci11cGxvYWRlZC1hc3NldHMtcHJvZC8wNC0xMi0yMDIzLTA1XzEzXzM3X0FDTUVfbG9nby0wMSUyMCUyODElMjkucG5nIiwiYnJhbmRfY29sb3IiOiIjZmJlNWQwIiwibG9nb19hbHRlcm5hdGl2ZV90ZXh0IjpudWxsfSwiZW50aXR5X2lkIjoiY2hlY2tvdXRfZm9ybV9jN1Q4eTVaN0ZnMTQ5NEh3RWYya3gifQ.KIMR8aWV-7Mlt0YDyhf6i2B1ajx67y2NT36BWPqB8m4QIng5S44retQmMWRQKNKLMLTaSHEM7ifZyIWPt2tvDjf0hOKIAa5h1Btd05vsgzKNVBSClLMqPaTtLcUYYp4WwcGyvCMkjT81p0P34c5dSJ7gfbSyRU5tQjINvuE4v4fVCW2OwqmmAzv-ZC9tp70HRk4e2LGjbwIdVMIHgSorF0XJqGIaeevc_BbK6RiDblripjvXDq_1UpOjQJa1kTbZEfaG3KbVMcgawTSV2I8EHlYGxRdPVk7G9rMhsmGXuuvuhoX2p4zVmRXr_QaZwaqudeama9vlyPbynMGL2ai_xHG7uMtXU7ZAtpRMKjWxSta-5FuoM3lnlFK8iByFsPqGPUZ5Hpmu9BS6N5YqW45ZxbI1XiCTXEQr3r1MiwSXEzqoiP1HT6ReFdoSNZTJ0OTr_LP7eiDCico8CERMffealCCMdvRPEoJQlnE2C7gdjs2W6bZBH9R0L46inaMdLl1Y9d867htqCnBqqiNEi1VCfpPmJcj79hu8BQq9kwA8cSwxVWx981uM-3F9TttS8kFVQOAtZz2QmotdVr_KPngegjB-WTTPkadLU1T2Ksv0O6qk1FxD2KGMMleIQEDfavYsfW5HMRg4lOmc4i56qI8F63e7vhy2YO0VfDd7ZcgFK1o",
"link_expires_at" : "2024-03-14T00:42:01.99793Z",
"tags" : { },
"_links" : {
"self" : {
"href" : "https://finix.sandbox-payments-api.com/checkout_forms/checkout_form_c7T8y5Z7Fg1494HwEf2kx"
}
}
}
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