API v1FiatPe Home
FiatPeDocs
THIRD-PARTY VALIDATION

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. 1

    Collect registered bank details

    Collect and verify the customer’s account number, account-holder name, and IFSC during onboarding.

  2. 2

    Create a TPV order

    Send the customer’s registered bank account with the order request.

  3. 3

    Open FiatPe Checkout

    Pass the order ID returned by your server to Checkout.js.

  4. 4

    Handle the result

    Handle success and failure callbacks without treating the browser response as authoritative.

  5. 5

    Store identifiers

    Persist the FiatPe order ID and payment ID against your internal customer and transaction records.

  6. 6

    Verify the payment

    Verify the SHA-512 signature and fetch the final payment status before fulfilment.

POSThttps://api.fiatpe.com/v1/orders/
Open Create Order API →

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
Copy
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

JSON Response
Copy
{
  "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

ParameterRequiredDescription
amountYesPayment amount in the currency’s smallest sub-unit.
currencyYesThree-letter currency code. Use INR for this flow.
reference_idRecommendedYour unique internal order or investment reference.
bank_detailsYes for TPVThe bank account registered and verified for the customer.
bank_details.account_numberYesRegistered bank account number.
bank_details.nameYesName associated with the registered account.
bank_details.ifscYesIFSC of the registered bank branch.
metadataNoInternal 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.

Bank details are sensitive.

Never place the Salt Key or full registered bank details in browser code, URLs, analytics, or application logs.