Skip to content

Logo

Payfuture

Cross-border and stablecoin payments for emerging markets.

Supports in this guide: Payments, Payouts

Provider website: payfuture.net


What you need to do for start processing transactions (brief summary)

  1. Get your credentials (from Payfuture)
  2. Connect in Dashboard
  3. Send an API request

Prerequisites: get from Payfuture

Contact your Payfuture account manager to get your account verified and receive the following credentials.

  • Mid code -> Corefy field mid_code.
  • Mid Secret -> Corefy field mid_secret -> also used to decrypt QR-code data returned by Payfuture for QR-based local methods (see Additional info below).

Payfuture covers a large number of local payment methods across several emerging markets (bank transfer/netbanking and wallets in India, Pix in Brazil, bank QR codes in Malaysia and Vietnam, bank transfer in Argentina, cash in Egypt), each enabled per service in the directory - which ones are available on your account depends on what Payfuture has configured for your Mid code.


Payments processing (connect Provider account, create payment-invoice)

Connect Provider account in Corefy Dashboard

Step 1 - Open connection form

Open Payfuture in the provider directory and press Connect at Payfuture Provider Overview page in the New connection section.

Step 2 - Fill in fields and select settings

  • Mid code
  • Mid Secret
  • Test Mode -> (enable if you are using sandbox credentials)

Success

You have connected Payfuture Provider account!


First request to Corefy API (MIN)

What it does: creates a payment-invoice for a redirect-based local method (bank net-banking page or wallet checkout) - Payfuture returns a redirect/form that Corefy forwards the customer to.

Payment - MIN

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "bda26b6b-587e-4cc9-884c-4f6811f43ee7",
      "service": "hdfc_bank_inr_hpp",
      "currency": "INR",
      "amount": 999
    }
  }
}

Payment - MAX

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "7c626240-d798-4171-aa15-85a05e4a37cd",
      "service": "hdfc_bank_inr_hpp",
      "currency": "INR",
      "amount": 999,
      "customer": {
        "reference_id": "7ae5d1df-a316-4c9c-af9c-ccaed8a29e8f",
        "name": "Test Test",
        "email": "test@gmail.com",
        "phone": "12345678995",
        "metadata": {
          "client_ip": "3.65.180.235"
        },
        "address": {
          "full_address": "India",
          "country": "IN",
          "region": "India",
          "city": "India",
          "post_code": "12345"
        }
      },
      "metadata": {
        "fingerprint": "1234"
      }
    }
  }
}

Important

  • If customer.metadata.client_ip is missing, and the CLIENT_IP Constant isn't set either, Corefy sends a fixed placeholder IP address (3.126.246.226) to Payfuture instead of leaving the field empty.
  • metadata.fingerprint is sent to Payfuture as a device fingerprint for risk scoring - it's optional.

Extended request (MAX)

Why add extra fields (typical reasons): - Provide customer/billing details Payfuture uses for AML/fraud checks on local methods - Avoid the hardcoded IP fallback above - Improve conversion by passing a device fingerprint


Local invoice-based methods (UPI, QR codes, cash, bank transfer)

A number of services (UPI collect requests, UPI/bank QR codes, cash_egp_invoice, bank_transfer_ars_invoice) don't redirect the customer - instead Payfuture returns data Corefy turns into a QR code, bank requisites, or a pending UPI collect request. Two of these services take extra fields:

  • cash_egp_invoice -> fields.bank_code
  • bank_transfer_ars_invoice -> fields.document_id, fields.document_type

Payment - Local invoice method (MIN, bank_transfer_ars_invoice)

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "1c222043-420e-494e-bf4a-0d777ed24ce7",
      "service": "bank_transfer_ars_invoice",
      "currency": "ARS",
      "amount": 987.65,
      "fields": {
        "document_id": "12345678",
        "document_type": "DNI"
      }
    }
  }
}

Important

QR-code services (including upi_qr_inr_invoice) take no extra fields - the QR image comes back from Payfuture inside an encrypted blob that Corefy decrypts with your Mid Secret and converts into a scannable code automatically.


Constants (fallback fields)

Constants are static values that Corefy can send to Payfuture instead of dynamic data from your API request, when those fields are missing in the request.

