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

POST https://api.cash.app/network/v1/payments
Content-Type: application/json

Creates a payment from a customer to a merchant.

Creating a payment requires a grant that is associated with the `ON_FILE_PAYMENT` or `ONE_TIME_PAYMENT` actions. To generate a grant, use the Customer Request API.

**This endpoint is not rate limited.**

Scopes: `PAYMENTS_WRITE`

Reference: https://developers.cash.app/cash-app-pay-partner-api/api-reference/network-api/create-payment

## Servers

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

## Request

### Body (application/json)

This endpoint expects an object.

- `idempotency_key` (string, required) — A unique identifier which can be used by Cash App to de-duplicate retries of this request, making it idempotent. For more information, see [Idempotency](/cash-app-pay-partner-api/guides/technical-guides/api-fundamentals/idempotency).
- `payment` (CreatePaymentRequestPayment, required) — Data about the payment to create.

## Response

### 201

Created

- `payment` (Payment, optional)

## Errors

### 400 Create Payment Request Bad Request Error

Bad Request If a `PAYMENT_DECLINE_*` error is returned, the payment will still be created, but with a `DECLINED` status. This payment will then appear in the response payload. **`PAYMENT_DECLINE_*` errors consume one-time use grants.** This means you must repeat the Customer Request flow to get a new grant if you want to try taking the payment again. All other errors will not consume grants.

- `errors` (list of Error, required) — A list of errors indicating why the request failed. Min number of items: `1`
- `payment` (Payment, optional)

## Types

### CreatePaymentRequestPayment

Data about the payment to create.

- `amount` (integer, required) — The amount of money to charge the customer, in the lowest denomination of currency for the payment. Min value: `1`
- `currency` (enum, required) — Indicates the country associated with an entity. Values are from the [ISO-4217 Alpha-3](https://www.iso.org/iso-4217-currency-codes.html) specification. Current values: - `USD`: United States Dollar
  - Allowed values: `USD`
- `merchant_id` (string, required) — ID of the merchant to make the payment to. Min length: `1` Max length: `128`
- `grant_id` (string, required) — A grant ID from the Customer Request API that indicates permission to take the payment. Min length: `1` Max length: `256`
- `reference_id` (string, optional) — A user-defined identifier for this payment, typically used to associate the payment with a record in an external system. Min length: `1` Max length: `1024`
- `capture` (boolean, optional, default: true) — Whether or not to automatically capture the payment once it's created. Default: `true`
- `metadata` (map from string to string, optional) — Freeform key-value pairs of arbitrary data associated with this resource. Keys and values must be passed as strings and not contain any personally identifiable information (PII). Min keys: `0` Max keys: `50` > Note: Nested keys are not supported.
- `enrichments` (PaymentEnrichments, optional) — Describes optional fields beyond core payment information to supplement payment processing. Enrichments provide additional context about a payment, which can improve the overall payment experience including, but not limited to: - Increased approval rates - Enhanced transaction insights - Better payment flows in Cash App

### Payment

- `id` (string, required) — Unique identifier for this payment issued by Cash App. Min length: `1` Max length: `128`
- `amount` (integer, required) — The amount of money to collect, in the lowest denomination of currency on the payment. This is the _original_ amount authorized when the payment was created. Min value: `1`
- `net_amount` (integer, required) — The amount remaining after refunds and voided payments are deducted from the amount field. The amount will be in the lowest denomination of the currency on the payment. This is the amount that will be shown to the customer in their Cash App account. Min value: `0`
- `captured_amount` (integer, required) — The amount of money on this payment that has been allocated for settlement. The amount will be in the lowest denomination of the currency on the payment. Min value: `0`
- `voided_amount` (integer, required) — The amount of money on this payment that is no longer authorized and has been released back to the customer. The amount will be in the lowest denomination of the currency on the payment. Min value: `0`
- `refunded_amount` (integer, required) — Sum of captured refunds in the lowest denomination of currency on the payment. Min value: `0`
- `currency` (enum, required) — Indicates the country associated with an entity. Values are from the [ISO-4217 Alpha-3](https://www.iso.org/iso-4217-currency-codes.html) specification. Current values: - `USD`: United States Dollar
  - Allowed values: `USD`
- `customer_id` (string, required) — ID of the customer that sent this payment. Min length: `1` Max length: `128`
- `merchant_id` (string, required) — ID of the merchant that received this payment. Min length: `1` Max length: `128`
- `grant_id` (string, required) — ID of the grant to used to create this payment. Min length: `1` Max length: `256`
- `status` (enum, required) — The step of the payment processing lifecycle that this payment is currently at. - `AUTHORIZED` - `CAPTURED` - `VOIDED` - `DECLINED`
  - Allowed values: `AUTHORIZED`, `CAPTURED`, `VOIDED`, `DECLINED`
- `created_at` (datetime, required) — When this payment was created, in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339) format (UTC).
- `updated_at` (datetime, required) — When this payment was last updated, in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339) format (UTC).
- `capture_before` (datetime, optional) — When this payment should be captured by, in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339) format (UTC).
- `refund_ids` (list of string, optional) — A list of one or more IDs associated with refunds issued for this payment. Min array length: `1` Min length of IDs: `1` Max length of IDs: `128`
- `reference_id` (string, optional) — A user-defined identifier for this payment, typically used to associate the payment with a record in an external system. Min length: `1` Max length: `1024`
- `metadata` (map from string to string, optional) — Freeform key-value pairs of arbitrary data associated with this resource. Keys and values must be passed as strings and not contain any personally identifiable information (PII). Min keys: `0` Max keys: `50` > Note: Nested keys are not supported.
- `enrichments` (PaymentEnrichments, optional) — Describes optional fields beyond core payment information to supplement payment processing. Enrichments provide additional context about a payment, which can improve the overall payment experience including, but not limited to: - Increased approval rates - Enhanced transaction insights - Better payment flows in Cash App
- `decline_errors` (list of Error, optional) — If the payment was declined, contains a list of the reasons why it was declined. Min number of items: `1`
- `fee_amount` (double, optional) — The total fee amount that was charged to the merchant for processing this payment.
- `fee_rate` (FeeRate, optional) — The breakdown of the fee that was charged to the merchant for processing this payment.
- `authorization_updates` (list of Authorization, optional) — A list of authorization update attempts associated with this payment, sorted in chronological order. Note: This field contains only the authorization update attempts, so this field will be empty when the payment is first created (even though the amount is authorized in this flow, it is not an update).

