TPV Standard Integration
Create a FiatPe order with the customer’s registered bank account, open Checkout with the returned order_id, and verify the completed payment on your server.
Prerequisites
- TPV is activated for your FiatPe account.
- Your server securely stores the customer’s verified bank details.
- You have FiatPe Test API credentials and Checkout.js integrated.
- Your backend verifies signatures and the final payment status.
1. Build the integration
- 1
Collect registered bank details
Collect and verify the customer’s account number, account-holder name, and IFSC during onboarding.
- 2
Create a TPV order
Send the customer’s registered bank account with the order request.
- 3
Open FiatPe Checkout
Pass the order ID returned by your server to Checkout.js.
- 4
Handle the result
Handle success and failure callbacks without treating the browser response as authoritative.
- 5
Store identifiers
Persist the FiatPe order ID and payment ID against your internal customer and transaction records.
- 6
Verify the payment
Verify the SHA-512 signature and fetch the final payment status before fulfilment.
https://api.fiatpe.com/v1/orders/2. Create an order
Always create the order on your server. Add the registered bank_details to enable TPV matching. Checkout displays the eligible payment options configured for your FiatPe account.
TPV order example
Send the bank account that was registered and verified for the customer.
curl -X POST https://api.fiatpe.com/v1/orders/ \
-H "Authorization: Basic YOUR_BASE64_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 50000,
"currency": "INR",
"reference_id": "INVESTMENT_13375649",
"bank_details": {
"account_number": "765432123456789",
"name": "Customer Name",
"ifsc": "HDFC0000053"
},
"metadata": {
"customer_id": "customer_12345"
}
}'Example response
{
"data": {
"id": "order_2f40f08f4baa4e5b",
"amount": 100,
"entity": "order",
"status": "created",
"currency": "INR",
"metadata": {},
"created_at": 1788148983,
"return_url": null,
"amount_paid": 0,
"bank_details": {
"account_number": "765432123456789",
"name": "Customer Name",
"ifsc": "HDFC0000053"
},
"reference_id": null,
"return_method": "POST",
"amount_pending": 100
},
"message": "order created successfully."
}Request parameters
| Parameter | Required | Description |
|---|---|---|
amount | Yes | Payment amount in the currency’s smallest sub-unit. |
currency | Yes | Three-letter currency code. Use INR for this flow. |
reference_id | Recommended | Your unique internal order or investment reference. |
bank_details | Yes for TPV | The bank account registered and verified for the customer. |
bank_details.account_number | Yes | Registered bank account number. |
bank_details.name | Yes | Name associated with the registered account. |
bank_details.ifsc | Yes | IFSC of the registered bank branch. |
metadata | No | Internal key-value data used for reconciliation. |
3. Test the integration
Use only FiatPe Test credentials and test payment details. Test successful matching, account mismatch, failure, cancellation, duplicate callback, and retry flows before going live.
4. Go live
Enable Live credentials only after FiatPe has activated TPV and your compliance team has approved the flow. Continue to verify the signature and authoritative payment status before fulfilling every transaction.
Never place the Salt Key or full registered bank details in browser code, URLs, analytics, or application logs.