Skip to Content
IndiaPayinPay-in Status & Events (India UPI)

Pay-in Status & Events (India UPI)

GET/v1/h2h/payin-instances/:transactionIdpayin:create

Get the current status of a UPI pay-in. You can also use the shared GET /v1/transactions/:id endpoint, which returns the same rail, railLabel, and currency fields.

Path parameters

FieldTypeRequiredDescription
transactionIdstringYestransactionId from the create response

Example

curl -X GET https://api.transacty.ai/v1/h2h/payin-instances/{transactionId} \
  -H "X-Transacty-Key: $TRANSACTY_KEY" \
  -H "X-Transacty-Timestamp: $TS" \
  -H "X-Transacty-Signature: $SIG" \
  -H "Content-Type: application/json"

Response fields

FieldTypeDescription
transactionIdstringPublic transaction id
statusstringpending, success, or failed
amountstringRequested amount (unit matches currencySymbol at create)
currencystringPay-in side currency from create (e.g. INR or USDT)
settlementCurrencystringMerchant settlement currency — always USDT on success
railstringindia
railLabelstringHuman label for badges
tradeEventIdnumberCurrent UPI lifecycle event (see table)

When polling the portal/transaction detail, the same lifecycle value is available at metadata.payinSnapshot.tradeEventId.

UPI trade events

Use these for progress indicators on a transaction detail view:

Event idMeaningSuggested status
1Trade initiatedProcessing
2Waiting for payment / UPI readyAwaiting payment
3Buyer confirmed, verifyingVerifying
4 or 6CompletedSuccess
5DisputedUnder review (stays pending until resolved)
9ExpiredFailed

A wrong UTR may enter dispute (event 5). Operations may correct and complete it as event 4 without the merchant resubmitting. Do not treat event 5 as a final failure — keep the transaction pending in your UI until it resolves.

India completes on events 4 or 6. Europe (a different product) uses eventId 5 to indicate pay-in success. Do not share success logic between the two rails. See Europe → Pay-in Status & Events.

Last updated on