# Developer Quickstart

Finix supports both Online Payments and In-Person Payments. This quickstart provides details on how your business can accept a payment with Finix.

## Online Payments

![Online Payments Hero](/assets/online-payments.c670fabaef9307e5ff2f0377a43aeebaf826b162984a2e04bb3d5b8693cd309a.fec90461.svg)

Accept online payments with Finix's complete solution, whether you're building a custom checkout experience or need a quick payment solution.

- **Flexible integrations:** Build custom payment flows with our APIs, or get started with our low-code / no-code solutions
- **Multiple payment methods:** Accept credit cards, debit cards, bank accounts, digital wallets, and more.
- **Security first:** Protect sensitive payment data with our PCI-compliant tokenization system.


To see an example of our Tokenization Forms and Hosted Checkout, you can visit our [sample store](https://finixsamplestore.com) and related [GitHub Project](https://github.com/finix-payments/accept-a-payment).

Tokenization Forms
Tokenization Form Example
br

Our Tokenization Forms allow you to build a custom checkout page you own and control. This option is great if you want maximum customizability.

### Step 1: Create an Identity for Your Buyer

With your API Key and `Merchant` ID, you can start processing payments.

To process a payment, we’ll need to create an [`Identity`](/api/identities/createidentity) that represents your buyer. You won’t need to capture the same amount of information from your buyer. So long as you don’t pass a `identity#business_type` field all the other fields are optional.

Usually, we suggest at least collecting the buyer’s name and email to help with accounting, reconciliation, and chargebacks.

Do not pass the `business_type` field when creating an `Identity` for a buyer. Including `business_type` configures our API to treat the created `Identity` as a seller.

Example
API Definition
A successful response returns the `Identity` you'll use in the next step.

Example
Identity - Buyer

```json Identity - Buyer
{
  "id": "IDgjFNYNraTBiKUyTXB4GFNe",
  "created_at": "2025-08-12T19:56:51.90Z",
  "updated_at": "2025-08-12T19:56:51.90Z",
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "entity": {
    "ach_max_transaction_amount": 0,
    "amex_mid": null,
    "annual_card_volume": 0,
    "business_address": null,
    "business_name": null,
    "business_phone": null,
    "business_tax_id_fingerprint": null,
    "business_tax_id_provided": false,
    "business_type": null,
    "default_statement_descriptor": null,
    "discover_mid": null,
    "dob": null,
    "doing_business_as": null,
    "email": "finix_example@finix.com",
    "first_name": "John",
    "has_accepted_credit_cards_previously": false,
    "incorporation_date": null,
    "last_name": "Smith",
    "max_transaction_amount": 0,
    "mcc": null,
    "ownership_type": null,
    "personal_address": {
      "line1": "741 Douglass St",
      "line2": "Apartment 7",
      "city": "San Mateo",
      "region": "CA",
      "postal_code": "94114",
      "country": "USA"
    },
    "phone": "7145677613",
    "principal_percentage_ownership": null,
    "short_business_name": null,
    "tax_authority": null,
    "tax_id_fingerprint": null,
    "tax_id_provided": false,
    "title": null,
    "url": null
  },
  "identity_roles": [
    "BUYER"
  ],
  "tags": {
    "key": "value"
  },
  "type": "PERSONAL",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgjFNYNraTBiKUyTXB4GFNe"
    },
    "verifications": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgjFNYNraTBiKUyTXB4GFNe/verifications"
    },
    "merchants": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgjFNYNraTBiKUyTXB4GFNe/merchants"
    },
    "settlements": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgjFNYNraTBiKUyTXB4GFNe/settlements"
    },
    "authorizations": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgjFNYNraTBiKUyTXB4GFNe/authorizations"
    },
    "transfers": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgjFNYNraTBiKUyTXB4GFNe/transfers"
    },
    "payment_instruments": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgjFNYNraTBiKUyTXB4GFNe/payment_instruments"
    },
    "associated_identities": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgjFNYNraTBiKUyTXB4GFNe/associated_identities"
    },
    "disputes": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgjFNYNraTBiKUyTXB4GFNe/disputes"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    }
  }
}
```

API Definition
### Step 2: Tokenize Payment Details

Now that we have an `Identity` resource representing your buyer, we’ll need to create a [`Payment Instrument`](/api/payment-instruments/createpaymentinstrument) for your buyer to represent the credit card you’ll be debiting (i.e. charging).

You’ll also need to include your buyer’s `Identity#id` from the previous request to link the `Payment Instrument` that's created with your buyer's details.

Please note that creating `Payment Instruments` and passing payment details (account number, card number, etc.) directly via the API should only be done for testing purposes. You must use the [Tokenization Forms](/guides/online-payments/payment-tokenization/tokenization-forms) or mobile tokenization (see [Android](/guides/online-payments/payment-tokenization/mobile-tokenization-android) or [iOS](/guides/online-payments/payment-tokenization/mobile-tokenization-ios) tokenization) to accept payment details and remain out of PCI scope.

Example
API Definition
A successful response returns the newly created `Payment Instrument` you'll use to process the buyer's payment.

Example
Payment Instrument - Card

```json Payment Instrument - Card
{
  "id": "PI6F5kkcCB3dtGhFy1t8Aua5",
  "created_at": "2024-11-15T09:42:33.42Z",
  "updated_at": "2024-11-15T09:42:33.42Z",
  "account_updater_enabled": false,
  "application": "APgPDQrLD52TYvqazjHJJchM",
  "created_via": "API",
  "currency": "USD",
  "disabled_code": null,
  "disabled_message": null,
  "enabled": true,
  "fingerprint": "FPRiCenDk2SoRng7WjQTr7RJY",
  "identity": "IDgWxBhfGYLLdkhxx2ddYf9K",
  "instrument_type": "PAYMENT_CARD",
  "address": {
    "line1": "900 Metro Center Blv",
    "line2": null,
    "city": "San Francisco",
    "region": "CA",
    "postal_code": "94404",
    "country": "USA"
  },
  "address_verification": "UNKNOWN",
  "bin": "520082",
  "brand": "MASTERCARD",
  "card_type": "DEBIT",
  "expiration_month": 12,
  "expiration_year": 2029,
  "issuer_country": "NON_USA",
  "last_four": "8210",
  "name": "John Jeremy",
  "network_token_enabled": false,
  "network_token_state": "NOT_ENABLED",
  "security_code_verification": "UNKNOWN",
  "tags": {},
  "third_party": null,
  "third_party_token": null,
  "type": "PAYMENT_CARD",
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5"
    },
    "authorizations": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5/authorizations"
    },
    "transfers": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5/transfers"
    },
    "verifications": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5/verifications"
    },
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
    },
    "identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/IDgWxBhfGYLLdkhxx2ddYf9K"
    },
    "updates": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6F5kkcCB3dtGhFy1t8Aua5/updates"
    }
  }
}
```

API Definition
### Step 3: Make a Payment

At this point, we've tokenized a buyer's payment details. We can now create a payment.

To make a payment, you need to create a [`Transfer`](/api/transfers/createtransfer). Include the buyer’s `Payment Instrument#id` as the `source` field and the your `Merchant#id` in the `merchant` field.

#### Finding your Merchant ID

- If you are a Direct Merchant, you will be provided a `merchant_id` to use. You can find this in your Developer section on the Dashboard. If you need help finding this ID, please contact our support team or your Finix point of contact.
- If you are a Platform, you will need to [onboard each of your sellers](/guides/platform-payments/onboarding-sellers). Each seller will be provided a unique `merchant_id`.


#### Creating a Payment

Example
API Definition
A successful request returns a `201 Created` status, with the response body containing a `Transfer` resource that includes:

- `type` — either `DEBIT` or `CREDIT`, depending on the payment instrument
- `state` — set to `SUCCEEDED`


Example
Transfer - USA

```json Transfer - USA
{
  "id": "TR8fezr4xCMFJvH5rzCqrUkF",
  "created_at": "2025-10-24T17:38:19.09Z",
  "updated_at": "2025-10-24T17:38:19.09Z",
  "additional_buyer_charges": {
    "convenience_amount": 150,
    "surcharge_amount": 0,
    "rent_surcharge_amount": 0
  },
  "additional_healthcare_data": null,
  "additional_purchase_data": {
    "customer_reference_number": "321xyz",
    "customs_duty_amount": 10,
    "destination_country_code": null,
    "destination_postal_code": null,
    "discount_amount": 100,
    "invoice_reference_number": null,
    "order_date": null,
    "sales_tax": null,
    "sales_tax_finix_generated": 200,
    "ship_from_postal_code": null,
    "shipping_amount": 100,
    "tax_exempt": false,
    "item_data": [
      {
        "cost_per_unit": 500,
        "item_description": "printing paper",
        "item_discount_amount": 100,
        "merchant_product_code": "1149611",
        "quantity": 1,
        "amount_excluding_sales_tax": 400,
        "amount_including_sales_tax": 500,
        "unit_of_measure": "BX",
        "commodity_code": "175-62-20",
        "sales_tax_amount": 100,
        "sales_tax_rate": 0.25
      },
      {
        "cost_per_unit": 500,
        "item_description": "printing ink",
        "item_discount_amount": 0,
        "merchant_product_code": "2149612",
        "quantity": 1,
        "amount_excluding_sales_tax": 400,
        "amount_including_sales_tax": 500,
        "unit_of_measure": "CTN",
        "commodity_code": "207-72-54",
        "sales_tax_amount": 100,
        "sales_tax_rate": 0.25
      }
    ]
  },
  "address_verification": "POSTAL_CODE_AND_STREET_MATCH",
  "amount": 1000,
  "amount_requested": 1000,
  "application": "APc9vhYcPsRuTSpKD9KpMtPe",
  "currency": "USD",
  "created_via": "UNKNOWN",
  "destination": null,
  "externally_funded": "UNKNOWN",
  "failure_code": null,
  "failure_message": null,
  "fee": 0,
  "fee_profile": "FP9F2KEnY4wt1XjFvhLBJVjb",
  "idempotency_id": "1234567890",
  "ip_address_details": null,
  "merchant": "MUe17jKSrfPetoeiJQzzjmA2",
  "merchant_identity": "ID6NvZy42D7PChZL8GKKD87F",
  "messages": [],
  "network_details": {
    "brand": "VISA",
    "authorization_code": "252819",
    "acquirer_reference_number": null
  },
  "operation_key": "CARD_NOT_PRESENT_SALE",
  "parent_transfer": null,
  "parent_transfer_trace_id": null,
  "raw": null,
  "ready_to_settle_at": null,
  "receipt_last_printed_at": null,
  "security_code_verification": "MATCHED",
  "source": "PI6iQcTtJNCS8GZAVKYi5Ueb",
  "split_transfers": [
    "split_transfer_8fv2kE5eWtCvru1NG5gyRL",
    "split_transfer_8fvi9GJdhMbpWWJwKkHzct"
  ],
  "state": "SUCCEEDED", // [!code highlight]
  "statement_descriptor": "FLX*FLEX GYM",
  "subtype": "API",
  "supplemental_fee": null,
  "tags": {
    "tip": "50"
  },
  "third_party_details": {
    "external_trace_id": "7249618074176301904267",
    "type": "CYBERSOURCE" // [!code highlight]
  },
  "tip_amount": null,
  "trace_id": "0db5b7cf-6fe3-4508-ac52-15b26b9b5e0a",
  "type": "DEBIT",
  "_links": {
    "application": {
      "href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
    },
    "self": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR8fezr4xCMFJvH5rzCqrUkF"
    },
    "merchant_identity": {
      "href": "https://finix.sandbox-payments-api.com/identities/ID6NvZy42D7PChZL8GKKD87F"
    },
    "payment_instruments": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR8fezr4xCMFJvH5rzCqrUkF/payment_instruments"
    },
    "reversals": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR8fezr4xCMFJvH5rzCqrUkF/reversals"
    },
    "fees": {
      "href": "https://finix.sandbox-payments-api.com/fees?linked_to=TR8fezr4xCMFJvH5rzCqrUkF"
    },
    "disputes": {
      "href": "https://finix.sandbox-payments-api.com/transfers/TR8fezr4xCMFJvH5rzCqrUkF/disputes"
    },
    "source": {
      "href": "https://finix.sandbox-payments-api.com/payment_instruments/PI6iQcTtJNCS8GZAVKYi5Ueb"
    },
    "fee_profile": {
      "href": "https://finix.sandbox-payments-api.com/fee_profiles/FP9F2KEnY4wt1XjFvhLBJVjb"
    }
  }
}
```

API Definition
The above response means the buyer was successfully charged and the funds will soon [be ready to pay out](/guides/platform-payments/seller-payouts). Finix creates a `Settlement` resource which maps transactions and fees to calculate your payout. Read [Payouts](/guides/platform-payments/seller-payouts) for more details on how to manage and reconcile payouts.

#### Authorizations

Alternatively, you can create an `Authorization` to capture the same `Authorization` in two API calls. This is useful when you want to verify the payment details and capture a specific amount at a later date. For more details, see [Creating and Capturing an Authorization](/guides/online-payments/payment-features/auth-and-captures).

#### Fraud Session ID

We recommend including a `fraud_session_id` to detect and block potential fraudulent payments. For more information, see [Fraud Detection](/guides/online-payments/fraud-and-risk/fraud-detection).

#### Idempotent Requests

We recommend including an `idempotency_id` to ensure that each request is processed only once. For more information, see [Idempotent Requests](/additional-resources/developers/authentication-and-api-basics/idempotent-request).

Subscriptions
Finix allows you to sign up and manage subscriptions for your buyers or customers. For a comprehensive guide on Susbcriptions, see [Subscriptions](/guides/subscriptions)

### Create a Basic Subscription

To create a Subscription, include:

- The ID of the `Merchant` that the `Subscription` will be `linked_to`
- The `amount` and `currency` of the `Subscription`
- The `subscription_details`
- The `buyer_details` including both the `identity_id` and `instrument_id`


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

- `DUMMY_V1`
- `FINIX_V1`


For detailed API information, please see our [Subscriptions API Reference](/api/subscriptions/createsubscription).

The following example shows how to create a basic subscription:

Example
API Definition
Example
Subscription

```json Subscription
{
  "id": "subscription_cxe8cii53VTHqk5Q1SqP6",
  "created_at": "2026-02-17T18:36:16.36Z",
  "updated_at": "2026-02-17T18:36:16.36Z",
  "application_id": "APc9vhYcPsRuTSpKD9KpMtPe",
  "first_charge_at": "2026-02-17T18:36:16.00Z",
  "next_billing_date": {
    "year": 2026,
    "month": 2,
    "day": 17
  },
  "amount": 19900,
  "buyer_details": {
    "identity_id": "IDtEnKsZyJNUGK83ZTx4C45S",
    "instrument_id": "PImXAVgkKVshKWWHUk4xXbve",
    "requested_delivery_methods": [],
    "shipping_address": null
  },
  "currency": "USD",
  "linked_to": "MUcgYZswyRfqSSbvMsxuaHxZ",
  "linked_type": "MERCHANT",
  "nickname": null,
  "billing_interval": "MONTHLY",
  "subscription_details": {
    "collection_method": "BILL_AUTOMATICALLY",
    "send_invoice": false,
    "send_receipt": false,
    "trial_details": null,
    "discount_phase_details": null,
    "notification_preferences": {
      "send_confirmation": false
    }
  },
  "subscription_phase": "EVERGREEN",
  "state": "ACTIVE",
  "subscription_plan_id": null,
  "start_subscription_at": "2026-02-17T18:35:16.102Z",
  "total_billing_intervals": null,
  "expires_at": null,
  "canceled_via": null,
  "tags": {
    "order_number": "21DFASJSAKAS"
  },
  "subscription_link_id": null,
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/subscriptions/subscription_cxe8cii53VTHqk5Q1SqP6"
    }
  }
}
```

API Definition
### Trial Period

You can create a subscription with a trial period by providing `trial_details` in the request body.

For example, to include a trial period that lasts one month set `trial_details.interval_type` to `MONTH` and `trial_details.interval_count` to `1`.

After creating a `Subscription`, a `Transfer` will occur after the trial period has elapsed. The `first_charge_at` property in the response determines when the `Transfer` will occur.

Example
API Definition
Example
Subscription - Triad Period

```json Subscription - Triad Period
{
  "id": "subscription_cxe8BQxFvyPu87w2b6Hfd",
  "created_at": "2026-02-17T18:41:49.25Z",
  "updated_at": "2026-02-17T18:41:49.25Z",
  "application_id": "APc9vhYcPsRuTSpKD9KpMtPe",
  "first_charge_at": "2026-03-17T18:41:49.00Z", // [!code highlight]
  "next_billing_date": {
    "year": 2026,
    "month": 3,
    "day": 17
  },
  "amount": 19900,
  "buyer_details": {
    "identity_id": "IDtEnKsZyJNUGK83ZTx4C45S",
    "instrument_id": "PImXAVgkKVshKWWHUk4xXbve",
    "requested_delivery_methods": [],
    "shipping_address": null
  },
  "currency": "USD",
  "linked_to": "MUcgYZswyRfqSSbvMsxuaHxZ",
  "linked_type": "MERCHANT",
  "nickname": null,
  "billing_interval": "MONTHLY",
  "subscription_details": {
    "collection_method": "BILL_AUTOMATICALLY",
    "send_invoice": false,
    "send_receipt": false,
    "trial_details": {
      "interval_type": "MONTH",
      "interval_count": 1,
      "trial_started_at": "2026-02-17T18:40:48.98Z",
      "trial_expected_start_at": "2026-02-17T18:40:48.98Z",
      "trial_expected_end_at": "2026-03-20T05:09:54.98Z"
    },
    "discount_phase_details": null,
    "notification_preferences": {
      "send_confirmation": false
    }
  },
  "subscription_phase": "TRIAL", // [!code highlight]
  "state": "ACTIVE",
  "subscription_plan_id": null,
  "start_subscription_at": "2026-02-17T18:40:48.984Z",
  "total_billing_intervals": null,
  "expires_at": null,
  "canceled_via": null,
  "tags": {},
  "subscription_link_id": null,
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/subscriptions/subscription_cxe8BQxFvyPu87w2b6Hfd"
    }
  }
}
```

API Definition
### Discount Period

To apply a discount period, include `discount_phase_details` in the request body.

For example, if the full subscription price is $20 per month, and you want to offer a discounted rate of $10 per month for three months, set `discount_phase_details.amount` to `1000` and `discount_phase_details.billing_interval_count` to `3`.

After this discount period, the subscriber will be charged the full `amount` of the `Subscription`.

Example
API Definition
Example
Subscription - Discount Phase

```json Subscription - Discount Phase
{
  "id": "subscription_cxe8oDnBbKKDGMQQaWZca",
  "created_at": "2026-02-17T18:38:50.28Z",
  "updated_at": "2026-02-17T18:38:50.28Z",
  "application_id": "APc9vhYcPsRuTSpKD9KpMtPe",
  "first_charge_at": "2026-02-17T18:38:50.00Z",
  "next_billing_date": {
    "year": 2026,
    "month": 2,
    "day": 17
  },
  "amount": 2000,
  "buyer_details": {
    "identity_id": "IDtEnKsZyJNUGK83ZTx4C45S",
    "instrument_id": "PImXAVgkKVshKWWHUk4xXbve",
    "requested_delivery_methods": [],
    "shipping_address": null
  },
  "currency": "USD",
  "linked_to": "MUcgYZswyRfqSSbvMsxuaHxZ",
  "linked_type": "MERCHANT",
  "nickname": "Finflix Gold Package",
  "billing_interval": "MONTHLY",
  "subscription_details": {
    "collection_method": "BILL_AUTOMATICALLY",
    "send_invoice": false,
    "send_receipt": false,
    "trial_details": null,
    "discount_phase_details": {
      "amount": 1000,
      "billing_interval_count": 3,
      "discount_phase_started_at": "2026-02-17T18:37:50.01Z",
      "discount_phase_expected_start_at": "2026-02-17T18:37:50.01Z",
      "discount_phase_expected_end_at": "2026-05-17T18:37:50.01Z"
    },
    "notification_preferences": {
      "send_confirmation": false
    }
  },
  "subscription_phase": "DISCOUNT", // [!code highlight]
  "state": "ACTIVE",
  "subscription_plan_id": null,
  "start_subscription_at": "2026-02-17T18:37:50.010Z",
  "total_billing_intervals": null,
  "expires_at": null,
  "canceled_via": null,
  "tags": {},
  "subscription_link_id": null,
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/subscriptions/subscription_cxe8oDnBbKKDGMQQaWZca"
    }
  }
}
```

API Definition
### Start Date

Finix allows you to specify a start date for subscriptions. The `starts_subscription_at` field takes an ISO8601 formatted timestamp to start the subscription. The timestamp must be in the future.

Example
API Definition
Example
Subscription - Future Start Date

```json Subscription - Future Start Date
{
  "id": "subscription_czjv1q7i5sjG4q61tDVz8",
  "created_at": "2026-04-22T21:14:12.33Z",
  "updated_at": "2026-04-22T21:14:12.33Z",
  "amount": 10000,
  "application_id": "APc9vhYcPsRuTSpKD9KpMtPe",
  "billing_interval": "MONTHLY",
  "buyer_details": {
    "identity_id": "IDtEnKsZyJNUGK83ZTx4C45S",
    "instrument_id": "PImXAVgkKVshKWWHUk4xXbve",
    "requested_delivery_methods": [],
    "shipping_address": null
  },
  "canceled_via": null,
  "currency": "USD",
  "expires_at": null,
  "first_charge_at": "2026-08-15T22:42:05.49Z",
  "has_usage_based_plan": false,
  "linked_to": "MUcgYZswyRfqSSbvMsxuaHxZ",
  "linked_type": "MERCHANT",
  "next_billing_date": {
    "year": 2026,
    "month": 8,
    "day": 15
  },
  "nickname": "Monthly Cheese Delivery Club",
  "start_subscription_at": "2026-08-15T22:42:05.490Z", // [!code highlight]
  "state": "NOT_STARTED",
  "subscription_details": {
    "collection_method": "BILL_AUTOMATICALLY",
    "send_invoice": false,
    "send_receipt": false,
    "trial_details": null,
    "discount_phase_details": null,
    "notification_preferences": {
      "send_confirmation": false
    }
  },
  "subscription_link_id": null,
  "subscription_phase": "NONE",
  "subscription_plan_id": null,
  "tags": {},
  "total_billing_intervals": null,
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/subscriptions/subscription_czjv1q7i5sjG4q61tDVz8"
    }
  }
}
```

API Definition
### Fixed Length Subscriptions

To create fixed-length subscriptions, you can pass `total_billing_intervals` in the request body. The API will return an `expires_at` field to let you know when the `Subscription` will expire. The `subscription_phase` will also return a value of `FIXED`.

Example
API Definition
Example
Subscription - Fixed-Length

```json Subscription - Fixed-Length
{
  "id": "subscription_cxe8rTTPCwzUu7p1zmk6t",
  "created_at": "2026-02-17T18:39:34.38Z",
  "updated_at": "2026-02-17T18:39:34.38Z",
  "application_id": "APc9vhYcPsRuTSpKD9KpMtPe",
  "first_charge_at": "2026-02-17T18:39:33.00Z",
  "next_billing_date": {
    "year": 2026,
    "month": 2,
    "day": 17
  },
  "amount": 19900,
  "buyer_details": {
    "identity_id": "IDtEnKsZyJNUGK83ZTx4C45S",
    "instrument_id": "PImXAVgkKVshKWWHUk4xXbve",
    "requested_delivery_methods": [],
    "shipping_address": null
  },
  "currency": "USD",
  "linked_to": "MUcgYZswyRfqSSbvMsxuaHxZ",
  "linked_type": "MERCHANT",
  "nickname": null,
  "billing_interval": "MONTHLY",
  "subscription_details": {
    "collection_method": "BILL_AUTOMATICALLY",
    "send_invoice": false,
    "send_receipt": false,
    "trial_details": null,
    "discount_phase_details": null,
    "notification_preferences": {
      "send_confirmation": false
    }
  },
  "subscription_phase": "FIXED", // [!code highlight]
  "state": "ACTIVE",
  "subscription_plan_id": null,
  "start_subscription_at": "2026-02-17T18:38:33.747Z",
  "total_billing_intervals": 12,
  "expires_at": "2027-02-17T18:38:33.747Z", // [!code highlight]
  "canceled_via": null,
  "tags": {},
  "subscription_link_id": null,
  "_links": {
    "self": {
      "href": "https://finix.sandbox-payments-api.com/subscriptions/subscription_cxe8rTTPCwzUu7p1zmk6t"
    }
  }
}
```

API Definition
Low Code / No Code
Customers that want to get started accepting payments right away can use Finix's suite of No-Code / Low-Code solutions.

Payment Links
Create and send Payment Links to help buyers easily complete transactions.

Virtual Terminal
Learn how to create and process payments with Finix's Virtual Terminal.

Subscriptions
You can create a Subscription in the Finix Dashboard without any development work.

br
## In-Person Payments

![In-Person Payments Hero](/assets/in-person-payments-hero.e5459dcbeca77e85516f32268b4b577331dc807762e7ebd6b38e99b1cc2798b0.fec90461.svg)

Accept in-person payments with Finix’s flexible, platform-ready solution—built for custom POS flows or turnkey hardware experiences.

- **Flexible integrations**: Power your POS with our APIs or launch fast with our Standalone Terminals.
- **Modern payment methods**: Accept chip, tap, swipe, mobile wallets, and contactless payments across supported devices.
- **Security first:** Protect sensitive payment data with our PCI-compliant tokenization system.


To get started with our In-Person Payments, select one of the links below.

Select Your Device
Learn about the payment terminals available for In-Person Payments integrations.

Building your Integration
Learn about Finix's POS and mobile in-person payments integrations.

Standalone Terminals
Learn about Finix's Standalone Terminals.

## Additional Resources

### Payment Features

Finix supports a variety of different payment features to let you customize your payments integration:

- [Use authorizations and captures](/guides/online-payments/payment-features/auth-and-captures) to create temporary holds before capturing full amounts later.
- [Enable buyer charges](/guides/online-payments/payment-features/buyer-charges) to collect additional fees, such as convenience or service fees.
- [Split Transactions](/guides/online-payments/payment-features/split-transactions) across different approved merchants.
- [Collect tips](/guides/online-payments/payment-features/collecting-tips) from buyers.
- [Accept FSA and HSA cards](/guides/online-payments/payment-features/fsa-and-hsa-cards) for health-related payments.
- [Enable Level 2 / Level 3](/guides/online-payments/payment-features/level-2-level-3-processing) processing to reduce interchange rates.
- [Send receipts](/guides/online-payments/payment-features/sending-receipts) to your buyers.


### Wallet Payments

- [Integrate Apple Pay](/guides/online-payments/digital-wallets/apple-pay/) to create a frictionless experience on web or mobile.
- [Integrate Google Pay](/guides/online-payments/digital-wallets/google-pay) to let users pay on web or on android device.


### Fraud and Risk

Learn about the variety of tools that Finix offers to manage fraud and risk:

- [Use 3D Secure Authentication](/guides/online-payments/fraud-and-risk/3d-secure-authentication) for an extra security layer when accepting card payments.
- [Disable payment instruments](/guides/online-payments/fraud-and-risk/disabling-instruments) you know to be fraudulent.
- [Integrate into Finix's fraud detection solution](/guides/online-payments/fraud-and-risk/fraud-detection) to mitigate chargeback risk.
- [Handle declined payments](/guides/online-payments/fraud-and-risk/handling-declined-payments) to learn what to do when payments fail.
- [Enable risk rules and card checks](/guides/online-payments/fraud-and-risk/risk-rules-card-checks) to verify card details before accepting payments.


### After the Payment

After accepting an online payment, there are some final steps:

- [Learn how you get paid from the payments you've processed](/guides/after-the-payment/payouts).
- [Learn how to refund payments](/guides/after-the-payment/refunds).
- [Learn what to do when a buyer reports a payment to their issuing bank](/guides/after-the-payment/disputes).