Payment Invoice Request
{
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
}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
)//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();
$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
productDetails / ProductDetailsProduct 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 |
productDetails: {
name: "Premium Annual Plan",
description: "12-month access to all features",
imageUrl: "https://example.com/product.png",
}from transfi.types import ProductDetails
ProductDetails(
name="Premium Annual Plan",
description="12-month access to all features",
image_url="https://example.com/product.png",
)productDetails(productDetails.builder()
.name("Premium Subscription")
.description("Monthly subscription plan")
.build())'productDetails' => [
'name' => 'Premium Plan',
'description' => 'Monthly subscription',
]individual / Individual
individual / IndividualCustomer 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 | 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) |
individual: {
firstName: "Jane",
lastName: "Smith",
email: "[email protected]",
phone: "9876543210",
phoneCode: "+1",
country: "IN",
address: {
street: "123 Main St",
city: "New York",
state: "NY",
postalCode: "10001",
buildingNumber: "221B",
flatNumber: "4A",
country: "US"
},
}from transfi.types import Individual, Address
Individual(
first_name="Jane",
last_name="Smith",
email="[email protected]",
phone="9876543210",
phone_code="+1",
country="US",
address=Address(
street="123 Main St",
city="New York",
state="NY",
postal_code="10001",
building_number: "221B",
flat_number: "4A",
country: "US"
),
)individual(individual.builder()
.firstName("John")
.lastName("Doe")
.email("[email protected]")
.phone("1234567890")
.phoneCode("+1")
.country("US")
.address(address.builder()
.street("123 Main St")
.city("New York")
.state("NY")
.postalCode("10001")
.buildingNumber("221B")
.flatNumber("4A")
.country("US")
.build())
.build())'individual' => [
'firstName' => 'John',
'lastName' => 'Doe',
'email' => '[email protected]',
'phone' => '1234567890',
'phoneCode' => '+1',
'country' => 'US',
'address' => [
'street' => '123 Main St',
'city' => 'New York',
'state' => 'NY',
'postalCode' => '10001',
'buildingNumber' => '221B',
'flatNumber' => '4A',
'country' => 'US',
],
]address / Address
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 |
| Building Number | buildingNumber | building_number | Building Number |
| Flat Number | flatNumber | flat_number | Flat Number |
| Country of Residence | country | country | Country of Residence |