Parameters

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';
ParameterNode.js keyPython keyPHP KeyJava KeyTypeRequiredDescription
Payment Link IDpaymentLinkIdpayment_link_idpaymentLinkIdpaymentLinkIdstringYesThe Payment Link ID from your TransFi dashboard
AmountamountamountamountamountstringYesAmount to charge, e.g. "100" or "49.99"
CurrencycurrencycurrencycurrencycurrencystringYesISO 4217 code, e.g. "USD", "EUR", "SGD"
Success URLsuccessRedirectUrlsuccess_redirect_urlsuccessRedirectUrlsuccessRedirectUrlstringYesRedirect URL after successful payment
Failure URLfailureRedirectUrlfailure_redirect_urlfailureRedirectUrlfailureRedirectUrlstringYesRedirect URL after failed payment
Product DetailsproductDetailsproduct_detailsproductDetailsproductDetailsobjectNoProduct info shown at checkout
CustomerindividualindividualindividualindividualobjectNoCustomer details for pre-fill / KYC
Order IDcustomerOrderIdcustomer_order_idcustomerOrderIdcustomerOrderIdstringNoYour internal order reference ID

productDetails / ProductDetails

Product information displayed on the checkout page.

FieldNode.js keyPython keyRequiredDescription
NamenamenameYesName of the product or service
DescriptiondescriptiondescriptionNoShort description of the product
Image URLimageUrlimage_urlNoURL 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

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

FieldNode.js keyPython keyRequiredDescription
First namefirstNamefirst_nameYesCustomer's first name
Last namelastNamelast_nameYesCustomer's last name
EmailemailemailYesCustomer's email address
PhonephonephoneNoPhone number without country code
Phone codephoneCodephone_codeNoDialing code, e.g. "+1", "+91"
CountrycountrycountryNoISO 3166-1 alpha-3 (Node.js: "USA") or alpha-2 (Python: "US")
AddressaddressaddressNoCustomer's address (see below)
individual: {
  firstName: "Jane",
  lastName: "Smith",
  email: "[email protected]",
  phone: "9876543210",
  phoneCode: "+1",
  country: "USA",
  address: {
    street: "123 Main St",
    city: "New York",
    state: "NY",
    postalCode: "10001",
  },
}
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",
    ),
)
individual(individual.builder()
        .firstName("John")
        .lastName("Doe")
        .email("[email protected]")
        .phone("1234567890")
        .phoneCode("+1")
        .country("US")
        .build())
'individual'         => [
        'firstName' => 'John',
        'lastName'  => 'Doe',
        'email'     => '[email protected]',
        'phone'     => '1234567890',
        'phoneCode' => '+1',
        'country'   => 'US',
    ]

address / Address

FieldNode.js keyPython keyDescription
StreetstreetstreetStreet address
CitycitycityCity name
StatestatestateState or province
Postal codepostalCodepostal_codeZIP or postal code