> ## Documentation Index
> Fetch the complete documentation index at: https://razorpay-881012b3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Fetch Settlement Details

> Fetch settlement details using the Razorpay API.

<div style={{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"0.35rem 0.9rem",border:"1px solid rgba(128,128,128,0.28)",borderRadius:"0.5rem",padding:"0.45rem 0.75rem",margin:"0 0 1.25rem",fontSize:"0.875rem"}}>
  <span style={{fontWeight:600}}>Available in</span>
  <span>🇮🇳 India</span>
  <span>🇸🇬 Singapore</span>
  <span>🇺🇸 United States</span>
</div>

Use this endpoint to fetch details of settlements made to Linked Accounts. You should append `?expand[]=recipient_settlement` as the query parameter to the fetch transfer request. This would return a `settlement` entity and the `transfer` entity.

<RequestExample>
  ```bash Curl theme={null}
  curl -X GET https://api.razorpay.com/v1/transfers?expand[]=recipient_settlement \
  -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET] \ 
  ```

  ```java Java theme={null}
  RazorpayClient razorpay = new RazorpayClient("[YOUR_KEY_ID]", "[YOUR_KEY_SECRET]");

  JSONObject params = new JSONObject();
  params.put("expand[]","recipient_settlement");

  List<Transfer> transfer = razorpay.transfers.fetchAll(params);
  ```

  ```php PHP theme={null}
  $api = new Api($key_id, $secret);

  $api->transfer->all(array('expand[]'=> 'recipient_settlement'));
  ```

  ```javascript Node.js theme={null}
  var instance = new Razorpay({ key_id: 'YOUR_KEY_ID', key_secret: 'YOUR_SECRET' })

  instance.transfers.all({
    expand[] = 'recipient_settlement'  
  })
  ```

  ```python Python theme={null}
  client = razorpay.Client(auth=("YOUR_ID", "YOUR_SECRET"))

  client.transfer.all({
     "expand[]":"recipient_settlement"
  })
  ```

  ```ruby Ruby theme={null}
  require "razorpay"
  Razorpay.setup('YOUR_KEY_ID', 'YOUR_SECRET')

  Razorpay::Transfer.fetch_settlements
  ```

  ```go Go theme={null}
  import ( razorpay "github.com/razorpay/razorpay-go" )
  client := razorpay.NewClient("YOUR_KEY_ID", "YOUR_SECRET")

  data:= map[string]interface{}{
    "expand[]": "recipient_settlement",
  }
  body, err := client.Transfer.All(data, nil)
  ```

  ```csharp .NET theme={null}
  RazorpayClient client = new RazorpayClient("[YOUR_KEY_ID]", "[YOUR_KEY_SECRET]
  ");

  Dictionary<string, object> transferRequest = new Dictionary<string, object>();
  transferRequest.Add("expand[]", "recipient_settlement");

  List<Transfer> transfer = client.Transfer.All(transferRequest);
  ```

  ```bash CLI theme={null}
  razorpay route transfers list --expand recipient_settlement
  ```
</RequestExample>

