> For the complete documentation index, see [llms.txt](https://blufin360-api-documentation.gitbook.io/blufin360_api_documentation-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blufin360-api-documentation.gitbook.io/blufin360_api_documentation-docs/banking/check-transaction-status.md).

# Check Transaction Status

Fetch the current status of any Fund Transfer or Collection transaction using your `merchant_ref_id`.

The API includes:

* Live transaction status
* Works for payouts & collections
* UTR number when settled
* Idempotent polling safe

#### **Endpoints**

**Staging:** <mark style="color:$primary;">`https://apidev.blufin360.com`</mark>

**Prod:** <mark style="color:$primary;">`https://api.blufin360.com`</mark>

**Path**

POST <mark style="color:$primary;">`/api/v1/banking/transaction-status`</mark>

**Authentication**

Use a JWT access token in the `Authorization` header.

Generate the token using [<mark style="color:$primary;">Generate JWT Access Token (Merchant Login API)</mark>](/blufin360_api_documentation-docs/getting-started/authentication.md). Generate the token using [<mark style="color:$primary;">Authentication</mark>](/blufin360_api_documentation-docs/getting-started/authentication.md).

### Example request

{% tabs %}
{% tab title="Shell" %}

```bash
curl --location 'https://api.blufin360.com/api/v1/banking/fund-transfer' \
  --header 'Authorization: Bearer <accessToken>' \
  --header 'Content-Type: application/json' \
  --data
{    
    "api_request_id": "API_REQ_123",
    "merchant_ref_id": "ORD12345678"
}
```

{% endtab %}

{% tab title="Node" %}

```javascript
const res = await fetch("<ENDPOINT>", {
  method: "POST",
  headers: { Authorization: "Bearer <accessToken>", "Content-Type": "application/json" },
  body: JSON.stringify({ api_request_id: "API_REQ_123", merchant_ref_id: "ORD12345678" }),
});
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

url = "https://api.blufin360.com/api/v1/banking/fund-transfer"
access_token = "<accessToken>"

headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

payload = {
    "api_request_id": "API_REQ_123",
    "merchant_ref_id": "ORD12345678"
}

try:
    response = requests.post(url, headers=headers, json=payload)
    print(f"HTTP Status: {response.status_code}")
    print(f"Response: {response.json()}")
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

func main() {
	accessToken := "<accessToken>"

	url := "https://api.blufin360.com/api/v1/banking/fund-transfer"
	payload := map[string]string{
		"api_request_id":  "API_REQ_123",
		"merchant_ref_id": "ORD12345678",
	}

	jsonPayload, err := json.Marshal(payload)
	if err != nil {
		fmt.Printf("Error marshaling JSON: %v\n", err)
		return
	}

	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonPayload))
	if err != nil {
		fmt.Printf("Error creating request: %v\n", err)
		return
	}

	req.Header.Set("Authorization", "Bearer "+accessToken)
	req.Header.Set("Content-Type", "application/json")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("Error making request: %v\n", err)
		return
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("Error reading response: %v\n", err)
		return
	}

	fmt.Println("Status:", resp.Status)
	fmt.Println("Body:", string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class FundTransfer {
    public static void main(String[] args) {
        String accessToken = "<accessToken>";
        String apiUrl = "https://api.blufin360.com/api/v1/banking/fund-transfer";
        String jsonInputString = "{\n" +
                "    \"api_request_id\": \"API_REQ_123\",\n" +
                "    \"merchant_ref_id\": \"ORD12345678\"\n" +
                "}";
        try {
            URL url = new URL(apiUrl);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST");
            con.setRequestProperty("Authorization", "Bearer " + accessToken);
            con.setRequestProperty("Content-Type", "application/json");
            con.setDoOutput(true);

            try(OutputStream os = con.getOutputStream()) {
                byte[] input = jsonInputString.getBytes("utf-8");
                os.write(input, 0, input.length);
            }

            int code = con.getResponseCode();
            System.out.println("Response Code: " + code);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$accessToken = '<accessToken>';
$apiUrl = 'https://api.blufin360.com/api/v1/banking/fund-transfer';

$data = [
    "api_request_id" => "API_REQ_123",
    "merchant_ref_id" => "ORD12345678"
];
$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_POST => true,
    // --data: The JSON payload
    CURLOPT_POSTFIELDS => json_encode($data),
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $accessToken,
        'Content-Type: application/json'
    ],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
]);

$response = curl_exec($ch);
if (curl_errno($ch)) {
    $error_msg = curl_error($ch);

    echo "cURL Error: " . $error_msg;
} else {
    echo $response;
}
curl_close($ch);
```

{% endtab %}
{% endtabs %}

### Headers

| Header        | Type     | Required | Description                   | Format                                 |
| ------------- | -------- | -------- | ----------------------------- | -------------------------------------- |
| Authorization | `string` | ✅        | Access token for auth         | Authorization: Bearer `<access_token>` |
| Content-Type  | `string` | ✅        | Specifies request body format | application/json                       |

### Request Payload

```json
{    
    "api_request_id": "API_REQ_123",
    "merchant_ref_id": "ORD12345678"
}
```

### Body

| Field             | Type     | Required | Description                                            |
| ----------------- | -------- | -------- | ------------------------------------------------------ |
| api\_request\_id  | `string` | ✅        | Unique request ID (6–50 chars)                         |
| merchant\_ref\_id | `string` | ✅        | Unique merchant reference ID for tracking (6–50 chars) |

### Success Response — <mark style="color:$primary;">200</mark> (example)

```json
{
  "status": "success",
  "status_code": 200,
  "message": "Payout initiated successfully",
  "data": {
    "service_type": "BANKING",
    "service_subtype": "TRANSACTION_STATUS_CHECK",
    "response_code": "TXN-1001",
    "response_message": "Transaction Initiated",
    "transaction_details": {
      "transaction_ref_id": "A1B2C3D4E5F6478899AA112233445566",
      "merchant_ref_id": "ORD12345678",
      "transaction_status": "INITIATED",
      "amount": 1250.50,
      "currency": "INR",
      "transaction_mode": "IMPS",
      "description": "Vendor payout April",
      "utr": null,
      "remarks": null,
      "transfer_type": "EXTERNAL_FUND_TRANSFER",
      "created_at": "2026-04-16T10:15:30.123456+00:00"
    }
  },
  "detail": null
}
```

### Response Metadata

| Field               | Type      | Description                                                                  |
| ------------------- | --------- | ---------------------------------------------------------------------------- |
| status              | `string`  | Indicates the overall result of the API call.                                |
| code / status\_code | `integer` | HTTP status code                                                             |
| message             | `string`  | A summary of the outcome (e.g. `"Transaction status fetched successfully"`). |
| data                | `object`  | Verification response payload                                                |

### Failure Response — <mark style="color:$danger;">400 / 422 / 500</mark>

| Field       | Type      | Description                                                                     |
| ----------- | --------- | ------------------------------------------------------------------------------- |
| status      | `string`  | Indicates the overall result of the API call. Returns an `error` for a failure. |
| status code | `integer` | Error status code                                                               |
| message     | `string`  | A summary of the outcome (e.g. `"Transaction status fetch unsuccessful"`).      |
| error       | `object`  | Error details                                                                   |

**Common Error**

{% hint style="warning" %}
Please rely on the **response\_code** field to determine the final outcome of the transaction. While the **transaction\_status** and **response\_message** provide a general indication.
{% endhint %}
