The transaction status endpoint allows you to check the current status and details of a transaction using the payment reference ID from the widget session.
GET /v1/transactions/:transactionId/status
Check the status of a transaction using the payment reference ID.
X-API-Key: your_api_key_here
Path Parameters
| Parameter | Type | Required | Description |
|---|
transactionId | string | Yes | Payment reference ID (sessionId) |
Response
{
"transactionId": "364d2ed2X3jpd4b299240077fbf23c20",
"paymentStatus": "COMPLETED",
"transactionStatus": "COMPLETED",
"transactionHash": "0xede81a00c118566bfa793d48ecbcaa3d2497b7f25a142f0a408e5bbffda86a15",
"amount": "21.5",
"currency": "USD",
"convertedAmount": "20.26",
"convertedCurrency": "USDC",
"paymentMethod": "card",
"destinationAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f8E9A7",
"blockchain": "polygon",
"chainId": 80002,
"fees": {
"USD": {
"partnerFee": "0.32",
"totalFee": "1.19",
"networkFee": "0.01",
"transactionFee": "0.86"
}
},
"createdAt": "2025-10-27T11:28:37Z"
}
If widget session was created, but transaction is not initiated, we return this response:
{
"transactionId": "364d2ed2X3jpd4b299240077fbf23c20",
"transactionStatus": "REQUESTED"
}
Please notice that we cache the requested transaction for 3 days.
After this period if transaction is not started, 404 status is returned
Response Fields
| Field | Type | Description |
|---|
transactionId | string | Unique transaction identifier |
paymentStatus | string | Payment processing status (e.g., “COMPLETED”) |
transactionStatus | string | Blockchain transaction status (e.g., “COMPLETED”) |
transactionHash | string | Blockchain transaction hash |
amount | string | Amount paid in fiat (with 18 decimal precision) |
currency | string | Fiat currency used |
convertedAmount | string | Amount received in crypto (with 18 decimal precision) |
convertedCurrency | string | Cryptocurrency purchased |
paymentMethod | string | Payment method used (e.g., “card”) |
destinationAddress | string | Recipient wallet address |
blockchain | string | Blockchain network name |
chainId | number | Numeric blockchain identifier |
fees | object | Fee breakdown with currency-specific amounts |
createdAt | string | Create datetime |
Transaction Status Values
| Status | Description |
|---|
pending | Transaction initiated, awaiting payment |
processing | Payment received, processing transaction |
completed | Transaction successful, crypto delivered |
failed | Transaction failed |
Integration Examples
const response = await axios.get(
'{{base_url}}/v1/transactions/ffcaa6d5aZ2Qc305927a482e18362b72/status',
{
headers: {
'X-API-Key': 'your_api_key_here'
}
}
);
console.log(`Transaction status: ${response.data}`);
Polling for Status Updates
If you’re not using webhooks, you can poll this endpoint to check for status updates:
async function pollTransactionStatus(transactionId, apiKey) {
const checkStatus = async () => {
try {
const response = await fetch(
`{{base_url}}/v1/transactions/${transactionId}/status`,
{
headers: { 'X-API-Key': apiKey }
}
);
const data = await response.json();
console.log(`Status: ${data.status}`);
// Stop polling if transaction is final
if (['completed', 'failed', 'cancelled'].includes(data.status)) {
clearInterval(interval);
return data;
}
} catch (error) {
console.error('Error checking status:', error);
}
};
// Check immediately
checkStatus();
// Then check every 5 seconds
const interval = setInterval(checkStatus, 5000);
// Stop after 30 minutes
setTimeout(() => clearInterval(interval), 30 * 60 * 1000);
}
Polling should be used sparingly. We recommend using webhooks for real-time updates instead of polling. If you must
poll, limit requests to once every 5 seconds.
Error Responses
Transaction Not Found
{
"code": "NOT_FOUND",
"message": "Record not found"
}
Invalid Transaction ID
{
"code": "INVALID_REQUEST",
"message": "Invalid Transaction ID"
}
Best Practices
- Store transaction references securely for future lookups
- Use webhooks instead of polling when possible
- Handle all status types in your integration
- Display blockchain info to users for completed transactions
- Implement proper error handling for failed lookups
The transaction reference is the same as the sessionId returned when creating a widget session. Store this value to
track transactions throughout their lifecycle.