> 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.

# Create request chain

POST https://api.cash.app/management/v1/request-chains
Content-Type: application/json

Executes multiple requests, grouped into "chains", in a single call. The API Client (Client) can use multiple chains and specify sub-requests within each chain to run sequentially or in parallel. However the chains, themselves, will only run sequentially.

### Accessing a previous response's value

Clients can access a previous response's value by using the format: `$[previous request's uid]:[key path]`. Clients can use this in the value fields of:

* `requests[].body`
* `requests[].path_params`
* `requests[].query_params`

The request's path `requests[].path` has an extra step to access a previous response's value. In the request's path, the Client will first refer to a key in the `requests[].path_params` field using the format: `{[path_params key name]}`. From there `requests[].path_params` can use the pattern described in **Accessing a previous response's value** to obtain a previous response's value.

The initial security headers will be passed to all requests.

Scopes are not required for this endpoint. However, the API key must contain the appropriate scopes required by the individual requests to execute.

For FAQs and performance improvement details, visit [Optimizing Performance with Request Chaining](../docs/partner-onboarding/optimizing-performance-with-request-chaining.md).

Reference: https://developers.cash.app/cash-app-pay-partner-api/api-reference/management-api/create-request-chain

## Servers

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

## Request

### Body (application/json)

This endpoint expects an object.

- `requests` (list of RequestChainsPostRequestBodyContentApplicationJsonSchemaRequestsItems, required) — Requests to execute
- `chains` (list of RequestChainsPostRequestBodyContentApplicationJsonSchemaChainsItems, required) — Chains control the order and execution modes of requests

## Response

### 201

Created

- `responses` (list of Response, required)

## Errors

### 400 Bad Request Error

Bad Request

- `errors` (list of Error, required) — A list of errors that occurred while processing the request. Min number of items: `1`

## Types

### RequestChainsPostRequestBodyContentApplicationJsonSchemaRequestsItems

- `uid` (string, required) — Unique identifier for the request
- `method` (enum, required) — HTTP method of the request
  - Allowed values: `GET`, `POST`, `PATCH`, `PUT`, `DELETE`
- `path` (string, required) — URL path to call. Use format `{path_params key name}` to add variable path parameters.
- `path_params` (RequestChainsPostRequestBodyContentApplicationJsonSchemaRequestsItemsPathParams, optional) — A map of path parameters. The keys represent variables from the `path`. The value fields allow for **Accessing a previous response's value**.
- `query_params` (RequestChainsPostRequestBodyContentApplicationJsonSchemaRequestsItemsQueryParams, optional) — A map of query parameters. The value fields allow for **Accessing a previous response's value**.
- `body` (RequestChainsPostRequestBodyContentApplicationJsonSchemaRequestsItemsBody, optional) — The body that is required for the requested endpoint. The value fields allow for **Accessing a previous response's value**.

### RequestChainsPostRequestBodyContentApplicationJsonSchemaChainsItems

- `requests` (list of RequestChainsPostRequestBodyContentApplicationJsonSchemaChainsItemsRequestsItems, required)
- `execution_mode` (enum, required) — Execution mode of the requests in a chain
  - Allowed values: `SEQUENTIAL`, `PARALLEL`

### Response

- `request_uid` (string, required) — Unique identifier for the request
- `execution_status` (enum, required) — Execution status of the request
  - Allowed values: `EXECUTED`, `NOT_STARTED`
- `path` (string, required) — URL path that was called
- `method` (enum, required) — HTTP method of the request
  - Allowed values: `GET`, `POST`, `PATCH`, `PUT`, `DELETE`
- `status_code` (integer, optional) — Status code of the request
- `body` (ResponseBody, optional) — Response body of the requested endpoint
- `completed_at` (datetime, optional) — When the request was completed, in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339) format (UTC).

### 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. See the Error Code Reference for more information. 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`

### RequestChainsPostRequestBodyContentApplicationJsonSchemaRequestsItemsPathParams

A map of path parameters. The keys represent variables from the `path`. The value fields allow for **Accessing a previous response's value**.

### RequestChainsPostRequestBodyContentApplicationJsonSchemaRequestsItemsQueryParams

A map of query parameters. The value fields allow for **Accessing a previous response's value**.

### RequestChainsPostRequestBodyContentApplicationJsonSchemaRequestsItemsBody

The body that is required for the requested endpoint. The value fields allow for **Accessing a previous response's value**.

### RequestChainsPostRequestBodyContentApplicationJsonSchemaChainsItemsRequestsItems

- `uid` (string, required) — Unique identifier for the request to execute

### ResponseBody

Response body of the requested endpoint

## Examples

### Create brand -> create merchant -> retrieve brand -> list brands

**Request**

```json
{
  "requests": [
    {
      "uid": "request_1",
      "method": "POST",
      "path": "/network/v1/brands",
      "body": {
        "brand": {
          "name": "Brand Name",
          "reference_id": "reference_id"
        },
        "idempotency_key": "idempotency_key"
      }
    },
    {
      "uid": "request_2",
      "method": "POST",
      "path": "/network/v1/merchants",
      "body": {
        "idempotency_key": "idempotency_key",
        "merchant": {
          "address": {
            "country": "US"
          },
          "brand_id": "$request_1:brand.id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "name": "Merchant Name",
          "reference_id": "reference_id"
        }
      }
    },
    {
      "uid": "request_3",
      "method": "GET",
      "path": "/network/v1/brands/{brandId}",
      "path_params": {
        "brandId": "$request_1:brand.id"
      }
    },
    {
      "uid": "request_4",
      "method": "GET",
      "path": "/network/v1/brands",
      "query_params": {
        "limit": "1"
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        },
        {
          "uid": "request_3"
        },
        {
          "uid": "request_4"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}
```

**Response**

```json
{
  "responses": [
    {
      "request_uid": "request_1",
      "execution_status": "EXECUTED",
      "path": "/network/v1/brands",
      "method": "POST",
      "status_code": 201,
      "body": {
        "brand": {
          "created_at": "2023-01-01T00:00:00Z",
          "id": "BRAND_brand-id",
          "metadata": {},
          "name": "Brand Name",
          "reference_id": "reference_id",
          "updated_at": "2023-01-01T00:00:00Z"
        }
      },
      "completed_at": "2023-01-01T00:00:00Z"
    },
    {
      "request_uid": "request_2",
      "execution_status": "EXECUTED",
      "path": "/network/v1/merchants",
      "method": "POST",
      "status_code": 201,
      "body": {
        "merchant": {
          "address": {
            "country": "US"
          },
          "brand_id": "BRAND_brand-id",
          "category": "5432",
          "country": "US",
          "created_at": "2023-01-01T00:00:00Z",
          "currency": "USD",
          "id": "MMI_merchant-id",
          "metadata": {},
          "name": "Merchant Name",
          "reference_id": "reference_id",
          "status": "ACTIVE",
          "updated_at": "2023-01-01T00:00:00Z"
        }
      },
      "completed_at": "2023-01-01T00:00:00Z"
    },
    {
      "request_uid": "request_3",
      "execution_status": "EXECUTED",
      "path": "/network/v1/brands/BRAND_brand-id",
      "method": "GET",
      "status_code": 200,
      "body": {
        "brand": {
          "created_at": "2023-01-01T00:00:00Z",
          "id": "BRAND_brand-id",
          "metadata": {},
          "name": "Brand Name",
          "profile_image_url": "https://example.com",
          "reference_id": "reference_id",
          "updated_at": "2023-01-01T00:00:00Z"
        }
      },
      "completed_at": "2023-01-01T00:00:00Z"
    },
    {
      "request_uid": "request_4",
      "execution_status": "EXECUTED",
      "path": "/network/v1/brands?limit=1",
      "method": "GET",
      "status_code": 200,
      "body": {
        "brands": [
          {
            "color": "#ffffff",
            "created_at": "2023-01-01T00:00:00Z",
            "id": "BRAND_brand-id",
            "metadata": {},
            "name": "Brand Name",
            "profile_image_url": "https://example.com",
            "reference_id": "reference_id",
            "updated_at": "2023-01-01T00:00:00Z"
          }
        ],
        "cursor": "example-cursor"
      },
      "completed_at": "2023-01-01T00:00:00Z"
    }
  ]
}
```

**SDK Code**