### Error

Represents an error encountered during a request to the API.

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

### PaymentEnrichments

Describes optional fields beyond core payment information to supplement payment processing. Enrichments provide additional context about a payment, which can improve the overall payment experience including, but not limited to: - Increased approval rates - Enhanced transaction insights - Better payment flows in Cash App

- `initiation` (PaymentEnrichmentsInitiation, optional) — If present, provides information about transaction initiation.
- `recurring_series_id` (string, optional) — If present, indicates that this payment is part of a recurring series of payments, such as a subscription. The value should contain a unique identifier for the recurring series that is constant across all of its payments, so it can be used to group them together. Min length: `1` Max length: `1024`
- `statement_descriptor` (string, optional) — If present, adds the descriptor as line item on to a customer's payment receipt in their in-app Activity page. The descriptor will be present under the header "On statement as". Statement descriptor requirements vary by platform. If the input for this field exceeds the character limit, it will be truncated to the limit, then suffixed with an ellipsis (...). Min length: `1` Max length: `22`
- `restricted_categories` (list of enum, optional) — If present, indicates that this payment is associated with one or more restricted categories. Contact the Cash App Pay support team to use this field.
  - Allowed values: `ALCOHOL`, `FINANCIAL_SERVICES`, `CANNABIS`

### FeeRate

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

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

### Authorization

Represents an authorization update for a payment