Priority (predictable rule): 1. If a value is present in the request -> Corefy uses the request value 2. Else if the constant is set -> Corefy uses the constant 3. Else -> Corefy falls back to a fixed placeholder IP (see above)

Currently available constants (constant -> Corefy API field)

  • CLIENT_IP -> customer.metadata.client_ip -> available on most, but not all, Payfuture payment services.

Refunds

Payfuture does not support refunds through Corefy.


Payouts processing (connect Provider account, create payout-invoice)

Connect Provider account in Corefy Dashboard

Uses the same Provider account connected above - no separate connection step.

First request to Corefy API (MIN)

What it does: creates a payout-invoice for a bank transfer payout. Available currencies/services depend on what Payfuture has configured for your account - bank_transfer_inr is shown here as a live example.

Payout - MIN

POST /api/payout-invoices

{
  "data": {
    "type": "payout-invoice",
    "attributes": {
      "reference_id": "234234234234",
      "currency": "INR",
      "amount": 100,
      "service": "bank_transfer_inr",
      "fields": {
        "beneficiary_full_name": "John Smith",
        "beneficiary_country_code_iso": "IN",
        "account_number": "2000017251",
        "bank_code": "NA",
        "bank_name": "NA",
        "account_type": "BANKTRANSFER"
      }
    }
  }
}

Payout - MAX

POST /api/payout-invoices

{
  "data": {
    "type": "payout-invoice",
    "attributes": {
      "reference_id": "1733842885",
      "currency": "INR",
      "amount": 100,
      "service": "bank_transfer_inr",
      "customer": {
        "reference_id": "66ddb3c7553ce85a2cd5d810",
        "metadata": {
          "client_ip": "3.65.180.235"
        }
      },
      "fields": {
        "beneficiary_full_name": "John Smith",
        "beneficiary_country_code_iso": "IN",
        "account_number": "2000017251",
        "bank_code": "NA",
        "bank_branch_code": "NG1084",
        "bank_name": "NA",
        "bank_branch": "NA",
        "bank_address": "NA",
        "beneficiary_phone": "9876543210",
        "beneficiary_email": "na@gmail.com",
        "beneficiary_address": "India",
        "account_type": "BANKTRANSFER",
        "beneficiary_document_id": "123",
        "beneficiary_city": "Surat",
        "beneficiary_postcode": "123456",
        "beneficiary_state": "Gujarat"
      },
      "callback_url": "https://example.com/payouts/callback"
    }
  }
}

Important

Unlike Payments, a missing customer.metadata.client_ip on a Payout is simply left out of the request to Payfuture - there is no hardcoded IP fallback on this flow.


Constants (fallback fields)

Currently available constants (constant -> Corefy API field)

  • CLIENT_IP -> customer.metadata.client_ip -> no fallback value if unset (see above).

Refunds

Not applicable to Payouts.


Additional info

  1. Active reconciliation is available on both Payments and Payouts - Corefy can both receive Payfuture's asynchronous callback and actively poll Payfuture for a transaction's status to finalize it.
  2. No recurring - this connector does not support saving/charging a token through Corefy.
  3. QR-based local methods are returned by Payfuture as an encrypted HTML blob; Corefy decrypts it with your Mid Secret and extracts the QR code automatically - no extra handling is needed on your side.
  4. UPI collect-request payments settle asynchronously - the initial response is a pending status, finalized later by callback or reconciliation once the customer approves the request in their UPI app.

FAQ / Troubleshooting

  • Connecting succeeds even with the wrong Mid code/Mid Secret -> Payfuture currently has a known issue validating credentials at connect time, so Corefy cannot reject bad credentials during the connection test; double-check both values carefully before saving them.
  • Payment stuck in pending for a QR/UPI method -> this is expected until the customer completes the payment in their banking/UPI app; the status finalizes via callback or active reconciliation.
  • Refund request rejected -> Payfuture does not support refunds through Corefy on any flow.
  • A local payment method or payout service isn't available -> service availability is configured per Mid code on Payfuture's side; confirm with your Payfuture account manager which services are enabled for your account.

Question

Still looking for help connecting your Payfuture account? Please contact our support team!