<ResponseExample>
  ```json Success theme={null}
  {
     "entity":"collection",
     "count":2,
     "items":[
        {
           "id":"trf_LQzChWyKaanhLt",
           "entity":"transfer",
           "status":"processed",
           "source":"pay_LObWTFZaMBE09S",
           "recipient":"acc_LQDB1eV0EnS808",
           "account_code":"sartest",
           "amount":200,
           "currency":"INR",
           "amount_reversed":0,
           "fees":0,
           "tax":0,
           "notes":[

           ],
           "linked_account_notes":[

           ],
           "on_hold":false,
           "on_hold_until":null,
           "settlement_status":"settled",
           "recipient_settlement_id":"setl_LRfWxcxaJyXwde",
           "recipient_settlement":{
              "id":"setl_LRfWxcxaJyXwde",
              "entity":"settlement",
              "amount":200,
              "status":"processed",
              "fees":0,
              "tax":0,
              "utr":"cg8kkuoffu3jpb4k8hgg",
              "created_at":1678854659
           },
           "created_at":1678705600,
           "processed_at":1678705601,
           "error":{
              "code":null,
              "description":null,
              "reason":null,
              "field":null,
              "step":null,
              "id":"trf_LQzChWyKaanhLt",
              "source":null,
              "metadata":null
           },
           "source_channel":"online"
        },
        {
           "id":"trf_Ks9IagO4T2wZ5l",
           "entity":"transfer",
           "status":"processed",
           "source":"pay_Ks9IUPU43z3FRz",
           "recipient":"acc_H9sehmPXd5nd2n",
           "account_code":"Palguna_test",
           "amount":100000,
           "currency":"INR",
           "amount_reversed":0,
           "fees":0,
           "tax":0,
           "notes":[

           ],
           "linked_account_notes":[

           ],
           "on_hold":false,
           "on_hold_until":null,
           "settlement_status":"settled",
           "recipient_settlement_id":"setl_KstcJycgGX6lRa",
           "recipient_settlement":{
              "id":"setl_KstcJycgGX6lRa",
              "entity":"settlement",
              "amount":200000,
              "status":"processed",
              "fees":0,
              "tax":0,
              "utr":"ceen24sa13gn9rr3uij0",
              "created_at":1671262362
           },
           "created_at":1671099247,
           "processed_at":1671099247,
           "error":{
              "code":null,
              "description":null,
              "reason":null,
              "field":null,
              "step":null,
              "id":"trf_Ks9IagO4T2wZ5l",
              "source":null,
              "metadata":null
           },
           "source_channel":"online"
        }
     ]
  }
  ```

  ```json Failure theme={null}
  {
     "error":{
        "code":"BAD_REQUEST_ERROR",
        "description":"The api key provided is invalid",
        "source":"NA",
        "step":"NA",
        "reason":"NA",
        "metadata":{

        }
     }
  }
  ```

  ```json Success theme={null}
  {
    "entity": "collection",
    "count": 2,
    "items": [
      {
        "id": "trf_JCu3ZstilY6Whi",
        "entity": "transfer",
        "status": "failed",
        "source": "pay_HWjY9DZSMsbm5E",
        "recipient": "acc_CNo3jSI8OkFJJJ",
        "amount": 100,
        "currency": "MYR",
        "amount_reversed": 0,
        "fees": 0,
        "tax": null,
        "notes": {
          "name": "Nur Aisyah",
          "roll_no": "IEC2011026"
        },
        "linked_account_notes": [
          "roll_no"
        ],
        "on_hold": false,
        "on_hold_until": null,
        "settlement_status": null,
        "recipient_settlement_id": null,
        "recipient_settlement": null,
        "created_at": 1648556539,
        "processed_at": 1648556543,
        "error": {
          "code": "BAD_REQUEST_TRANSFER_INSUFFICIENT_BALANCE",
          "description": "Account does not have sufficient balance to carry out transfer operation",
          "reason": "insufficient_account_balance",
          "field": "amount",
          "step": "transfer_processing",
          "id": "trf_JCu3ZstilY6Whi",
          "source": null,
          "metadata": null
        }
      },
      {
        "id": "trf_JCu3ZsTVSuy7oN",
        "entity": "transfer",
        "status": "failed",
        "source": "pay_HWjY9DZSMsbm5E",
        "recipient": "acc_CPRsN1LkFccllA",
        "amount": 100,
        "currency": "MYR",
        "amount_reversed": 0,
        "fees": 0,
        "tax": null,
        "notes": {
          "name": "Siti Aisyah",
          "roll_no": "IEC2011025"
        },
        "linked_account_notes": [
          "roll_no"
        ],
        "on_hold": true,
        "on_hold_until": 1671222870,
        "settlement_status": null,
        "recipient_settlement_id": null,
        "recipient_settlement": null,
        "created_at": 1648556539,
        "processed_at": 1648556543,
        "error": {
          "code": "BAD_REQUEST_TRANSFER_INSUFFICIENT_BALANCE",
          "description": "Account does not have sufficient balance to carry out transfer operation",
          "reason": "insufficient_account_balance",
          "field": "amount",
          "step": "transfer_processing",
          "id": "trf_JCu3ZsTVSuy7oN",
          "source": null,
          "metadata": null
        }
      }
    ]
  }
  ```

  ```json Failure theme={null}
  {
     "error":{
        "code":"BAD_REQUEST_ERROR",
        "description":"The api key provided is invalid",
        "source":"NA",
        "step":"NA",
        "reason":"NA",
        "metadata":{

        }
     }
  }
  ```
</ResponseExample>

## Query Parameters

<ParamField query="expand" type="string" required>
  Used to retrieve settlement entity along with transfer entity. Supported value is `recipient_settlement`.
</ParamField>