- `id` (string, required) — Unique identifier for this authorization issued by Cash App. Min length: 1 character Max length: 128 characters
- `amount` (integer, required) — Total authorized amount after this authorization was processed, in the lowest denomination of currency on the payment.
- `currency` (enum, required) — Indicates the country associated with an entity. Values are from the [ISO-4217 Alpha-3](https://www.iso.org/iso-4217-currency-codes.html) specification. Current values: - `USD`: United States Dollar
  - Allowed values: `USD`
- `status` (enum, required) — The step of the authorization processing lifecycle that this authorization is currently at. Allowed values: - AUTHORIZED - DECLINED
  - Allowed values: `AUTHORIZED`, `DECLINED`
- `created_at` (datetime, required) — When this authorization was created, in RFC 3339 format (UTC).
- `payment_id` (string, required) — ID of the payment associated with this authorization
- `previous_amount` (integer, required) — Total authorized amount before this authorization was requested
- `reference_id` (string, optional) — A user-defined identifier for this authorization, typically used to associate the authorization with a record in an external system. Min length: 1 Max length: 1024
- `metadata` (map from string to string, optional) — Freeform key-value pairs of arbitrary data associated with this resource. Keys and values must be passed as strings and not contain any personally identifiable information (PII). Min keys: `0` Max keys: `50` > Note: Nested keys are not supported.
- `decline_errors` (list of Error, optional) — If the authorization was declined, it contains a list of the reasons why it was declined. Min number of items: 1

### PaymentEnrichmentsInitiation

If present, provides information about transaction initiation.

- `actor` (enum, required) — The party who initiated the payment. - `CUSTOMER` - `MERCHANT`
  - Allowed values: `CUSTOMER`, `MERCHANT`

## Examples

### Sample request with metadata

**Request**

```json
{
  "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
  "payment": {
    "amount": 100,
    "currency": "USD",
    "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
    "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
    "reference_id": "external-id",
    "capture": true,
    "metadata": {
      "key": "value"
    },
    "enrichments": {
      "recurring_series_id": "string"
    }
  }
}
```

**Response**

```json
{
  "payment": {
    "id": "PWC_4nn21zy6t0v2yhqg5bvhk7xkq",
    "amount": 1500,
    "net_amount": 1000,
    "captured_amount": 1000,
    "voided_amount": 0,
    "refunded_amount": 100,
    "currency": "USD",
    "customer_id": "CST_AQmxh4y_QGoNNIG5NUw0jttqyYedL1LklACQdyJ3H-Vs6WmLtP6A_C7XjQNohvY",
    "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
    "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
    "status": "AUTHORIZED",
    "created_at": "2022-01-01T12:00:00Z",
    "updated_at": "2022-01-05T12:00:00Z",
    "capture_before": "2022-01-08T12:00:00Z",
    "refund_ids": [
      "PWCR_da1v3j4p3z15y47adpzzq0whj"
    ],
    "reference_id": "external-id",
    "metadata": {
      "key": "value"
    },
    "enrichments": {
      "initiation": {
        "actor": "CUSTOMER"
      },
      "recurring_series_id": "string",
      "statement_descriptor": "statement_descriptor",
      "restricted_categories": [
        "ALCOHOL"
      ]
    },
    "decline_errors": [
      {
        "category": "INVALID_REQUEST_ERROR",
        "code": "MISSING_REQUIRED_FIELD",
        "detail": "Missing required parameter.",
        "field": "field_a[2].field_b"
      }
    ],
    "fee_amount": 1.1,
    "fee_rate": {
      "basis_points": 160,
      "fixed_amount": 20
    },
    "authorization_updates": [
      {
        "id": "id",
        "amount": 1,
        "currency": "USD",
        "status": "AUTHORIZED",
        "created_at": "2024-01-15T09:30:00Z",
        "payment_id": "payment_id",
        "previous_amount": 1,
        "metadata": {
          "my-meta": "meta-value"
        },
        "decline_errors": [
          {
            "category": "INVALID_REQUEST_ERROR",
            "code": "MISSING_REQUIRED_FIELD",
            "detail": "Missing required parameter.",
            "field": "field_a[2].field_b"
          }
        ]
      }
    ]
  }
}
```

**SDK Code**

```python Sample request with metadata
import requests

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

payload = {
    "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
    "payment": {
        "amount": 100,
        "currency": "USD",
        "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
        "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
        "reference_id": "external-id",
        "capture": True,
        "metadata": { "key": "value" },
        "enrichments": { "recurring_series_id": "string" }
    }
}
headers = {"Content-Type": "application/json"}

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

print(response.json())
```

```javascript Sample request with metadata
const url = 'https://api.cash.app/network/v1/payments';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"idempotency_key":"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19","payment":{"amount":100,"currency":"USD","merchant_id":"MMI_4vxs5egfk7hmta3qx2h6rp91x","grant_id":"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50","reference_id":"external-id","capture":true,"metadata":{"key":"value"},"enrichments":{"recurring_series_id":"string"}}}'
};

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

```go Sample request with metadata
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"payment\": {\n    \"amount\": 100,\n    \"currency\": \"USD\",\n    \"merchant_id\": \"MMI_4vxs5egfk7hmta3qx2h6rp91x\",\n    \"grant_id\": \"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50\",\n    \"reference_id\": \"external-id\",\n    \"capture\": true,\n    \"metadata\": {\n      \"key\": \"value\"\n    },\n    \"enrichments\": {\n      \"recurring_series_id\": \"string\"\n    }\n  }\n}")

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

	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 Sample request with metadata