```python Create brand -> create merchant -> retrieve brand -> list brands
import requests

url = "https://api.cash.app/management/v1/request-chains"

payload = {
    "requests": [
        {
            "uid": "request_1",
            "method": "POST",
            "path": "/network/v1/brands",
            "body": {
                "brand": {
                    "name": "Brand Name",
                    "reference_id": "reference_id"
                },
                "idempotency_key": "idempotency_key"
            }
        },
        {
            "uid": "request_2",
            "method": "POST",
            "path": "/network/v1/merchants",
            "body": {
                "idempotency_key": "idempotency_key",
                "merchant": {
                    "address": { "country": "US" },
                    "brand_id": "$request_1:brand.id",
                    "category": "5432",
                    "country": "US",
                    "currency": "USD",
                    "name": "Merchant Name",
                    "reference_id": "reference_id"
                }
            }
        },
        {
            "uid": "request_3",
            "method": "GET",
            "path": "/network/v1/brands/{brandId}",
            "path_params": { "brandId": "$request_1:brand.id" }
        },
        {
            "uid": "request_4",
            "method": "GET",
            "path": "/network/v1/brands",
            "query_params": { "limit": "1" }
        }
    ],
    "chains": [
        {
            "requests": [{ "uid": "request_1" }, { "uid": "request_2" }, { "uid": "request_3" }, { "uid": "request_4" }],
            "execution_mode": "SEQUENTIAL"
        }
    ]
}
headers = {
    "Accept": "Accept",
    "User-Agent": "User-Agent",
    "X-Region": "X-Region",
    "X-Signature": "X-Signature",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Create brand -> create merchant -> retrieve brand -> list brands
const url = 'https://api.cash.app/management/v1/request-chains';
const options = {
  method: 'POST',
  headers: {
    Accept: 'Accept',
    'User-Agent': 'User-Agent',
    'X-Region': 'X-Region',
    'X-Signature': 'X-Signature',
    'Content-Type': 'application/json'
  },
  body: '{"requests":[{"uid":"request_1","method":"POST","path":"/network/v1/brands","body":{"brand":{"name":"Brand Name","reference_id":"reference_id"},"idempotency_key":"idempotency_key"}},{"uid":"request_2","method":"POST","path":"/network/v1/merchants","body":{"idempotency_key":"idempotency_key","merchant":{"address":{"country":"US"},"brand_id":"$request_1:brand.id","category":"5432","country":"US","currency":"USD","name":"Merchant Name","reference_id":"reference_id"}}},{"uid":"request_3","method":"GET","path":"/network/v1/brands/{brandId}","path_params":{"brandId":"$request_1:brand.id"}},{"uid":"request_4","method":"GET","path":"/network/v1/brands","query_params":{"limit":"1"}}],"chains":[{"requests":[{"uid":"request_1"},{"uid":"request_2"},{"uid":"request_3"},{"uid":"request_4"}],"execution_mode":"SEQUENTIAL"}]}'
};

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

```go Create brand -> create merchant -> retrieve brand -> list brands
package main

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

func main() {

	url := "https://api.cash.app/management/v1/request-chains"

	payload := strings.NewReader("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"Brand Name\",\n          \"reference_id\": \"reference_id\"\n        },\n        \"idempotency_key\": \"idempotency_key\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"merchant\": {\n          \"address\": {\n            \"country\": \"US\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"Merchant Name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/brands/{brandId}\",\n      \"path_params\": {\n        \"brandId\": \"$request_1:brand.id\"\n      }\n    },\n    {\n      \"uid\": \"request_4\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/brands\",\n      \"query_params\": {\n        \"limit\": \"1\"\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        },\n        {\n          \"uid\": \"request_4\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Accept", "Accept")
	req.Header.Add("User-Agent", "User-Agent")
	req.Header.Add("X-Region", "X-Region")
	req.Header.Add("X-Signature", "X-Signature")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Create brand -> create merchant -> retrieve brand -> list brands
require 'uri'
require 'net/http'

url = URI("https://api.cash.app/management/v1/request-chains")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'Accept'
request["User-Agent"] = 'User-Agent'
request["X-Region"] = 'X-Region'
request["X-Signature"] = 'X-Signature'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"Brand Name\",\n          \"reference_id\": \"reference_id\"\n        },\n        \"idempotency_key\": \"idempotency_key\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"merchant\": {\n          \"address\": {\n            \"country\": \"US\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"Merchant Name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/brands/{brandId}\",\n      \"path_params\": {\n        \"brandId\": \"$request_1:brand.id\"\n      }\n    },\n    {\n      \"uid\": \"request_4\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/brands\",\n      \"query_params\": {\n        \"limit\": \"1\"\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        },\n        {\n          \"uid\": \"request_4\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}"

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

```java Create brand -> create merchant -> retrieve brand -> list brands
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.cash.app/management/v1/request-chains")
  .header("Accept", "Accept")
  .header("User-Agent", "User-Agent")
  .header("X-Region", "X-Region")
  .header("X-Signature", "X-Signature")
  .header("Content-Type", "application/json")
  .body("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"Brand Name\",\n          \"reference_id\": \"reference_id\"\n        },\n        \"idempotency_key\": \"idempotency_key\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"merchant\": {\n          \"address\": {\n            \"country\": \"US\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"Merchant Name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/brands/{brandId}\",\n      \"path_params\": {\n        \"brandId\": \"$request_1:brand.id\"\n      }\n    },\n    {\n      \"uid\": \"request_4\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/brands\",\n      \"query_params\": {\n        \"limit\": \"1\"\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        },\n        {\n          \"uid\": \"request_4\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")
  .asString();
```

```php Create brand -> create merchant -> retrieve brand -> list brands
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.cash.app/management/v1/request-chains', [
  'body' => '{
  "requests": [
    {
      "uid": "request_1",
      "method": "POST",
      "path": "/network/v1/brands",
      "body": {
        "brand": {
          "name": "Brand Name",
          "reference_id": "reference_id"
        },
        "idempotency_key": "idempotency_key"
      }
    },
    {
      "uid": "request_2",
      "method": "POST",
      "path": "/network/v1/merchants",
      "body": {
        "idempotency_key": "idempotency_key",
        "merchant": {
          "address": {
            "country": "US"
          },
          "brand_id": "$request_1:brand.id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "name": "Merchant Name",
          "reference_id": "reference_id"
        }
      }
    },
    {
      "uid": "request_3",
      "method": "GET",
      "path": "/network/v1/brands/{brandId}",
      "path_params": {
        "brandId": "$request_1:brand.id"
      }
    },
    {
      "uid": "request_4",
      "method": "GET",
      "path": "/network/v1/brands",
      "query_params": {
        "limit": "1"
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        },
        {
          "uid": "request_3"
        },
        {
          "uid": "request_4"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}',
  'headers' => [
    'Accept' => 'Accept',
    'Content-Type' => 'application/json',
    'User-Agent' => 'User-Agent',
    'X-Region' => 'X-Region',
    'X-Signature' => 'X-Signature',
  ],
]);

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

```csharp Create brand -> create merchant -> retrieve brand -> list brands
using RestSharp;

var client = new RestClient("https://api.cash.app/management/v1/request-chains");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "Accept");
request.AddHeader("User-Agent", "User-Agent");
request.AddHeader("X-Region", "X-Region");
request.AddHeader("X-Signature", "X-Signature");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"Brand Name\",\n          \"reference_id\": \"reference_id\"\n        },\n        \"idempotency_key\": \"idempotency_key\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"merchant\": {\n          \"address\": {\n            \"country\": \"US\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"Merchant Name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/brands/{brandId}\",\n      \"path_params\": {\n        \"brandId\": \"$request_1:brand.id\"\n      }\n    },\n    {\n      \"uid\": \"request_4\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/brands\",\n      \"query_params\": {\n        \"limit\": \"1\"\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        },\n        {\n          \"uid\": \"request_4\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Create brand -> create merchant -> retrieve brand -> list brands
import Foundation

