> This page is for Cash App Pay Partner API.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.cash.app/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.cash.app/_mcp/server.

# Retrieve payout

GET https://api.cash.app/network/v1/payouts/{payout_id}

Payouts is an **early access** feature. We're actively improving this API based on your feedback.

Early access features come with some caveats:

* May evolve rapidly, requiring integration updates
* Not subject to our 10 year version support policy
* Not subject to SLAs (unless specified in a contract)

Retrieves a payout by its ID.

**This endpoint is not rate-limited.**

Scopes: `PAYOUTS_READ`

Reference: https://developers.cash.app/cash-app-pay-partner-api/api-reference/network-api/retrieve-payout

## Servers

- `https://api.cash.app/network/v1` (Production, default)
- `https://sandbox.api.cash.app/network/v1` (Sandbox)

## Request

### Path parameters

- `payout_id` (string, required) — The ID of the payout to retrieve.

## Response

### 200

OK

- `payout` (Payout, required)

## Errors

### 404 Retrieve Payout Request Not Found Error

Not Found

- `errors` (list of Error, required)

## Types

### Payout

- `payout_id` (string, required) — Unique identifier for this payout issued by Cash App. Min length: `1` Max length: `128`
- `grant_id` (string, required) — ID of the grant used to create this payout. Min length: `1` Max length: `256`
- `amount` (integer, required) — The amount of money to pay, in the lowest denomination of currency on the payout. This is the _original_ amount authorized when the payout was created. Min value: `1`
- `currency` (enum, required) — Indicates the country associated with an entity. Values are from the [ISO-4217 Alpha-3](https://www.iso.org/iso-4217-currency-codes.html) specification. Current values: - `USD`: United States Dollar
  - Allowed values: `USD`
- `status` (enum, required) — The step of the payout processing lifecycle that this payout is currently at. - `CAPTURED` - Payout is captured and funds have been sent - `DECLINED` - Payout was declined - `AUTHORIZED` - Payout is authorized but not yet captured - `INITIATED` - Payout has been created but no money movement has happened yet - `VOIDED` - Payout authorization was released and funds were not sent
  - Allowed values: `CAPTURED`, `DECLINED`, `AUTHORIZED`, `INITIATED`, `VOIDED`
- `merchant_id` (string, required) — ID of the merchant that made this payout. Min length: `1` Max length: `128`
- `purpose` (enum, required) — The purpose or intent of the payout.
  - Allowed values: `SERVICES`, `EARNED_WAGE_ACCESS`
- `customer_id` (string, optional) — ID of the customer that received this payout. Min length: `1` Max length: `128`
- `authorized_amount` (integer, optional) — The amount of money on this payout that has been authorized. The amount will be in the lowest denomination of the currency on the payout. Min value: `0`
- `captured_amount` (integer, optional) — The amount of money on this payout that has been allocated for settlement. The amount will be in the lowest denomination of the currency on the payout. Min value: `0`
- `declined_amount` (integer, optional) — The amount of money on this payout that was declined. The amount will be in the lowest denomination of the currency on the payout. Min value: `0`
- `voided_amount` (integer, optional) — The amount of money on this payout that is no longer authorized and has been released. The amount will be in the lowest denomination of the currency on the payout. Min value: `0`
- `reference_id` (string, optional) — A user-defined identifier for this payout, typically used to associate the payout with a record in an external system. Min length: `1` Max length: `1024`
- `fee_amount` (double, optional) — The total fee amount that was charged to the merchant for processing this payout.
- `fee_rate` (FeeRate, optional) — The breakdown of the fee that was charged to the merchant for processing this payout.
- `note` (string, optional) — A note about the payout that will be shown to the customer. Min length: `1` Max length: `1024`
- `metadata` (map from string to string, optional) — Freeform key-value pairs of arbitrary data associated with this resource. Keys and values must be passed as strings and not contain any personally identifiable information (PII). Min keys: `0` Max keys: `50` > Note: Nested keys are not supported.
- `decline_errors` (list of Error, optional) — If the payout was declined, contains a list of the reasons why it was declined. Min number of items: `1`

### Error

Represents an error encountered during a request to the API.

- `category` (enum, required) — The high-level reason the error occurred.
  - Allowed values: `API_ERROR`, `AUTHENTICATION_ERROR`, `BRAND_ERROR`, `DISPUTE_ERROR`, `MERCHANT_ERROR`, `INVALID_REQUEST_ERROR`, `PAYMENT_PROCESSING_ERROR`, `RATE_LIMIT_ERROR`, `WEBHOOK_ERROR`, `API_KEY_ERROR`, `GRANT_ERROR`
- `code` (string, required) — A unique identifier for the specific type of error that occurred. For more information, see [Error Code Reference](/cash-app-pay-partner-api/guides/technical-guides/api-fundamentals/errors/error-code-reference). Min length: `1`
- `detail` (string, optional) — Human-readable description of why the error occurred and how to resolve it. Min length: `1`
- `field` (string, optional) — The field in the request that caused the error, using array and object dot notation. Min length: `1`

### FeeRate

A fee rate contains the components of a fee charged by Cash App to partners for a given payment.

- `basis_points` (integer, optional) — The variable fee charged for processing the payment expressed as 1/100th of a percentage.
- `fixed_amount` (integer, optional) — The amount charged for processing the payment, in the lowest denomination of currency on the payment. **Note: The currency for the fee is found on the fee plan.**

## Examples

**Response**

```json
{
  "payout": {
    "payout_id": "CAPO_4nn21zy6t0v2yhqg5bvhk7xkq",
    "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
    "amount": 1500,
    "currency": "USD",
    "status": "CAPTURED",
    "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
    "purpose": "SERVICES",
    "customer_id": "CST_AQmxh4y_QGoNNIG5NUw0jttqyYedL1LklACQdyJ3H-Vs6WmLtP6A_C7XjQNohvY",
    "authorized_amount": 1500,
    "captured_amount": 1500,
    "declined_amount": 0,
    "voided_amount": 0,
    "reference_id": "external-id",
    "fee_amount": 50,
    "fee_rate": {
      "basis_points": 160,
      "fixed_amount": 20
    },
    "note": "Payment for consulting work completed in January",
    "metadata": {
      "key": "value"
    },
    "decline_errors": [
      {
        "category": "INVALID_REQUEST_ERROR",
        "code": "MISSING_REQUIRED_FIELD",
        "detail": "Missing required parameter.",
        "field": "field_a[2].field_b"
      }
    ]
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.cash.app/network/v1/payouts/CAPO_4nn21zy6t0v2yhqg5bvhk7xkq"

response = requests.get(url)

print(response.json())
```

```javascript
const url = 'https://api.cash.app/network/v1/payouts/CAPO_4nn21zy6t0v2yhqg5bvhk7xkq';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.cash.app/network/v1/payouts/CAPO_4nn21zy6t0v2yhqg5bvhk7xkq"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.cash.app/network/v1/payouts/CAPO_4nn21zy6t0v2yhqg5bvhk7xkq")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.cash.app/network/v1/payouts/CAPO_4nn21zy6t0v2yhqg5bvhk7xkq")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.cash.app/network/v1/payouts/CAPO_4nn21zy6t0v2yhqg5bvhk7xkq');

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.cash.app/network/v1/payouts/CAPO_4nn21zy6t0v2yhqg5bvhk7xkq");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cash.app/network/v1/payouts/CAPO_4nn21zy6t0v2yhqg5bvhk7xkq")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```