require 'uri'
require 'net/http'

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

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

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"payment\": {\n    \"amount\": 100,\n    \"currency\": \"USD\",\n    \"merchant_id\": \"MMI_4vxs5egfk7hmta3qx2h6rp91x\",\n    \"grant_id\": \"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50\",\n    \"reference_id\": \"external-id\",\n    \"capture\": true,\n    \"metadata\": {\n      \"key\": \"value\"\n    },\n    \"enrichments\": {\n      \"recurring_series_id\": \"string\"\n    }\n  }\n}"

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

```java Sample request with metadata
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.cash.app/network/v1/payments")
  .header("Content-Type", "application/json")
  .body("{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"payment\": {\n    \"amount\": 100,\n    \"currency\": \"USD\",\n    \"merchant_id\": \"MMI_4vxs5egfk7hmta3qx2h6rp91x\",\n    \"grant_id\": \"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50\",\n    \"reference_id\": \"external-id\",\n    \"capture\": true,\n    \"metadata\": {\n      \"key\": \"value\"\n    },\n    \"enrichments\": {\n      \"recurring_series_id\": \"string\"\n    }\n  }\n}")
  .asString();
```

```php Sample request with metadata
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.cash.app/network/v1/payments', [
  'body' => '{
  "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
  "payment": {
    "amount": 100,
    "currency": "USD",
    "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
    "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
    "reference_id": "external-id",
    "capture": true,
    "metadata": {
      "key": "value"
    },
    "enrichments": {
      "recurring_series_id": "string"
    }
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp Sample request with metadata
using RestSharp;

var client = new RestClient("https://api.cash.app/network/v1/payments");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"payment\": {\n    \"amount\": 100,\n    \"currency\": \"USD\",\n    \"merchant_id\": \"MMI_4vxs5egfk7hmta3qx2h6rp91x\",\n    \"grant_id\": \"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50\",\n    \"reference_id\": \"external-id\",\n    \"capture\": true,\n    \"metadata\": {\n      \"key\": \"value\"\n    },\n    \"enrichments\": {\n      \"recurring_series_id\": \"string\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Sample request with metadata
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
  "payment": [
    "amount": 100,
    "currency": "USD",
    "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
    "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
    "reference_id": "external-id",
    "capture": true,
    "metadata": ["key": "value"],
    "enrichments": ["recurring_series_id": "string"]
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cash.app/network/v1/payments")! 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()
```

### Sample request without metadata

**Request**

```json
{
  "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
  "payment": {
    "amount": 100,
    "currency": "USD",
    "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
    "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
    "reference_id": "external-id",
    "capture": true,
    "enrichments": {
      "recurring_series_id": "string"
    }
  }
}
```

**Response**

```json
{
  "payment": {
    "id": "PWC_4nn21zy6t0v2yhqg5bvhk7xkq",
    "amount": 1500,
    "net_amount": 1000,
    "captured_amount": 1000,
    "voided_amount": 0,
    "refunded_amount": 100,
    "currency": "USD",
    "customer_id": "CST_AQmxh4y_QGoNNIG5NUw0jttqyYedL1LklACQdyJ3H-Vs6WmLtP6A_C7XjQNohvY",
    "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
    "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
    "status": "AUTHORIZED",
    "created_at": "2022-01-01T12:00:00Z",
    "updated_at": "2022-01-05T12:00:00Z",
    "capture_before": "2022-01-08T12:00:00Z",
    "refund_ids": [
      "PWCR_da1v3j4p3z15y47adpzzq0whj"
    ],
    "reference_id": "external-id",
    "metadata": {
      "key": "value"
    },
    "enrichments": {
      "initiation": {
        "actor": "CUSTOMER"
      },
      "recurring_series_id": "string",
      "statement_descriptor": "statement_descriptor",
      "restricted_categories": [
        "ALCOHOL"
      ]
    },
    "decline_errors": [
      {
        "category": "INVALID_REQUEST_ERROR",
        "code": "MISSING_REQUIRED_FIELD",
        "detail": "Missing required parameter.",
        "field": "field_a[2].field_b"
      }
    ],
    "fee_amount": 1.1,
    "fee_rate": {
      "basis_points": 160,
      "fixed_amount": 20
    },
    "authorization_updates": [
      {
        "id": "id",
        "amount": 1,
        "currency": "USD",
        "status": "AUTHORIZED",
        "created_at": "2024-01-15T09:30:00Z",
        "payment_id": "payment_id",
        "previous_amount": 1,
        "metadata": {
          "my-meta": "meta-value"
        },
        "decline_errors": [
          {
            "category": "INVALID_REQUEST_ERROR",
            "code": "MISSING_REQUIRED_FIELD",
            "detail": "Missing required parameter.",
            "field": "field_a[2].field_b"
          }
        ]
      }
    ]
  }
}
```