<ParamField query="transfer_type" type="string">
  Applicable only if you are a Razorpay Partner. Controls which transfers are returned based on the destination account and partner configuration. Possible values are:

  * `platform`: Returns transfers excluding those sent to the partner's own Linked Accounts.
  * `regular` (or when the parameter is omitted): The behaviour depends on the partner's `route_partnerships` feature setting:
    * If `route_partnerships` is enabled: Returns transfers sent to the partner's own Linked Accounts.
    * If `route_partnerships` is disabled: Returns all regular transfers associated with the Partner account.

  Descriptions for the optional query parameters are present in the [Pagination & Rate Limiting](/docs/sg/api/understand#pagination) documentation.
</ParamField>

## Response Parameters

<ResponseField name="id" type="string">
  Unique identifier of the transfer.
</ResponseField>

<ResponseField name="entity" type="string">
  The name of the entity. Here, it is `transfer`.
</ResponseField>

<ResponseField name="transfer_status" type="string">
  The status of the transfer. Possible values are:

  * `created`
  * `pending`
  * `processed`
  * `failed`
  * `reversed`
  * `partially_reversed`
</ResponseField>

<ResponseField name="settlement_status" type="string">
  The status of the settlement. Possible values are:

  * `pending`
  * `on_hold`
  * `settled`
</ResponseField>

<ResponseField name="source" type="string">
  Unique identifier of the transfer source. The source can be a `payment` or an `order`.
</ResponseField>

<ResponseField name="recipient" type="string">
  Unique identifier of the transfer destination, that is, the Linked Account.
</ResponseField>

<ResponseField name="amount" type="integer">
  The amount to be transferred to the Linked Account, in paise. For example, for an amount of ₹200.35, the value of this field should be 20035.
</ResponseField>

<ResponseField name="currency" type="string">
  ISO currency code. We support route transfers only in `INR`.
</ResponseField>

<ResponseField name="amount_reversed" type="integer">
  Amount reversed from this transfer for refunds.
</ResponseField>

<ResponseField name="notes" type="json object">
  Set of key-value pairs that can be associated with an entity.  This can be useful for storing additional information about the entity. A maximum of 15 key-value pairs, each of 256 characters (maximum), are supported.
</ResponseField>

<ResponseField name="on_hold" type="boolean">
  Indicates whether the account settlement for transfer is on hold. Possible values:

  * `true`: Puts the settlement on hold.
  * `false`: Releases the settlement.
</ResponseField>

<ResponseField name="on_hold_until" type="integer">
  Timestamp, in Unix, that indicates until when the settlement of the transfer must be put on hold. If no value is passed, the settlement is put on hold indefinitely.
</ResponseField>

<ResponseField name="recipient_settlement_id" type="string">
  Unique identifier of the settlement.
</ResponseField>

<ResponseField name="recipient_settlement" type="array" />

<ResponseField name="id" type="string">
  Unique identifier of the settlement received by the Linked Account.
</ResponseField>

<ResponseField name="entity" type="string">
  Indicates the type of entity. Here, it is `settlement`.
</ResponseField>

<ResponseField name="amount" type="string">
  The settlement amount represented in the smallest unit of the currency passed.
</ResponseField>

<ResponseField name="status" type="string">
  The status of the settlement. Possible values:
  -`processed` - The settlement process was successful.
  -`failed` - The settlement process failed.
</ResponseField>

<ResponseField name="fee" type="integer">
  Fee (including GST) charged by Razorpay.
</ResponseField>

<ResponseField name="tax" type="integer">
  GST charged for the payment.
</ResponseField>

<ResponseField name="utr" type="string">
  Unique identifier received for the settlement from the bank.
</ResponseField>

<ResponseField name="created_at" type="integer">
  Timestamp, in Unix, at which the settlement was created.
</ResponseField>

<ResponseField name="linked_account_notes" type="array">
  List of keys from the `notes` object which needs to be shown to Linked Accounts on their Dashboard. For example, `"region", "city"`. Only the keys will be shown, not values.
</ResponseField>

<ResponseField name="created_at" type="integer">
  Timestamp, in Unix, at which the transfer was created.
</ResponseField>

<ResponseField name="processed_at" type="integer">
  Timestamp, in Unix, at which the transfer was processed.
</ResponseField>

<ResponseField name="error" type="array">
  Provides error details that may occur during transfers.
</ResponseField>

<ResponseField name="code" type="string">
  Type of the error.
</ResponseField>

<ResponseField name="description" type="string">
  Error description.
</ResponseField>

<ResponseField name="field" type="string">
  Name of the parameter in the API request that caused the error.
</ResponseField>

<ResponseField name="source" type="string">
  The point of failure in the specific operation. For example, customer, business and so on.
</ResponseField>

<ResponseField name="step" type="string">
  The stage where the transaction failure occurred. Stages can be different depending on the payment method used to make the transaction.
</ResponseField>

<ResponseField name="reason" type="string">
  The exact error reason. It can be handled programmatically.
</ResponseField>

<ResponseField name="source_channel" type="string">
  Medium through which transfers were created. For example, `online`.
</ResponseField>

## Errors

<AccordionGroup>
  <Accordion title="The api key/secret provided is invalid">
    **Code:** `4xx`

    This error occurs when there is a mismatch between the API credentials passed in the API call and the API credentials generated on the Dashboard.

    **Solution:** Make sure the API Keys are active and entered correctly. Also, there should not be any whitespaces before or after the keys. If you get null as an API response, an invalid `recipient_settlement_id` was passed. Ensure to pass a valid `recipient_settlement_id`, and it belongs to the Linked Account.
  </Accordion>
</AccordionGroup>
