iFortePay Developer Documentation

website·Indexed 32 days ago

https://developer.ifortepay.id

API documentation for iFortePay's payment gateway and financial services, including SNAP-compliant endpoints for QRIS, Virtual Accounts, Direct Debit, and Buy Now Pay Later (BNPL). It also covers disbursement services for interbank transfers, balance inquiries, and risk management tools like the BIN Checker.

Tokens
85.4K
Snippets
273
Records
404
Agent score
55%

What's inside iFortePay

  1. Overview of Buy Now Pay Later (BNPL) Integration

    Paylater is a cardless installment method allowing users to make purchases without a credit card via providers like Indodana and Kredivo. It supports two primary transaction flows:

    1. Online Transactions: Uses the 'Generate Checkout URL' feature to provide a payment link to the user.
    2. Offline Transactions: Uses 'POS Checkout' where the user scans a merchant QR code to be redirected to the PayLater application.
  2. Overview of iFortepay API Architecture

    iFortepay provides a RESTful Web Service that acts as a communication bridge between merchants and payment channels. All API requests and responses use JSON format. The service supports Bank Transfers, Electronic Money, Credit Card transactions, and a visualized 'Payment Page' solution.
  3. Overview of PaymentGatewaySDK

    PaymentGatewaySDK is a Kotlin Multiplatform Mobile (KMM) module that provides a branded payment experience for card transactions processed through iFortePay's BRICC channel. It uses a shared Kotlin business logic layer for request building, validation, NFC EMV card reading, and API communication, with the UI rendered natively via Compose Multiplatform.
  4. Overview of Buy Now Pay Later (BNPL) Integration

    Buy Now Pay Later (BNPL), also known as cardless installment, allows users to make purchases in installments without a credit card by using a credit limit from a provider. Currently, this is supported via Indodana.

    There are two primary transaction flows:

    1. Online Transactions: Uses the 'Generate Checkout URL' feature to provide a payment link that directs users to the Indodana payment page.
    2. Offline Transactions: Uses the 'POS Checkout' feature where users scan a merchant QR code to open the Indodana payment page in their app.
  5. Overview of iFortePay Payment Gateway Version 2 Features

    iFortePay Version 2 provides a comprehensive payment suite including:

    • E-Wallet/E-Money Service: Supports QRIS and Jumpapp payments.
    • Credit Card Processing: Includes a dependable Fraud Detection System for secured transactions.
    • Front-end Payment Page: A hosted checkout experience supporting Virtual Accounts, Over-the-Counter (OTC) payments (e.g., Pegadaian, Pos), Credit Cards, E-Wallets, and QRIS.
    • Bank Transfer (Virtual Account): Offers four configurable modes to suit different business use cases.
    • Transaction Dashboard: A real-time monitoring and export tool for transactions that does not require API integration for basic reporting.
  6. Overview of Ifortepay Virtual Account payments

    Virtual Account (VA) allows merchants to issue invoices with a unique ID that customers can pay via ATM or bank transfer. This unique ID simplifies the reconciliation process for the merchant by linking each transaction to a specific invoice.
  7. Understand and use the BIN Checker for card validation

    A BIN (Bank Identification Number), also known as an IIN (Issuer Identification Number) under ISO/IEC 7812, consists of the first 6 to 8 digits of a payment card. The BIN Checker tool allows developers to validate and verify these digits to determine the card's network, type, issuing bank, and country of origin without exposing the cardholder's full details. This process is primarily used for security purposes to verify the authenticity of credit card numbers before processing a payment to mitigate fraud risk.
  8. Understand the BNPL transaction status response

    When querying the status of a BNPL (Buy Now Pay Later) transaction via Ifortepay, the response contains detailed information about the payment state, amounts, and itemized details. Key status indicators include the latestTransactionStatus code and the transactionStatusDesc.
    {
      "responseCode": "String",
      "responseMessage": "String",
      "originalPartnerReferenceNo": "String", // Merchant's transaction ID
      "originalReferenceNo": "String", // Ifortepay's transaction ID
      "serviceCode": "String", // e.g., 91 for online, 92 for PoS
      "paymentDetails": {
        "amount": { "value": "String", "currency": "String" },
        "totalAmount": { "value": "String", "currency": "String" }
      },
      "paymentChannel": "String",
      "paymentSystem": "String",
      "itemDetails": [
        {
          "itemId": "String", // SKU or fee type (e.g., _shippingfee, adminfee)
          "name": "String",
          "amount": { "value": "String", "currency": "IDR" },
          "url": "String",
          "imageUrl": "String",
          "category": "enum",
          "qty": "Integer",
          "parentType": "SELLER",
          "parentId": "String"
        }
      ],
      "tenure": "String", // e.g., 30_days, 3_months (only if paid)
      "latestTransactionStatus": "String", // 00: Success, 01: Initiated, 04: Refunded, 05: Canceled, 07: Not found/Expired
      "transactionStatusDesc": "String",
      "createdAt": "String",
      "paidTime": "String",
      "customerDetails": {}
    }
  9. Understand the BNPL transaction status response

    When querying the /v1.0/bnpl/check-transaction-status endpoint, the response contains detailed information about the payment state, including transaction IDs, payment amounts, and itemized details.

    Key status indicators include the latestTransactionStatus field:

    • 00: Success
    • 01: Initiated
    • 04: Refunded
    • 05: Canceled
    • 07: Not found (includes expired payments)

    Important constraints:

    • Amounts for IDR must include two decimal places (e.g., 10000.00).
    • The tenure field (e.g., 3_months, 6_months) is only returned after a transaction has been paid.
    • itemDetails is an array of objects. For fees, use specific itemId values: _shippingfee, adminfee, taxfee, discount, additionalfee, or insurancefee_.
  10. Integrate multiple payment methods using the Payment Page API

    The Payment Page API allows merchants to generate a single payment page that supports multiple payment methods, including Credit/Debit Cards, E-Wallets (OVO, DANA, ShopeePay, LinkAja, and VIRGO), Virtual Accounts, QRIS, and BNPL (Buy Now Pay Later). This API is recommended for merchants who can use webviews or HTML to display the payment interface and have no restrictions against using a hosted payment page.
  11. Understand QRIS MPM Dynamic vs Static

    QRIS MPM (Merchant Presented Mode) offers two types of QR codes:

    1. QRIS Dynamic: A single-use QR code where the payment amount is pre-defined by the merchant. The amount is automatically displayed to the customer upon scanning.
    2. QRIS Static: A reusable QR code for multiple payments. The customer must manually enter the payment amount. Static codes must be requested from the Operations team.
  12. PaymentGatewaySDK Architectural Design

    The SDK follows Clean Architecture with three layers where dependencies only point inward:

    • Presentation: Renders UI and manages state (e.g., PaymentScreen, PaymentViewModel, CardState).
    • Domain: Contains business rules, validation, and models (e.g., PaymentRequest, PaymentResponse, CardDetails, TLVParser).
    • Data: Handles external communication (e.g., PaymentGateway, HTTP engines, NFC managers).

    Key Decisions:

    • Platform Boundaries: Uses expect/actual for getHttpEngine() (OkHttp/Darwin) and getNFCManager() (NfcAdapter/CoreNFC).
    • Single Result Contract: Both platforms return a unified PaymentSdkResult regardless of internal API response codes.
    • Runtime Independence: The SDK communicates directly with the iFortePay API. The merchant backend is only needed for issuing credentials and receiving asynchronous webhooks.