**SDK Code**

```python Sample request without metadata
import requests

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

payload = {
    "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
    "payment": {
        "amount": 100,
        "currency": "USD",
        "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
        "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
        "reference_id": "external-id",
        "capture": True,
        "enrichments": { "recurring_series_id": "string" }
    }
}
headers = {"Content-Type": "application/json"}

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

print(response.json())
```

```javascript Sample request without metadata
const url = 'https://api.cash.app/network/v1/payments';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"idempotency_key":"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19","payment":{"amount":100,"currency":"USD","merchant_id":"MMI_4vxs5egfk7hmta3qx2h6rp91x","grant_id":"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50","reference_id":"external-id","capture":true,"enrichments":{"recurring_series_id":"string"}}}'
};

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

```go Sample request without metadata
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"payment\": {\n    \"amount\": 100,\n    \"currency\": \"USD\",\n    \"merchant_id\": \"MMI_4vxs5egfk7hmta3qx2h6rp91x\",\n    \"grant_id\": \"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50\",\n    \"reference_id\": \"external-id\",\n    \"capture\": true,\n    \"enrichments\": {\n      \"recurring_series_id\": \"string\"\n    }\n  }\n}")

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

	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 Sample request without metadata
require 'uri'
require 'net/http'

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

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

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"payment\": {\n    \"amount\": 100,\n    \"currency\": \"USD\",\n    \"merchant_id\": \"MMI_4vxs5egfk7hmta3qx2h6rp91x\",\n    \"grant_id\": \"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50\",\n    \"reference_id\": \"external-id\",\n    \"capture\": true,\n    \"enrichments\": {\n      \"recurring_series_id\": \"string\"\n    }\n  }\n}"

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

```java Sample request without metadata
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.cash.app/network/v1/payments")
  .header("Content-Type", "application/json")
  .body("{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"payment\": {\n    \"amount\": 100,\n    \"currency\": \"USD\",\n    \"merchant_id\": \"MMI_4vxs5egfk7hmta3qx2h6rp91x\",\n    \"grant_id\": \"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50\",\n    \"reference_id\": \"external-id\",\n    \"capture\": true,\n    \"enrichments\": {\n      \"recurring_series_id\": \"string\"\n    }\n  }\n}")
  .asString();
```

```php Sample request without metadata
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.cash.app/network/v1/payments', [
  'body' => '{
  "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
  "payment": {
    "amount": 100,
    "currency": "USD",
    "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
    "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
    "reference_id": "external-id",
    "capture": true,
    "enrichments": {
      "recurring_series_id": "string"
    }
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp Sample request without metadata
using RestSharp;

var client = new RestClient("https://api.cash.app/network/v1/payments");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"payment\": {\n    \"amount\": 100,\n    \"currency\": \"USD\",\n    \"merchant_id\": \"MMI_4vxs5egfk7hmta3qx2h6rp91x\",\n    \"grant_id\": \"GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50\",\n    \"reference_id\": \"external-id\",\n    \"capture\": true,\n    \"enrichments\": {\n      \"recurring_series_id\": \"string\"\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Sample request without metadata
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
  "payment": [
    "amount": 100,
    "currency": "USD",
    "merchant_id": "MMI_4vxs5egfk7hmta3qx2h6rp91x",
    "grant_id": "GRG_221243dc6985a6819ff6950c1a21332f7bc4a46ebd49b5a7002908ab768e8e5ff7831e084d0d2c9d8d939793b55eff50",
    "reference_id": "external-id",
    "capture": true,
    "enrichments": ["recurring_series_id": "string"]
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cash.app/network/v1/payments")! 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()
```