---
updatedAt: 2026-05-25T02:08:26.000Z
agentTools:
  projectIndex: https://checkout-docs.transfi.com/llms.txt
---

# Parameters

### Payment Invoice Request

```javascript Node.js
{
  paymentLinkId: "string",        // Required
  amount: "string",               // Required — e.g. "100" or "49.99"
  currency: "string",             // Required — ISO 4217, e.g. "USD"
  successRedirectUrl: "string",   // Required
  failureRedirectUrl: "string",   // Required
  productDetails: { ... },        // Optional — see below
  individual: { ... },            // Optional — see below
  customerOrderId: "string",      // Optional — your internal order ID
}
```
```python
PaymentInvoiceRequest(
    payment_link_id="string",         # Required
    amount="string",                  # Required — e.g. "100" or "49.99"
    currency="string",                # Required — ISO 4217, e.g. "USD"
    success_redirect_url="string",    # Required
    failure_redirect_url="string",    # Required
    product_details=ProductDetails(), # Optional — see below
    individual=Individual(),          # Optional — see below
    customer_order_id="string",       # Optional — your internal order ID
)
```
```java
//Builder pattern for creating payment requests:

paymentInvoiceRequest.builder()
    .paymentLinkId(String)           // Required: Payment link identifier
    .amount(String)                  // Required: Payment amount
    .currency(String)                // Required: Currency code (USD, EUR, etc.)
    .productDetails(productDetails)  // Optional — see below
    .individual(individual)          // Optional — see below
    .successRedirectUrl(String)      // Required: Success redirect URL
    .failureRedirectUrl(String)      // Required: Failure redirect URL
    .customerOrderId(String)         // Optional — see below
     .build();
```
```php

$paymentData = new PaymentInvoiceRequest(
    'LINK_ID',
    '100',
    'USD',
    'https://example.com/success',
    'https://example.com/failure'
);
$paymentData->productDetails  = $product;
$paymentData->individual      = $individual;
$paymentData->customerOrderId = 'order-001';
```

| Parameter       | Node.js key          | Python key             | PHP Key              | Java   Key           | Type   | Required | Description                                     |
| :-------------- | :------------------- | :--------------------- | :------------------- | :------------------- | :----- | :------- | :---------------------------------------------- |
| Payment Link ID | `paymentLinkId`      | `payment_link_id`      | `paymentLinkId`      | `paymentLinkId`      | string | **Yes**  | The Payment Link ID from your TransFi dashboard |
| Amount          | `amount`             | `amount`               | `amount`             | `amount`             | string | **Yes**  | Amount to charge, e.g. `"100"` or `"49.99"`     |
| Currency        | `currency`           | `currency`             | `currency`           | `currency`           | string | **Yes**  | ISO 4217 code, e.g. `"USD"`, `"EUR"`, `"SGD"`   |
| Success URL     | `successRedirectUrl` | `success_redirect_url` | `successRedirectUrl` | `successRedirectUrl` | string | **Yes**  | Redirect URL after successful payment           |
| Failure URL     | `failureRedirectUrl` | `failure_redirect_url` | `failureRedirectUrl` | `failureRedirectUrl` | string | **Yes**  | Redirect URL after failed payment               |
| Product Details | `productDetails`     | `product_details`      | `productDetails`     | `productDetails`     | object | No       | Product info shown at checkout                  |
| Customer        | `individual`         | `individual`           | `individual`         | `individual`         | object | No       | Customer details for pre-fill / KYC             |
| Order ID        | `customerOrderId`    | `customer_order_id`    | `customerOrderId`    | `customerOrderId`    | string | No       | Your internal order reference ID                |

***

### `productDetails` / `ProductDetails`

Product information displayed on the checkout page.

| Field       | Node.js key   | Python key    | Required | Description                      |
| :---------- | :------------ | :------------ | :------- | :------------------------------- |
| Name        | `name`        | `name`        | **Yes**  | Name of the product or service   |
| Description | `description` | `description` | No       | Short description of the product |
| Image URL   | `imageUrl`    | `image_url`   | No       | URL of a product image           |

```javascript Node.js
productDetails: {
  name: "Premium Annual Plan",
  description: "12-month access to all features",
  imageUrl: "https://example.com/product.png",
}
```
```python
from transfi.types import ProductDetails

ProductDetails(
    name="Premium Annual Plan",
    description="12-month access to all features",
    image_url="https://example.com/product.png",
)
```
```java
productDetails(productDetails.builder()
        .name("Premium Subscription")
        .description("Monthly subscription plan")
        .build())
```
```php
'productDetails'     => [
        'name'        => 'Premium Plan',
        'description' => 'Monthly subscription',
    ]
```

***

### `individual` / `Individual`

Customer information used to pre-fill the checkout form or speed up KYC verification.

| Field      | Node.js key | Python key   | Required | Description                                                       |
| :--------- | :---------- | :----------- | :------- | :---------------------------------------------------------------- |
| First name | `firstName` | `first_name` | **Yes**  | Customer's first name                                             |
| Last name  | `lastName`  | `last_name`  | **Yes**  | Customer's last name                                              |
| Email      | `email`     | `email`      | **Yes**  | Customer's email address                                          |
| Phone      | `phone`     | `phone`      | No       | Phone number without country code                                 |
| Phone code | `phoneCode` | `phone_code` | No       | Dialing code, e.g. `"+1"`, `"+91"`                                |
| Country    | `country`   | `country`    | No       | ISO 3166-1 alpha-3 (Node.js: `"USA"`) or alpha-2 (Python: `"US"`) |
| Address    | `address`   | `address`    | No       | Customer's address (see below)                                    |

```javascript Node.js
individual: {
  firstName: "Jane",
  lastName: "Smith",
  email: "jane.smith@example.com",
  phone: "9876543210",
  phoneCode: "+1",
  country: "USA",
  address: {
    street: "123 Main St",
    city: "New York",
    state: "NY",
    postalCode: "10001",
  },
}
```
```python
from transfi.types import Individual, Address

Individual(
    first_name="Jane",
    last_name="Smith",
    email="jane.smith@example.com",
    phone="9876543210",
    phone_code="+1",
    country="US",
    address=Address(
        street="123 Main St",
        city="New York",
        state="NY",
        postal_code="10001",
    ),
)
```
```java
individual(individual.builder()
        .firstName("John")
        .lastName("Doe")
        .email("john.doe@example.com")
        .phone("1234567890")
        .phoneCode("+1")
        .country("US")
        .build())
```
```php
'individual'         => [
        'firstName' => 'John',
        'lastName'  => 'Doe',
        'email'     => 'john@example.com',
        'phone'     => '1234567890',
        'phoneCode' => '+1',
        'country'   => 'US',
    ]
```

#### `address` / `Address`

| Field       | Node.js key  | Python key    | Description        |
| :---------- | :----------- | :------------ | :----------------- |
| Street      | `street`     | `street`      | Street address     |
| City        | `city`       | `city`        | City name          |
| State       | `state`      | `state`       | State or province  |
| Postal code | `postalCode` | `postal_code` | ZIP or postal code |