Page cover

Processing Mint IDRX Requests

The typical flow to process mint requests from your user

Using a user account's API key, you can process mint requests for the specified user. To do so, you can use the POST /api/transaction/mint-request endpoint. Here is an example implementation.

Check this page to see the list of chains where IDRX is available

  • The balance will be processed and credited to `destinationWalletAddress` max 24 hours after your request is submitted.

  • Minimum transaction for IDRX is Rp20,000 IDR

  • Maximum transaction for IDRX is 1,000,000,000 IDR.

  • For transactions more than the maximum limit, please send your request to [email protected] to be processed.

  • The transaction will be automatically canceled if you have not made a payment within 24 hours.

  • IDRX is not responsible for deposit errors from incorrect Virtual Account numbers. Refunds for payments made to Virtual Account numbers under a different name will be processed within 14 business days.

Overview

A mint request flows through two independent state machines:

  1. Payment — tracked by paymentStatus. Reflects the state of the fiat payment (VA, QRIS, or hosted checkout).

  2. Minting — tracked by userMintStatus. Reflects the on-chain delivery of IDRX (or other token) to the destination wallet.

Both fields are returned by the Transaction History API and must be tracked together to determine the final outcome.

Step 1 — Create the Mint Request

Use your API key to call:

POST /api/transaction/mint-request

Example Implementation

Example Response

amount is the final amount paid by the user after fees. Store merchantOrderId in your database — it is required for status tracking and reconciliation.

The user then completes payment using paymentUrl.

For mobile or white-label integrations that skip the hosted checkout page, see:

  • Flow B — Direct Payment : Link


Step 2 — Track the Status

Query Transaction History using merchantOrderId.

Example Request

Example Response

The two fields that matter for integrations are:

Field
Purpose

paymentStatus

Fiat payment status

userMintStatus

Blockchain minting status


paymentStatus Values

Value
Meaning

WAITING_FOR_PAYMENT

Mint request created and awaiting payment

PAID

Payment confirmed

EXPIRED

Payment window expired before payment was received


userMintStatus Values

Value
Meaning

NOT_AVAILABLE

No minting activity yet

PROCESSING

Payment confirmed and minting in progress

MINTED

Tokens successfully delivered

REJECTED

Request rejected after review

REFUND

Payment refunded

userMintStatus never becomes FAILED. Failed mint attempts are retried internally until resolved.


Transaction Lifecycle

Stage

paymentStatus

userMintStatus

Terminal

Awaiting payment

WAITING_FOR_PAYMENT

NOT_AVAILABLE

No

Paid, minting

PAID

PROCESSING

No

Success

PAID

MINTED

Yes

Payment expired

EXPIRED

NOT_AVAILABLE

Yes

Refunded

PAID

REFUND

Yes

Rejected

PAID

REJECTED

Yes

Lifecycle Diagram


Step 3 — Reconcile

There are two ways to know a transaction has reached its final state:

  1. Webhook callback (recommended) — your backend receives an HTTP POST when the transaction settles. See Webhook Callback.

  2. Polling — call the Transaction History endpoint from Step 2 until you reach a terminal state.

A reference reconciliation loop:


Edge Case — Payment Succeeded but Mint Still Processing

If:

persists longer than a few minutes, the blockchain delivery did not complete on the first attempt.

The transaction is still being handled internally by IDRX operations.

The final outcome will eventually become one of:

  • MINTED

  • REFUND

Do not timeout the transaction on your side.

Continue polling until a terminal state is reached.


Edge Case — Customer Pays After Expiry

If a customer pays after expiryPeriod has elapsed, the bank network will usually reverse the payment automatically.

Late payments are not credited.

Create a new mint request if the customer wants to retry.


Edge Case — Wrong Sender Name

For VA payments, the bank sender name must match the customer name registered on the IDRX account.

Mismatched payments are refunded within 14 business days.


  • Poll every 5 seconds during the first 5 minutes

  • Then back off to every 30 seconds

  • Stop polling after reaching a terminal state

  • Prefer webhook callbacks for production systems

After a successful payment, IDRX tokens will be minted to the specified wallet address. To check the status of the transaction, you can use the Transaction History API. Next, we will explore on processing redeem requests.

Last updated