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:
Payment — tracked by
paymentStatus. Reflects the state of the fiat payment (VA, QRIS, or hosted checkout).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-requestExample 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:
paymentStatus
Fiat payment status
userMintStatus
Blockchain minting status
adminMintStatus is an internal operational field and is not part of the public API contract.
Do not build integration logic around it.
paymentStatus Values
WAITING_FOR_PAYMENT
Mint request created and awaiting payment
PAID
Payment confirmed
EXPIRED
Payment window expired before payment was received
userMintStatus Values
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:
Webhook callback (recommended) — your backend receives an HTTP POST when the transaction settles. See Webhook Callback.
Polling — call the Transaction History endpoint from Step 2 until you reach a terminal state.
A reference reconciliation loop:
Always re-fetch transaction state from Transaction History before crediting users. Treat webhook payloads as untrusted input.
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:
MINTEDREFUND
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.
Recommended Polling Cadence
Poll every
5 secondsduring the first 5 minutesThen back off to every
30 secondsStop 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