let headers = [
  "Accept": "Accept",
  "User-Agent": "User-Agent",
  "X-Region": "X-Region",
  "X-Signature": "X-Signature",
  "Content-Type": "application/json"
]
let parameters = [
  "requests": [
    [
      "uid": "request_1",
      "method": "POST",
      "path": "/network/v1/brands",
      "body": [
        "brand": [
          "name": "Brand Name",
          "reference_id": "reference_id"
        ],
        "idempotency_key": "idempotency_key"
      ]
    ],
    [
      "uid": "request_2",
      "method": "POST",
      "path": "/network/v1/merchants",
      "body": [
        "idempotency_key": "idempotency_key",
        "merchant": [
          "address": ["country": "US"],
          "brand_id": "$request_1:brand.id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "name": "Merchant Name",
          "reference_id": "reference_id"
        ]
      ]
    ],
    [
      "uid": "request_3",
      "method": "GET",
      "path": "/network/v1/brands/{brandId}",
      "path_params": ["brandId": "$request_1:brand.id"]
    ],
    [
      "uid": "request_4",
      "method": "GET",
      "path": "/network/v1/brands",
      "query_params": ["limit": "1"]
    ]
  ],
  "chains": [
    [
      "requests": [["uid": "request_1"], ["uid": "request_2"], ["uid": "request_3"], ["uid": "request_4"]],
      "execution_mode": "SEQUENTIAL"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cash.app/management/v1/request-chains")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```

### Create brand -> create merchant -> create customer request

**Request**

```json
{
  "requests": [
    {
      "uid": "request_1",
      "method": "POST",
      "path": "/network/v1/brands",
      "body": {
        "brand": {
          "name": "Brand Name",
          "reference_id": "reference_id"
        },
        "idempotency_key": "idempotency_key"
      }
    },
    {
      "uid": "request_2",
      "method": "POST",
      "path": "/network/v1/merchants",
      "body": {
        "idempotency_key": "idempotency_key",
        "merchant": {
          "address": {
            "country": "US"
          },
          "brand_id": "$request_1:brand.id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "name": "Merchant Name",
          "reference_id": "reference_id"
        }
      }
    },
    {
      "uid": "request_3",
      "method": "POST",
      "path": "/customer-request/v1/requests",
      "body": {
        "idempotency_key": "idempotency_key",
        "request": {
          "actions": [
            {
              "amount": 2500,
              "currency": "USD",
              "scope_id": "$request_2:merchant.id",
              "type": "ONE_TIME_PAYMENT"
            }
          ],
          "channel": "IN_PERSON",
          "customer_metadata": {
            "reference_id": "string"
          },
          "metadata": {
            "key": "value"
          },
          "redirect_url": "https://example.com",
          "reference_id": "string"
        }
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        },
        {
          "uid": "request_3"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}
```

**Response**

```json
{
  "responses": [
    {
      "request_uid": "request_1",
      "execution_status": "EXECUTED",
      "path": "/network/v1/brands",
      "method": "POST",
      "status_code": 201,
      "body": {
        "brand": {
          "created_at": "2023-01-01T00:00:00Z",
          "id": "BRAND_brand-id",
          "metadata": {},
          "name": "Brand Name",
          "reference_id": "reference_id",
          "updated_at": "2023-01-01T00:00:00Z"
        }
      },
      "completed_at": "2023-01-01T00:00:00Z"
    },
    {
      "request_uid": "request_2",
      "execution_status": "EXECUTED",
      "path": "/network/v1/merchants",
      "method": "POST",
      "status_code": 201,
      "body": {
        "merchant": {
          "address": {
            "country": "US"
          },
          "brand_id": "BRAND_brand-id",
          "category": "5432",
          "country": "US",
          "created_at": "2023-01-01T00:00:00Z",
          "currency": "USD",
          "id": "MMI_merchant-id",
          "metadata": {},
          "name": "Merchant Name",
          "reference_id": "reference_id",
          "status": "ACTIVE",
          "updated_at": "2023-01-01T00:00:00Z"
        }
      },
      "completed_at": "2023-01-01T00:00:00Z"
    },
    {
      "request_uid": "request_3",
      "execution_status": "EXECUTED",
      "path": "/customer-request/v1/requests",
      "method": "POST",
      "status_code": 201,
      "body": {
        "request": {
          "actions": [
            {
              "amount": 2500,
              "currency": "USD",
              "scope_id": "MMI_merchant-id",
              "type": "ONE_TIME_PAYMENT"
            }
          ],
          "auth_flow_triggers": {
            "desktop_url": "https://pay.cash.app?customerRequestId=GRR_customer-request-id",
            "mobile_url": "https://cash.app/f/GRANTLY_MANAGED_GRANT%3Frequest_id=GRR_customer-request-id&method=mobile_url",
            "qr_code_image_url": "https://api.cash.app/qr/f/GRANTLY_MANAGED_GRANT%3Frequest_id=GRR_customer-request-id&method=qr?rounded=0&format=png",
            "qr_code_svg_url": "https://api.cash.app/qr/f/GRANTLY_MANAGED_GRANT%3Frequest_id=GRR_customer-request-id&method=qr?rounded=0&format=svg",
            "refreshes_at": "2023-01-01T00:00:00Z"
          },
          "channel": "ONLINE",
          "created_at": "2023-01-01T00:00:00Z",
          "customer_metadata": {},
          "expires_at": "2033-01-01T12:20:00Z",
          "id": "GRR_customer-request-id",
          "metadata": {},
          "origin": {
            "id": "string",
            "type": "DIRECT"
          },
          "redirect_url": "https://example.com",
          "reference_id": "external-id",
          "requester_profile": {
            "logo_url": "https://picsum.photos/200",
            "name": "The Sill"
          },
          "status": "PENDING",
          "updated_at": "2023-01-01T00:00:00Z"
        }
      },
      "completed_at": "2023-01-01T00:00:00Z"
    }
  ]
}
```

**SDK Code**

```python Create brand -> create merchant -> create customer request
import requests

url = "https://api.cash.app/management/v1/request-chains"

payload = {
    "requests": [
        {
            "uid": "request_1",
            "method": "POST",
            "path": "/network/v1/brands",
            "body": {
                "brand": {
                    "name": "Brand Name",
                    "reference_id": "reference_id"
                },
                "idempotency_key": "idempotency_key"
            }
        },
        {
            "uid": "request_2",
            "method": "POST",
            "path": "/network/v1/merchants",
            "body": {
                "idempotency_key": "idempotency_key",
                "merchant": {
                    "address": { "country": "US" },
                    "brand_id": "$request_1:brand.id",
                    "category": "5432",
                    "country": "US",
                    "currency": "USD",
                    "name": "Merchant Name",
                    "reference_id": "reference_id"
                }
            }
        },
        {
            "uid": "request_3",
            "method": "POST",
            "path": "/customer-request/v1/requests",
            "body": {
                "idempotency_key": "idempotency_key",
                "request": {
                    "actions": [
                        {
                            "amount": 2500,
                            "currency": "USD",
                            "scope_id": "$request_2:merchant.id",
                            "type": "ONE_TIME_PAYMENT"
                        }
                    ],
                    "channel": "IN_PERSON",
                    "customer_metadata": { "reference_id": "string" },
                    "metadata": { "key": "value" },
                    "redirect_url": "https://example.com",
                    "reference_id": "string"
                }
            }
        }
    ],
    "chains": [
        {
            "requests": [{ "uid": "request_1" }, { "uid": "request_2" }, { "uid": "request_3" }],
            "execution_mode": "SEQUENTIAL"
        }
    ]
}
headers = {
    "Accept": "Accept",
    "User-Agent": "User-Agent",
    "X-Region": "X-Region",
    "X-Signature": "X-Signature",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Create brand -> create merchant -> create customer request
const url = 'https://api.cash.app/management/v1/request-chains';
const options = {
  method: 'POST',
  headers: {
    Accept: 'Accept',
    'User-Agent': 'User-Agent',
    'X-Region': 'X-Region',
    'X-Signature': 'X-Signature',
    'Content-Type': 'application/json'
  },
  body: '{"requests":[{"uid":"request_1","method":"POST","path":"/network/v1/brands","body":{"brand":{"name":"Brand Name","reference_id":"reference_id"},"idempotency_key":"idempotency_key"}},{"uid":"request_2","method":"POST","path":"/network/v1/merchants","body":{"idempotency_key":"idempotency_key","merchant":{"address":{"country":"US"},"brand_id":"$request_1:brand.id","category":"5432","country":"US","currency":"USD","name":"Merchant Name","reference_id":"reference_id"}}},{"uid":"request_3","method":"POST","path":"/customer-request/v1/requests","body":{"idempotency_key":"idempotency_key","request":{"actions":[{"amount":2500,"currency":"USD","scope_id":"$request_2:merchant.id","type":"ONE_TIME_PAYMENT"}],"channel":"IN_PERSON","customer_metadata":{"reference_id":"string"},"metadata":{"key":"value"},"redirect_url":"https://example.com","reference_id":"string"}}}],"chains":[{"requests":[{"uid":"request_1"},{"uid":"request_2"},{"uid":"request_3"}],"execution_mode":"SEQUENTIAL"}]}'
};

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

```go Create brand -> create merchant -> create customer request
package main

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

func main() {

	url := "https://api.cash.app/management/v1/request-chains"

	payload := strings.NewReader("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"Brand Name\",\n          \"reference_id\": \"reference_id\"\n        },\n        \"idempotency_key\": \"idempotency_key\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"merchant\": {\n          \"address\": {\n            \"country\": \"US\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"Merchant Name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"POST\",\n      \"path\": \"/customer-request/v1/requests\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"request\": {\n          \"actions\": [\n            {\n              \"amount\": 2500,\n              \"currency\": \"USD\",\n              \"scope_id\": \"$request_2:merchant.id\",\n              \"type\": \"ONE_TIME_PAYMENT\"\n            }\n          ],\n          \"channel\": \"IN_PERSON\",\n          \"customer_metadata\": {\n            \"reference_id\": \"string\"\n          },\n          \"metadata\": {\n            \"key\": \"value\"\n          },\n          \"redirect_url\": \"https://example.com\",\n          \"reference_id\": \"string\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Accept", "Accept")
	req.Header.Add("User-Agent", "User-Agent")
	req.Header.Add("X-Region", "X-Region")
	req.Header.Add("X-Signature", "X-Signature")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Create brand -> create merchant -> create customer request
require 'uri'
require 'net/http'

url = URI("https://api.cash.app/management/v1/request-chains")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'Accept'
request["User-Agent"] = 'User-Agent'
request["X-Region"] = 'X-Region'
request["X-Signature"] = 'X-Signature'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"Brand Name\",\n          \"reference_id\": \"reference_id\"\n        },\n        \"idempotency_key\": \"idempotency_key\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"merchant\": {\n          \"address\": {\n            \"country\": \"US\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"Merchant Name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"POST\",\n      \"path\": \"/customer-request/v1/requests\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"request\": {\n          \"actions\": [\n            {\n              \"amount\": 2500,\n              \"currency\": \"USD\",\n              \"scope_id\": \"$request_2:merchant.id\",\n              \"type\": \"ONE_TIME_PAYMENT\"\n            }\n          ],\n          \"channel\": \"IN_PERSON\",\n          \"customer_metadata\": {\n            \"reference_id\": \"string\"\n          },\n          \"metadata\": {\n            \"key\": \"value\"\n          },\n          \"redirect_url\": \"https://example.com\",\n          \"reference_id\": \"string\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}"

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

```java Create brand -> create merchant -> create customer request
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.cash.app/management/v1/request-chains")
  .header("Accept", "Accept")
  .header("User-Agent", "User-Agent")
  .header("X-Region", "X-Region")
  .header("X-Signature", "X-Signature")
  .header("Content-Type", "application/json")
  .body("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"Brand Name\",\n          \"reference_id\": \"reference_id\"\n        },\n        \"idempotency_key\": \"idempotency_key\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"merchant\": {\n          \"address\": {\n            \"country\": \"US\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"Merchant Name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"POST\",\n      \"path\": \"/customer-request/v1/requests\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"request\": {\n          \"actions\": [\n            {\n              \"amount\": 2500,\n              \"currency\": \"USD\",\n              \"scope_id\": \"$request_2:merchant.id\",\n              \"type\": \"ONE_TIME_PAYMENT\"\n            }\n          ],\n          \"channel\": \"IN_PERSON\",\n          \"customer_metadata\": {\n            \"reference_id\": \"string\"\n          },\n          \"metadata\": {\n            \"key\": \"value\"\n          },\n          \"redirect_url\": \"https://example.com\",\n          \"reference_id\": \"string\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")
  .asString();
```

```php Create brand -> create merchant -> create customer request
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.cash.app/management/v1/request-chains', [
  'body' => '{
  "requests": [
    {
      "uid": "request_1",
      "method": "POST",
      "path": "/network/v1/brands",
      "body": {
        "brand": {
          "name": "Brand Name",
          "reference_id": "reference_id"
        },
        "idempotency_key": "idempotency_key"
      }
    },
    {
      "uid": "request_2",
      "method": "POST",
      "path": "/network/v1/merchants",
      "body": {
        "idempotency_key": "idempotency_key",
        "merchant": {
          "address": {
            "country": "US"
          },
          "brand_id": "$request_1:brand.id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "name": "Merchant Name",
          "reference_id": "reference_id"
        }
      }
    },
    {
      "uid": "request_3",
      "method": "POST",
      "path": "/customer-request/v1/requests",
      "body": {
        "idempotency_key": "idempotency_key",
        "request": {
          "actions": [
            {
              "amount": 2500,
              "currency": "USD",
              "scope_id": "$request_2:merchant.id",
              "type": "ONE_TIME_PAYMENT"
            }
          ],
          "channel": "IN_PERSON",
          "customer_metadata": {
            "reference_id": "string"
          },
          "metadata": {
            "key": "value"
          },
          "redirect_url": "https://example.com",
          "reference_id": "string"
        }
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        },
        {
          "uid": "request_3"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}',
  'headers' => [
    'Accept' => 'Accept',
    'Content-Type' => 'application/json',
    'User-Agent' => 'User-Agent',
    'X-Region' => 'X-Region',
    'X-Signature' => 'X-Signature',
  ],
]);

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

```csharp Create brand -> create merchant -> create customer request
using RestSharp;

var client = new RestClient("https://api.cash.app/management/v1/request-chains");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "Accept");
request.AddHeader("User-Agent", "User-Agent");
request.AddHeader("X-Region", "X-Region");
request.AddHeader("X-Signature", "X-Signature");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"Brand Name\",\n          \"reference_id\": \"reference_id\"\n        },\n        \"idempotency_key\": \"idempotency_key\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"merchant\": {\n          \"address\": {\n            \"country\": \"US\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"Merchant Name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"POST\",\n      \"path\": \"/customer-request/v1/requests\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"request\": {\n          \"actions\": [\n            {\n              \"amount\": 2500,\n              \"currency\": \"USD\",\n              \"scope_id\": \"$request_2:merchant.id\",\n              \"type\": \"ONE_TIME_PAYMENT\"\n            }\n          ],\n          \"channel\": \"IN_PERSON\",\n          \"customer_metadata\": {\n            \"reference_id\": \"string\"\n          },\n          \"metadata\": {\n            \"key\": \"value\"\n          },\n          \"redirect_url\": \"https://example.com\",\n          \"reference_id\": \"string\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Create brand -> create merchant -> create customer request
import Foundation

let headers = [
  "Accept": "Accept",
  "User-Agent": "User-Agent",
  "X-Region": "X-Region",
  "X-Signature": "X-Signature",
  "Content-Type": "application/json"
]
let parameters = [
  "requests": [
    [
      "uid": "request_1",
      "method": "POST",
      "path": "/network/v1/brands",
      "body": [
        "brand": [
          "name": "Brand Name",
          "reference_id": "reference_id"
        ],
        "idempotency_key": "idempotency_key"
      ]
    ],
    [
      "uid": "request_2",
      "method": "POST",
      "path": "/network/v1/merchants",
      "body": [
        "idempotency_key": "idempotency_key",
        "merchant": [
          "address": ["country": "US"],
          "brand_id": "$request_1:brand.id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "name": "Merchant Name",
          "reference_id": "reference_id"
        ]
      ]
    ],
    [
      "uid": "request_3",
      "method": "POST",
      "path": "/customer-request/v1/requests",
      "body": [
        "idempotency_key": "idempotency_key",
        "request": [
          "actions": [
            [
              "amount": 2500,
              "currency": "USD",
              "scope_id": "$request_2:merchant.id",
              "type": "ONE_TIME_PAYMENT"
            ]
          ],
          "channel": "IN_PERSON",
          "customer_metadata": ["reference_id": "string"],
          "metadata": ["key": "value"],
          "redirect_url": "https://example.com",
          "reference_id": "string"
        ]
      ]
    ]
  ],
  "chains": [
    [
      "requests": [["uid": "request_1"], ["uid": "request_2"], ["uid": "request_3"]],
      "execution_mode": "SEQUENTIAL"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cash.app/management/v1/request-chains")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```

### Upsert brand -> upsert merchant -> create payment

**Request**

```json
{
  "requests": [
    {
      "uid": "request_1",
      "method": "PUT",
      "path": "/network/v1/brands",
      "body": {
        "brand": {
          "name": "brand name",
          "reference_id": "reference_id"
        }
      }
    },
    {
      "uid": "request_2",
      "method": "PUT",
      "path": "/network/v1/merchants",
      "body": {
        "merchant": {
          "address": {
            "address_line_1": "1215 4th Ave",
            "address_line_2": "Suite 2300",
            "administrative_district_level_1": "Washington",
            "country": "US",
            "locality": "Seattle",
            "postal_code": "98161-1001"
          },
          "brand_id": "$request_1:brand.id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "name": "merchant name",
          "reference_id": "reference ID"
        }
      }
    },
    {
      "uid": "request_3",
      "method": "POST",
      "path": "/network/v1/payments",
      "body": {
        "idempotency_key": "idempotency_key",
        "payment": {
          "amount": 100,
          "capture": true,
          "currency": "USD",
          "enrichments": {
            "recurring_series_id": "string"
          },
          "grant_id": "GRG_grant-id",
          "merchant_id": "$request_2:merchant.id",
          "metadata": {
            "key": "value"
          },
          "reference_id": "external-id"
        }
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        },
        {
          "uid": "request_3"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}
```

**Response**

```json
{
  "responses": [
    {
      "request_uid": "request_1",
      "execution_status": "EXECUTED",
      "path": "/network/v1/brands",
      "method": "PUT",
      "status_code": 200,
      "body": {
        "brand": {
          "created_at": "2023-09-06T23:50:11.397Z",
          "id": "BRAND_brand-id",
          "metadata": {},
          "name": "brand name",
          "profile_image_url": "https://example.com",
          "reference_id": "reference_id",
          "updated_at": "2023-09-06T23:50:11.397Z"
        }
      },
      "completed_at": "2023-09-06T23:50:11.397Z"
    },
    {
      "request_uid": "request_2",
      "execution_status": "EXECUTED",
      "path": "/network/v1/merchants",
      "method": "PUT",
      "status_code": 200,
      "body": {
        "merchant": {
          "address": {
            "address_line_1": "1215 4th Ave",
            "address_line_2": "Suite 2300",
            "administrative_district_level_1": "Washington",
            "country": "US",
            "locality": "Seattle",
            "postal_code": "98161-1001"
          },
          "brand_id": "BRAND_brand-id",
          "category": "5432",
          "country": "US",
          "created_at": "2023-09-06T23:50:11.397Z",
          "currency": "USD",
          "id": "MMI_merchant-id",
          "metadata": {},
          "name": "merchant name",
          "reference_id": "reference ID",
          "status": "ACTIVE",
          "updated_at": "2023-09-06T23:50:11.397Z"
        }
      },
      "completed_at": "2023-09-06T23:50:11.397Z"
    },
    {
      "request_uid": "request_3",
      "execution_status": "EXECUTED",
      "path": "/network/v1/payments",
      "method": "POST",
      "status_code": 201,
      "body": {
        "payment": {
          "amount": 100,
          "captured_amount": 100,
          "created_at": "2023-09-06T23:50:11.473Z",
          "currency": "USD",
          "customer_id": "CST_customer-id",
          "decline_errors": [
            {
              "category": "INVALID_REQUEST_ERROR",
              "code": "MISSING_REQUIRED_FIELD",
              "detail": "Missing required parameter.",
              "field": "field_a[2].field_b"
            }
          ],
          "enrichments": {
            "recurring_series_id": "string"
          },
          "grant_id": "GRG_grant-id",
          "id": "PWC_payment-id",
          "merchant_id": "MMI_merchant-id",
          "metadata": {},
          "net_amount": 100,
          "reference_id": "external-id",
          "refunded_amount": 0,
          "status": "AUTHORIZED",
          "updated_at": "2023-09-06T23:50:11.473Z",
          "voided_amount": 0
        }
      },
      "completed_at": "2023-09-06T23:50:11.473Z"
    }
  ]
}
```

**SDK Code**

```python Upsert brand -> upsert merchant -> create payment
import requests

url = "https://api.cash.app/management/v1/request-chains"

payload = {
    "requests": [
        {
            "uid": "request_1",
            "method": "PUT",
            "path": "/network/v1/brands",
            "body": { "brand": {
                    "name": "brand name",
                    "reference_id": "reference_id"
                } }
        },
        {
            "uid": "request_2",
            "method": "PUT",
            "path": "/network/v1/merchants",
            "body": { "merchant": {
                    "address": {
                        "address_line_1": "1215 4th Ave",
                        "address_line_2": "Suite 2300",
                        "administrative_district_level_1": "Washington",
                        "country": "US",
                        "locality": "Seattle",
                        "postal_code": "98161-1001"
                    },
                    "brand_id": "$request_1:brand.id",
                    "category": "5432",
                    "country": "US",
                    "currency": "USD",
                    "name": "merchant name",
                    "reference_id": "reference ID"
                } }
        },
        {
            "uid": "request_3",
            "method": "POST",
            "path": "/network/v1/payments",
            "body": {
                "idempotency_key": "idempotency_key",
                "payment": {
                    "amount": 100,
                    "capture": True,
                    "currency": "USD",
                    "enrichments": { "recurring_series_id": "string" },
                    "grant_id": "GRG_grant-id",
                    "merchant_id": "$request_2:merchant.id",
                    "metadata": { "key": "value" },
                    "reference_id": "external-id"
                }
            }
        }
    ],
    "chains": [
        {
            "requests": [{ "uid": "request_1" }, { "uid": "request_2" }, { "uid": "request_3" }],
            "execution_mode": "SEQUENTIAL"
        }
    ]
}
headers = {
    "Accept": "Accept",
    "User-Agent": "User-Agent",
    "X-Region": "X-Region",
    "X-Signature": "X-Signature",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Upsert brand -> upsert merchant -> create payment
const url = 'https://api.cash.app/management/v1/request-chains';
const options = {
  method: 'POST',
  headers: {
    Accept: 'Accept',
    'User-Agent': 'User-Agent',
    'X-Region': 'X-Region',
    'X-Signature': 'X-Signature',
    'Content-Type': 'application/json'
  },
  body: '{"requests":[{"uid":"request_1","method":"PUT","path":"/network/v1/brands","body":{"brand":{"name":"brand name","reference_id":"reference_id"}}},{"uid":"request_2","method":"PUT","path":"/network/v1/merchants","body":{"merchant":{"address":{"address_line_1":"1215 4th Ave","address_line_2":"Suite 2300","administrative_district_level_1":"Washington","country":"US","locality":"Seattle","postal_code":"98161-1001"},"brand_id":"$request_1:brand.id","category":"5432","country":"US","currency":"USD","name":"merchant name","reference_id":"reference ID"}}},{"uid":"request_3","method":"POST","path":"/network/v1/payments","body":{"idempotency_key":"idempotency_key","payment":{"amount":100,"capture":true,"currency":"USD","enrichments":{"recurring_series_id":"string"},"grant_id":"GRG_grant-id","merchant_id":"$request_2:merchant.id","metadata":{"key":"value"},"reference_id":"external-id"}}}],"chains":[{"requests":[{"uid":"request_1"},{"uid":"request_2"},{"uid":"request_3"}],"execution_mode":"SEQUENTIAL"}]}'
};

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

```go Upsert brand -> upsert merchant -> create payment
package main

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

func main() {

	url := "https://api.cash.app/management/v1/request-chains"

	payload := strings.NewReader("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"brand name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"merchant\": {\n          \"address\": {\n            \"address_line_1\": \"1215 4th Ave\",\n            \"address_line_2\": \"Suite 2300\",\n            \"administrative_district_level_1\": \"Washington\",\n            \"country\": \"US\",\n            \"locality\": \"Seattle\",\n            \"postal_code\": \"98161-1001\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"merchant name\",\n          \"reference_id\": \"reference ID\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/payments\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"payment\": {\n          \"amount\": 100,\n          \"capture\": true,\n          \"currency\": \"USD\",\n          \"enrichments\": {\n            \"recurring_series_id\": \"string\"\n          },\n          \"grant_id\": \"GRG_grant-id\",\n          \"merchant_id\": \"$request_2:merchant.id\",\n          \"metadata\": {\n            \"key\": \"value\"\n          },\n          \"reference_id\": \"external-id\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Accept", "Accept")
	req.Header.Add("User-Agent", "User-Agent")
	req.Header.Add("X-Region", "X-Region")
	req.Header.Add("X-Signature", "X-Signature")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Upsert brand -> upsert merchant -> create payment
require 'uri'
require 'net/http'

url = URI("https://api.cash.app/management/v1/request-chains")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'Accept'
request["User-Agent"] = 'User-Agent'
request["X-Region"] = 'X-Region'
request["X-Signature"] = 'X-Signature'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"brand name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"merchant\": {\n          \"address\": {\n            \"address_line_1\": \"1215 4th Ave\",\n            \"address_line_2\": \"Suite 2300\",\n            \"administrative_district_level_1\": \"Washington\",\n            \"country\": \"US\",\n            \"locality\": \"Seattle\",\n            \"postal_code\": \"98161-1001\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"merchant name\",\n          \"reference_id\": \"reference ID\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/payments\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"payment\": {\n          \"amount\": 100,\n          \"capture\": true,\n          \"currency\": \"USD\",\n          \"enrichments\": {\n            \"recurring_series_id\": \"string\"\n          },\n          \"grant_id\": \"GRG_grant-id\",\n          \"merchant_id\": \"$request_2:merchant.id\",\n          \"metadata\": {\n            \"key\": \"value\"\n          },\n          \"reference_id\": \"external-id\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}"

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

```java Upsert brand -> upsert merchant -> create payment
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.cash.app/management/v1/request-chains")
  .header("Accept", "Accept")
  .header("User-Agent", "User-Agent")
  .header("X-Region", "X-Region")
  .header("X-Signature", "X-Signature")
  .header("Content-Type", "application/json")
  .body("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"brand name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"merchant\": {\n          \"address\": {\n            \"address_line_1\": \"1215 4th Ave\",\n            \"address_line_2\": \"Suite 2300\",\n            \"administrative_district_level_1\": \"Washington\",\n            \"country\": \"US\",\n            \"locality\": \"Seattle\",\n            \"postal_code\": \"98161-1001\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"merchant name\",\n          \"reference_id\": \"reference ID\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/payments\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"payment\": {\n          \"amount\": 100,\n          \"capture\": true,\n          \"currency\": \"USD\",\n          \"enrichments\": {\n            \"recurring_series_id\": \"string\"\n          },\n          \"grant_id\": \"GRG_grant-id\",\n          \"merchant_id\": \"$request_2:merchant.id\",\n          \"metadata\": {\n            \"key\": \"value\"\n          },\n          \"reference_id\": \"external-id\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")
  .asString();
```

```php Upsert brand -> upsert merchant -> create payment
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.cash.app/management/v1/request-chains', [
  'body' => '{
  "requests": [
    {
      "uid": "request_1",
      "method": "PUT",
      "path": "/network/v1/brands",
      "body": {
        "brand": {
          "name": "brand name",
          "reference_id": "reference_id"
        }
      }
    },
    {
      "uid": "request_2",
      "method": "PUT",
      "path": "/network/v1/merchants",
      "body": {
        "merchant": {
          "address": {
            "address_line_1": "1215 4th Ave",
            "address_line_2": "Suite 2300",
            "administrative_district_level_1": "Washington",
            "country": "US",
            "locality": "Seattle",
            "postal_code": "98161-1001"
          },
          "brand_id": "$request_1:brand.id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "name": "merchant name",
          "reference_id": "reference ID"
        }
      }
    },
    {
      "uid": "request_3",
      "method": "POST",
      "path": "/network/v1/payments",
      "body": {
        "idempotency_key": "idempotency_key",
        "payment": {
          "amount": 100,
          "capture": true,
          "currency": "USD",
          "enrichments": {
            "recurring_series_id": "string"
          },
          "grant_id": "GRG_grant-id",
          "merchant_id": "$request_2:merchant.id",
          "metadata": {
            "key": "value"
          },
          "reference_id": "external-id"
        }
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        },
        {
          "uid": "request_3"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}',
  'headers' => [
    'Accept' => 'Accept',
    'Content-Type' => 'application/json',
    'User-Agent' => 'User-Agent',
    'X-Region' => 'X-Region',
    'X-Signature' => 'X-Signature',
  ],
]);

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

```csharp Upsert brand -> upsert merchant -> create payment
using RestSharp;

var client = new RestClient("https://api.cash.app/management/v1/request-chains");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "Accept");
request.AddHeader("User-Agent", "User-Agent");
request.AddHeader("X-Region", "X-Region");
request.AddHeader("X-Signature", "X-Signature");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/brands\",\n      \"body\": {\n        \"brand\": {\n          \"name\": \"brand name\",\n          \"reference_id\": \"reference_id\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"merchant\": {\n          \"address\": {\n            \"address_line_1\": \"1215 4th Ave\",\n            \"address_line_2\": \"Suite 2300\",\n            \"administrative_district_level_1\": \"Washington\",\n            \"country\": \"US\",\n            \"locality\": \"Seattle\",\n            \"postal_code\": \"98161-1001\"\n          },\n          \"brand_id\": \"$request_1:brand.id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"name\": \"merchant name\",\n          \"reference_id\": \"reference ID\"\n        }\n      }\n    },\n    {\n      \"uid\": \"request_3\",\n      \"method\": \"POST\",\n      \"path\": \"/network/v1/payments\",\n      \"body\": {\n        \"idempotency_key\": \"idempotency_key\",\n        \"payment\": {\n          \"amount\": 100,\n          \"capture\": true,\n          \"currency\": \"USD\",\n          \"enrichments\": {\n            \"recurring_series_id\": \"string\"\n          },\n          \"grant_id\": \"GRG_grant-id\",\n          \"merchant_id\": \"$request_2:merchant.id\",\n          \"metadata\": {\n            \"key\": \"value\"\n          },\n          \"reference_id\": \"external-id\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        },\n        {\n          \"uid\": \"request_3\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Upsert brand -> upsert merchant -> create payment
import Foundation

let headers = [
  "Accept": "Accept",
  "User-Agent": "User-Agent",
  "X-Region": "X-Region",
  "X-Signature": "X-Signature",
  "Content-Type": "application/json"
]
let parameters = [
  "requests": [
    [
      "uid": "request_1",
      "method": "PUT",
      "path": "/network/v1/brands",
      "body": ["brand": [
          "name": "brand name",
          "reference_id": "reference_id"
        ]]
    ],
    [
      "uid": "request_2",
      "method": "PUT",
      "path": "/network/v1/merchants",
      "body": ["merchant": [
          "address": [
            "address_line_1": "1215 4th Ave",
            "address_line_2": "Suite 2300",
            "administrative_district_level_1": "Washington",
            "country": "US",
            "locality": "Seattle",
            "postal_code": "98161-1001"
          ],
          "brand_id": "$request_1:brand.id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "name": "merchant name",
          "reference_id": "reference ID"
        ]]
    ],
    [
      "uid": "request_3",
      "method": "POST",
      "path": "/network/v1/payments",
      "body": [
        "idempotency_key": "idempotency_key",
        "payment": [
          "amount": 100,
          "capture": true,
          "currency": "USD",
          "enrichments": ["recurring_series_id": "string"],
          "grant_id": "GRG_grant-id",
          "merchant_id": "$request_2:merchant.id",
          "metadata": ["key": "value"],
          "reference_id": "external-id"
        ]
      ]
    ]
  ],
  "chains": [
    [
      "requests": [["uid": "request_1"], ["uid": "request_2"], ["uid": "request_3"]],
      "execution_mode": "SEQUENTIAL"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cash.app/management/v1/request-chains")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```

### Retrieve fee plan -> upsert merchant

**Request**

```json
{
  "requests": [
    {
      "uid": "request_1",
      "method": "GET",
      "path": "/network/v1/fee-plans/FEE_fee-plan-id"
    },
    {
      "uid": "request_2",
      "method": "PUT",
      "path": "/network/v1/merchants",
      "body": {
        "merchant": {
          "address": {
            "address_line_1": "1215 4th Ave",
            "address_line_2": "Suite 2300",
            "administrative_district_level_1": "Washington",
            "country": "US",
            "locality": "Seattle",
            "postal_code": "98161-1001"
          },
          "brand_id": "BRAND_brand-id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "default_fee_plans": {
            "in_app_fee_plan_id": "$request_1:fee_plan.id"
          },
          "name": "merchant name",
          "reference_id": "reference ID"
        }
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}
```

**Response**

```json
{
  "responses": [
    {
      "request_uid": "request_1",
      "execution_status": "EXECUTED",
      "path": "/network/v1/fee-plans/FEE_fee-plan-id",
      "method": "GET",
      "status_code": 200,
      "body": {
        "fee_plan": {
          "created_at": "2023-09-12T00:51:46.900Z",
          "currency": "USD",
          "description": "",
          "id": "FEE_fee-plan-id",
          "metadata": {},
          "rate": {
            "basis_points": 111,
            "fixed_amount": 22
          },
          "status": "ACTIVE",
          "updated_at": "2023-09-12T00:51:46.900Z"
        }
      },
      "completed_at": "2023-09-12T00:51:46.900Z"
    },
    {
      "request_uid": "request_2",
      "execution_status": "EXECUTED",
      "path": "/network/v1/merchants",
      "method": "PUT",
      "status_code": 200,
      "body": {
        "merchant": {
          "address": {
            "address_line_1": "1215 4th Ave",
            "address_line_2": "Suite 2300",
            "administrative_district_level_1": "Washington",
            "country": "US",
            "locality": "Seattle",
            "postal_code": "98161-1001"
          },
          "brand_id": "BRAND_brand-id",
          "category": "5432",
          "country": "US",
          "created_at": "2023-09-06T23:50:11.397Z",
          "currency": "USD",
          "id": "MMI_merchant-id",
          "metadata": {},
          "name": "merchant name",
          "reference_id": "reference ID",
          "status": "ACTIVE",
          "updated_at": "2023-09-06T23:50:11.397Z"
        }
      },
      "completed_at": "2023-09-06T23:50:11.397Z"
    }
  ]
}
```

**SDK Code**

```python Retrieve fee plan -> upsert merchant
import requests

url = "https://api.cash.app/management/v1/request-chains"

payload = {
    "requests": [
        {
            "uid": "request_1",
            "method": "GET",
            "path": "/network/v1/fee-plans/FEE_fee-plan-id"
        },
        {
            "uid": "request_2",
            "method": "PUT",
            "path": "/network/v1/merchants",
            "body": { "merchant": {
                    "address": {
                        "address_line_1": "1215 4th Ave",
                        "address_line_2": "Suite 2300",
                        "administrative_district_level_1": "Washington",
                        "country": "US",
                        "locality": "Seattle",
                        "postal_code": "98161-1001"
                    },
                    "brand_id": "BRAND_brand-id",
                    "category": "5432",
                    "country": "US",
                    "currency": "USD",
                    "default_fee_plans": { "in_app_fee_plan_id": "$request_1:fee_plan.id" },
                    "name": "merchant name",
                    "reference_id": "reference ID"
                } }
        }
    ],
    "chains": [
        {
            "requests": [{ "uid": "request_1" }, { "uid": "request_2" }],
            "execution_mode": "SEQUENTIAL"
        }
    ]
}
headers = {
    "Accept": "Accept",
    "User-Agent": "User-Agent",
    "X-Region": "X-Region",
    "X-Signature": "X-Signature",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Retrieve fee plan -> upsert merchant
const url = 'https://api.cash.app/management/v1/request-chains';
const options = {
  method: 'POST',
  headers: {
    Accept: 'Accept',
    'User-Agent': 'User-Agent',
    'X-Region': 'X-Region',
    'X-Signature': 'X-Signature',
    'Content-Type': 'application/json'
  },
  body: '{"requests":[{"uid":"request_1","method":"GET","path":"/network/v1/fee-plans/FEE_fee-plan-id"},{"uid":"request_2","method":"PUT","path":"/network/v1/merchants","body":{"merchant":{"address":{"address_line_1":"1215 4th Ave","address_line_2":"Suite 2300","administrative_district_level_1":"Washington","country":"US","locality":"Seattle","postal_code":"98161-1001"},"brand_id":"BRAND_brand-id","category":"5432","country":"US","currency":"USD","default_fee_plans":{"in_app_fee_plan_id":"$request_1:fee_plan.id"},"name":"merchant name","reference_id":"reference ID"}}}],"chains":[{"requests":[{"uid":"request_1"},{"uid":"request_2"}],"execution_mode":"SEQUENTIAL"}]}'
};

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

```go Retrieve fee plan -> upsert merchant
package main

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

func main() {

	url := "https://api.cash.app/management/v1/request-chains"

	payload := strings.NewReader("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/fee-plans/FEE_fee-plan-id\"\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"merchant\": {\n          \"address\": {\n            \"address_line_1\": \"1215 4th Ave\",\n            \"address_line_2\": \"Suite 2300\",\n            \"administrative_district_level_1\": \"Washington\",\n            \"country\": \"US\",\n            \"locality\": \"Seattle\",\n            \"postal_code\": \"98161-1001\"\n          },\n          \"brand_id\": \"BRAND_brand-id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"default_fee_plans\": {\n            \"in_app_fee_plan_id\": \"$request_1:fee_plan.id\"\n          },\n          \"name\": \"merchant name\",\n          \"reference_id\": \"reference ID\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Accept", "Accept")
	req.Header.Add("User-Agent", "User-Agent")
	req.Header.Add("X-Region", "X-Region")
	req.Header.Add("X-Signature", "X-Signature")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Retrieve fee plan -> upsert merchant
require 'uri'
require 'net/http'

url = URI("https://api.cash.app/management/v1/request-chains")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'Accept'
request["User-Agent"] = 'User-Agent'
request["X-Region"] = 'X-Region'
request["X-Signature"] = 'X-Signature'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/fee-plans/FEE_fee-plan-id\"\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"merchant\": {\n          \"address\": {\n            \"address_line_1\": \"1215 4th Ave\",\n            \"address_line_2\": \"Suite 2300\",\n            \"administrative_district_level_1\": \"Washington\",\n            \"country\": \"US\",\n            \"locality\": \"Seattle\",\n            \"postal_code\": \"98161-1001\"\n          },\n          \"brand_id\": \"BRAND_brand-id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"default_fee_plans\": {\n            \"in_app_fee_plan_id\": \"$request_1:fee_plan.id\"\n          },\n          \"name\": \"merchant name\",\n          \"reference_id\": \"reference ID\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}"

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

```java Retrieve fee plan -> upsert merchant
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.cash.app/management/v1/request-chains")
  .header("Accept", "Accept")
  .header("User-Agent", "User-Agent")
  .header("X-Region", "X-Region")
  .header("X-Signature", "X-Signature")
  .header("Content-Type", "application/json")
  .body("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/fee-plans/FEE_fee-plan-id\"\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"merchant\": {\n          \"address\": {\n            \"address_line_1\": \"1215 4th Ave\",\n            \"address_line_2\": \"Suite 2300\",\n            \"administrative_district_level_1\": \"Washington\",\n            \"country\": \"US\",\n            \"locality\": \"Seattle\",\n            \"postal_code\": \"98161-1001\"\n          },\n          \"brand_id\": \"BRAND_brand-id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"default_fee_plans\": {\n            \"in_app_fee_plan_id\": \"$request_1:fee_plan.id\"\n          },\n          \"name\": \"merchant name\",\n          \"reference_id\": \"reference ID\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")
  .asString();
```

```php Retrieve fee plan -> upsert merchant
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.cash.app/management/v1/request-chains', [
  'body' => '{
  "requests": [
    {
      "uid": "request_1",
      "method": "GET",
      "path": "/network/v1/fee-plans/FEE_fee-plan-id"
    },
    {
      "uid": "request_2",
      "method": "PUT",
      "path": "/network/v1/merchants",
      "body": {
        "merchant": {
          "address": {
            "address_line_1": "1215 4th Ave",
            "address_line_2": "Suite 2300",
            "administrative_district_level_1": "Washington",
            "country": "US",
            "locality": "Seattle",
            "postal_code": "98161-1001"
          },
          "brand_id": "BRAND_brand-id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "default_fee_plans": {
            "in_app_fee_plan_id": "$request_1:fee_plan.id"
          },
          "name": "merchant name",
          "reference_id": "reference ID"
        }
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}',
  'headers' => [
    'Accept' => 'Accept',
    'Content-Type' => 'application/json',
    'User-Agent' => 'User-Agent',
    'X-Region' => 'X-Region',
    'X-Signature' => 'X-Signature',
  ],
]);

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

```csharp Retrieve fee plan -> upsert merchant
using RestSharp;

var client = new RestClient("https://api.cash.app/management/v1/request-chains");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "Accept");
request.AddHeader("User-Agent", "User-Agent");
request.AddHeader("X-Region", "X-Region");
request.AddHeader("X-Signature", "X-Signature");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"GET\",\n      \"path\": \"/network/v1/fee-plans/FEE_fee-plan-id\"\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PUT\",\n      \"path\": \"/network/v1/merchants\",\n      \"body\": {\n        \"merchant\": {\n          \"address\": {\n            \"address_line_1\": \"1215 4th Ave\",\n            \"address_line_2\": \"Suite 2300\",\n            \"administrative_district_level_1\": \"Washington\",\n            \"country\": \"US\",\n            \"locality\": \"Seattle\",\n            \"postal_code\": \"98161-1001\"\n          },\n          \"brand_id\": \"BRAND_brand-id\",\n          \"category\": \"5432\",\n          \"country\": \"US\",\n          \"currency\": \"USD\",\n          \"default_fee_plans\": {\n            \"in_app_fee_plan_id\": \"$request_1:fee_plan.id\"\n          },\n          \"name\": \"merchant name\",\n          \"reference_id\": \"reference ID\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Retrieve fee plan -> upsert merchant
import Foundation

let headers = [
  "Accept": "Accept",
  "User-Agent": "User-Agent",
  "X-Region": "X-Region",
  "X-Signature": "X-Signature",
  "Content-Type": "application/json"
]
let parameters = [
  "requests": [
    [
      "uid": "request_1",
      "method": "GET",
      "path": "/network/v1/fee-plans/FEE_fee-plan-id"
    ],
    [
      "uid": "request_2",
      "method": "PUT",
      "path": "/network/v1/merchants",
      "body": ["merchant": [
          "address": [
            "address_line_1": "1215 4th Ave",
            "address_line_2": "Suite 2300",
            "administrative_district_level_1": "Washington",
            "country": "US",
            "locality": "Seattle",
            "postal_code": "98161-1001"
          ],
          "brand_id": "BRAND_brand-id",
          "category": "5432",
          "country": "US",
          "currency": "USD",
          "default_fee_plans": ["in_app_fee_plan_id": "$request_1:fee_plan.id"],
          "name": "merchant name",
          "reference_id": "reference ID"
        ]]
    ]
  ],
  "chains": [
    [
      "requests": [["uid": "request_1"], ["uid": "request_2"]],
      "execution_mode": "SEQUENTIAL"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cash.app/management/v1/request-chains")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```

### Create API key -> update webhook endpoint

**Request**

```json
{
  "requests": [
    {
      "uid": "request_1",
      "method": "POST",
      "path": "/management/v1/api-keys",
      "body": {
        "api_key": {
          "reference_id": "string",
          "scopes": [
            "PAYMENTS_READ"
          ]
        },
        "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19"
      }
    },
    {
      "uid": "request_2",
      "method": "PATCH",
      "path": "/management/v1/webhook-endpoints/WC_webhook-configuration-id",
      "body": {
        "webhook_endpoint": {
          "api_key_id": "$request_1:api_key.id"
        }
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}
```

**Response**

```json
{
  "responses": [
    {
      "request_uid": "request_1",
      "execution_status": "EXECUTED",
      "path": "/management/v1/api-keys",
      "method": "POST",
      "status_code": 201,
      "body": {
        "api_key": {
          "created_at": "2023-09-12T00:51:46.900Z",
          "expires_at": "2023-09-12T00:51:46.900Z",
          "id": "KEY_api-key-id",
          "reference_id": "string",
          "scopes": [
            "PAYMENTS_READ"
          ]
        },
        "secret": "stringstringstringstringstringst"
      },
      "completed_at": "2023-09-12T00:51:46.900Z"
    },
    {
      "request_uid": "request_2",
      "execution_status": "EXECUTED",
      "path": "/management/v1/webhook-endpoints/WC_webhook-configuration-id",
      "method": "PATCH",
      "status_code": 200,
      "body": {
        "webhook_endpoint": {
          "api_key_id": "string",
          "created_at": "2023-09-06T23:50:11.397Z",
          "delivery_timeout": 5000,
          "event_configurations": [
            {
              "api_version": "v1",
              "event_type": "customer.created"
            }
          ],
          "id": "WC_webhook-endpoint-id",
          "max_delivery_frequency": null,
          "reference_id": "string",
          "status": "APPROVED",
          "updated_at": "2023-09-06T23:50:11.397Z",
          "url": "http://example.com"
        }
      },
      "completed_at": "2023-09-06T23:50:11.397Z"
    }
  ]
}
```

**SDK Code**

```python Create API key -> update webhook endpoint
import requests

url = "https://api.cash.app/management/v1/request-chains"

payload = {
    "requests": [
        {
            "uid": "request_1",
            "method": "POST",
            "path": "/management/v1/api-keys",
            "body": {
                "api_key": {
                    "reference_id": "string",
                    "scopes": ["PAYMENTS_READ"]
                },
                "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19"
            }
        },
        {
            "uid": "request_2",
            "method": "PATCH",
            "path": "/management/v1/webhook-endpoints/WC_webhook-configuration-id",
            "body": { "webhook_endpoint": { "api_key_id": "$request_1:api_key.id" } }
        }
    ],
    "chains": [
        {
            "requests": [{ "uid": "request_1" }, { "uid": "request_2" }],
            "execution_mode": "SEQUENTIAL"
        }
    ]
}
headers = {
    "Accept": "Accept",
    "User-Agent": "User-Agent",
    "X-Region": "X-Region",
    "X-Signature": "X-Signature",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Create API key -> update webhook endpoint
const url = 'https://api.cash.app/management/v1/request-chains';
const options = {
  method: 'POST',
  headers: {
    Accept: 'Accept',
    'User-Agent': 'User-Agent',
    'X-Region': 'X-Region',
    'X-Signature': 'X-Signature',
    'Content-Type': 'application/json'
  },
  body: '{"requests":[{"uid":"request_1","method":"POST","path":"/management/v1/api-keys","body":{"api_key":{"reference_id":"string","scopes":["PAYMENTS_READ"]},"idempotency_key":"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19"}},{"uid":"request_2","method":"PATCH","path":"/management/v1/webhook-endpoints/WC_webhook-configuration-id","body":{"webhook_endpoint":{"api_key_id":"$request_1:api_key.id"}}}],"chains":[{"requests":[{"uid":"request_1"},{"uid":"request_2"}],"execution_mode":"SEQUENTIAL"}]}'
};

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

```go Create API key -> update webhook endpoint
package main

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

func main() {

	url := "https://api.cash.app/management/v1/request-chains"

	payload := strings.NewReader("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/management/v1/api-keys\",\n      \"body\": {\n        \"api_key\": {\n          \"reference_id\": \"string\",\n          \"scopes\": [\n            \"PAYMENTS_READ\"\n          ]\n        },\n        \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PATCH\",\n      \"path\": \"/management/v1/webhook-endpoints/WC_webhook-configuration-id\",\n      \"body\": {\n        \"webhook_endpoint\": {\n          \"api_key_id\": \"$request_1:api_key.id\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Accept", "Accept")
	req.Header.Add("User-Agent", "User-Agent")
	req.Header.Add("X-Region", "X-Region")
	req.Header.Add("X-Signature", "X-Signature")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

```ruby Create API key -> update webhook endpoint
require 'uri'
require 'net/http'

url = URI("https://api.cash.app/management/v1/request-chains")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'Accept'
request["User-Agent"] = 'User-Agent'
request["X-Region"] = 'X-Region'
request["X-Signature"] = 'X-Signature'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/management/v1/api-keys\",\n      \"body\": {\n        \"api_key\": {\n          \"reference_id\": \"string\",\n          \"scopes\": [\n            \"PAYMENTS_READ\"\n          ]\n        },\n        \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PATCH\",\n      \"path\": \"/management/v1/webhook-endpoints/WC_webhook-configuration-id\",\n      \"body\": {\n        \"webhook_endpoint\": {\n          \"api_key_id\": \"$request_1:api_key.id\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}"

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

```java Create API key -> update webhook endpoint
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.cash.app/management/v1/request-chains")
  .header("Accept", "Accept")
  .header("User-Agent", "User-Agent")
  .header("X-Region", "X-Region")
  .header("X-Signature", "X-Signature")
  .header("Content-Type", "application/json")
  .body("{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/management/v1/api-keys\",\n      \"body\": {\n        \"api_key\": {\n          \"reference_id\": \"string\",\n          \"scopes\": [\n            \"PAYMENTS_READ\"\n          ]\n        },\n        \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PATCH\",\n      \"path\": \"/management/v1/webhook-endpoints/WC_webhook-configuration-id\",\n      \"body\": {\n        \"webhook_endpoint\": {\n          \"api_key_id\": \"$request_1:api_key.id\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}")
  .asString();
```

```php Create API key -> update webhook endpoint
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.cash.app/management/v1/request-chains', [
  'body' => '{
  "requests": [
    {
      "uid": "request_1",
      "method": "POST",
      "path": "/management/v1/api-keys",
      "body": {
        "api_key": {
          "reference_id": "string",
          "scopes": [
            "PAYMENTS_READ"
          ]
        },
        "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19"
      }
    },
    {
      "uid": "request_2",
      "method": "PATCH",
      "path": "/management/v1/webhook-endpoints/WC_webhook-configuration-id",
      "body": {
        "webhook_endpoint": {
          "api_key_id": "$request_1:api_key.id"
        }
      }
    }
  ],
  "chains": [
    {
      "requests": [
        {
          "uid": "request_1"
        },
        {
          "uid": "request_2"
        }
      ],
      "execution_mode": "SEQUENTIAL"
    }
  ]
}',
  'headers' => [
    'Accept' => 'Accept',
    'Content-Type' => 'application/json',
    'User-Agent' => 'User-Agent',
    'X-Region' => 'X-Region',
    'X-Signature' => 'X-Signature',
  ],
]);

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

```csharp Create API key -> update webhook endpoint
using RestSharp;

var client = new RestClient("https://api.cash.app/management/v1/request-chains");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "Accept");
request.AddHeader("User-Agent", "User-Agent");
request.AddHeader("X-Region", "X-Region");
request.AddHeader("X-Signature", "X-Signature");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"requests\": [\n    {\n      \"uid\": \"request_1\",\n      \"method\": \"POST\",\n      \"path\": \"/management/v1/api-keys\",\n      \"body\": {\n        \"api_key\": {\n          \"reference_id\": \"string\",\n          \"scopes\": [\n            \"PAYMENTS_READ\"\n          ]\n        },\n        \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\"\n      }\n    },\n    {\n      \"uid\": \"request_2\",\n      \"method\": \"PATCH\",\n      \"path\": \"/management/v1/webhook-endpoints/WC_webhook-configuration-id\",\n      \"body\": {\n        \"webhook_endpoint\": {\n          \"api_key_id\": \"$request_1:api_key.id\"\n        }\n      }\n    }\n  ],\n  \"chains\": [\n    {\n      \"requests\": [\n        {\n          \"uid\": \"request_1\"\n        },\n        {\n          \"uid\": \"request_2\"\n        }\n      ],\n      \"execution_mode\": \"SEQUENTIAL\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Create API key -> update webhook endpoint
import Foundation

let headers = [
  "Accept": "Accept",
  "User-Agent": "User-Agent",
  "X-Region": "X-Region",
  "X-Signature": "X-Signature",
  "Content-Type": "application/json"
]
let parameters = [
  "requests": [
    [
      "uid": "request_1",
      "method": "POST",
      "path": "/management/v1/api-keys",
      "body": [
        "api_key": [
          "reference_id": "string",
          "scopes": ["PAYMENTS_READ"]
        ],
        "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19"
      ]
    ],
    [
      "uid": "request_2",
      "method": "PATCH",
      "path": "/management/v1/webhook-endpoints/WC_webhook-configuration-id",
      "body": ["webhook_endpoint": ["api_key_id": "$request_1:api_key.id"]]
    ]
  ],
  "chains": [
    [
      "requests": [["uid": "request_1"], ["uid": "request_2"]],
      "execution_mode": "SEQUENTIAL"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cash.app/management/v1/request-chains")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```