> 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 dispute evidence text

POST https://api.cash.app/network/v1/disputes/{dispute_id}/evidence-text
Content-Type: application/json

Creates a piece of evidence for the given dispute from a blob of plain text, which can then be submitted with the [challenge dispute](Network-API.v1.yaml/paths/~1disputes~1\{dispute_id}~1challenge) endpoint.

If you have more than 500 characters of text to submit as evidence, split it into multiple pieces where possible.

Uploading evidence does not challenge the dispute. Make sure to call the [challenge dispute](Network-API.v1.yaml/paths/~1disputes~1\{dispute_id}~1challenge) endpoint before the `response_due_at` timestamp, or else the merchant will automatically "lose" the dispute.

**This endpoint is not rate limited.**

Scopes: `DISPUTES_WRITE`

Reference: https://developers.cash.app/cash-app-pay-partner-api/api-reference/network-api/create-dispute-evidence-text

## Servers

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

## Request

### Path parameters

- `dispute_id` (string, required) — ID of the dispute.

### 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).
- `evidence` (CreateDisputeEvidenceTextRequestEvidence, required) — Details about the evidence to create.

## Response

### 201

Created

- `evidence` (DisputeEvidence, optional)

## Errors

### 400 Create Dispute Evidence Text Request 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`

### 404 Create Dispute Evidence Text Request Not Found Error

Not Found

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

## Types

### CreateDisputeEvidenceTextRequestEvidence

Details about the evidence to create.

- `category` (enum, required) — Describes what type of information is contained in this piece of evidence. Current values: - `GENERIC_EVIDENCE`: Default evidence type used if no other category applies. - `ONLINE_OR_APP_ACCESS_LOG`: Server or activity logs that show proof of the cardholder’s identity and that the cardholder successfully ordered and received the goods (digitally or otherwise). Example evidence includes IP addresses, corresponding timestamps/dates, cardholder’s name and email address linked to a cardholder profile held by the seller, proof the same device and card (used in dispute) were previously used in prior undisputed transaction, and any related detailed activity. - `AUTHORIZATION_DOCUMENTATION`: **[File Only]** Evidence that the cardholder did provide authorization for the charge. Example evidence includes a signed credit card authorization. - `CANCELLATION_OR_REFUND_DOCUMENTATION`: Evidence that the cardholder acknowledged your refund or cancellation policy. Example evidence includes a signature or checkbox showing the cardholder’s acknowledgement of your refund or cancellation policy. - `CARDHOLDER_COMMUNICATION`: **[File Only]** Evidence that shows relevant communication with the cardholder. Example evidence includes emails or texts that show the cardholder received goods/services or demonstrate cardholder satisfaction. - `CARDHOLDER_INFORMATION`: Evidence that validates the customer's identity. Example evidence includes personally identifiable details such as name, email address, purchaser IP address, and a copy of the cardholder ID. - `PURCHASE_ACKNOWLEDGEMENT`: Evidence that shows proof of the sale/transaction. Example evidence includes an invoice, contract, or other item showing the customer’s acknowledgement of the purchase and your terms. - `DUPLICATE_CHARGE_DOCUMENTATION`: **[File Only]** Evidence that shows the charges in question are valid and distinct from one another. Example evidence includes receipts, shipping labels, and invoices along with their distinct payment IDs. - `PRODUCT_OR_SERVICE_DESCRIPTION`: A description of the product or service sold. - `RECEIPT`: A receipt or message sent to the cardholder detailing the charge. Note: You do not need to upload the Square receipt; Square submits the receipt on your behalf. - `SERVICE_RECEIVED_DOCUMENTATION`: Evidence that the service was provided to the cardholder or the expected date that services will be rendered. Example evidence includes a signed delivery form, work order, expected delivery date, or other written agreements. - `PROOF_OF_DELIVERY_DOCUMENTATION`: Evidence that shows the product was provided to the cardholder or the expected date of delivery. Example evidence includes a signed delivery form or written agreement acknowledging receipt of the goods or services. - `RELATED_TRANSACTION_DOCUMENTATION`: Evidence that shows the cardholder previously processed transactions on the same card and did not dispute them. - `REBUTTAL_EXPLANATION`: An explanation of why the cardholder’s claim is invalid. Example evidence includes an explanation of why each distinct charge is a legitimate purchase, why the cardholder’s claim for credit owed due to their attempt to cancel, return, or refund is invalid per your stated policy and cardholder agreement, or an explanation of how the cardholder did not attempt to remedy the issue with you first to receive credit. - `TRACKING_NUMBER`: The tracking number for the order provided by the shipping carrier. If you have multiple numbers, they need to be submitted individually as separate pieces of evidence.
  - Allowed values: `GENERIC_EVIDENCE`, `ONLINE_OR_APP_ACCESS_LOG`, `AUTHORIZATION_DOCUMENTATION`, `CANCELLATION_OR_REFUND_DOCUMENTATION`, `CARDHOLDER_COMMUNICATION`, `CARDHOLDER_INFORMATION`, `PURCHASE_ACKNOWLEDGEMENT`, `DUPLICATE_CHARGE_DOCUMENTATION`, `PRODUCT_OR_SERVICE_DESCRIPTION`, `RECEIPT`, `SERVICE_RECEIVED_DOCUMENTATION`, `PROOF_OF_DELIVERY_DOCUMENTATION`, `RELATED_TRANSACTION_DOCUMENTATION`, `REBUTTAL_EXPLANATION`, `TRACKING_NUMBER`
- `text` (string, required) — The blob of text to upload as evidence.
- `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.

### DisputeEvidence

- `id` (string, required) — A unique identifier for the dispute evidence issued by Cash App. Min length: `1` Max length: `128`
- `dispute_id` (string, required) — ID of the dispute this evidence is associated with. Min length: `1` Max length: `128`
- `category` (enum, required) — Describes what type of information is contained in this piece of evidence. Current values: - `GENERIC_EVIDENCE`: Default evidence type used if no other category applies. - `ONLINE_OR_APP_ACCESS_LOG`: Server or activity logs that show proof of the cardholder’s identity and that the cardholder successfully ordered and received the goods (digitally or otherwise). Example evidence includes IP addresses, corresponding timestamps/dates, cardholder’s name and email address linked to a cardholder profile held by the seller, proof the same device and card (used in dispute) were previously used in prior undisputed transaction, and any related detailed activity. - `AUTHORIZATION_DOCUMENTATION`: **[File Only]** Evidence that the cardholder did provide authorization for the charge. Example evidence includes a signed credit card authorization. - `CANCELLATION_OR_REFUND_DOCUMENTATION`: Evidence that the cardholder acknowledged your refund or cancellation policy. Example evidence includes a signature or checkbox showing the cardholder’s acknowledgement of your refund or cancellation policy. - `CARDHOLDER_COMMUNICATION`: **[File Only]** Evidence that shows relevant communication with the cardholder. Example evidence includes emails or texts that show the cardholder received goods/services or demonstrate cardholder satisfaction. - `CARDHOLDER_INFORMATION`: Evidence that validates the customer's identity. Example evidence includes personally identifiable details such as name, email address, purchaser IP address, and a copy of the cardholder ID. - `PURCHASE_ACKNOWLEDGEMENT`: Evidence that shows proof of the sale/transaction. Example evidence includes an invoice, contract, or other item showing the customer’s acknowledgement of the purchase and your terms. - `DUPLICATE_CHARGE_DOCUMENTATION`: **[File Only]** Evidence that shows the charges in question are valid and distinct from one another. Example evidence includes receipts, shipping labels, and invoices along with their distinct payment IDs. - `PRODUCT_OR_SERVICE_DESCRIPTION`: A description of the product or service sold. - `RECEIPT`: A receipt or message sent to the cardholder detailing the charge. Note: You do not need to upload the Square receipt; Square submits the receipt on your behalf. - `SERVICE_RECEIVED_DOCUMENTATION`: Evidence that the service was provided to the cardholder or the expected date that services will be rendered. Example evidence includes a signed delivery form, work order, expected delivery date, or other written agreements. - `PROOF_OF_DELIVERY_DOCUMENTATION`: Evidence that shows the product was provided to the cardholder or the expected date of delivery. Example evidence includes a signed delivery form or written agreement acknowledging receipt of the goods or services. - `RELATED_TRANSACTION_DOCUMENTATION`: Evidence that shows the cardholder previously processed transactions on the same card and did not dispute them. - `REBUTTAL_EXPLANATION`: An explanation of why the cardholder’s claim is invalid. Example evidence includes an explanation of why each distinct charge is a legitimate purchase, why the cardholder’s claim for credit owed due to their attempt to cancel, return, or refund is invalid per your stated policy and cardholder agreement, or an explanation of how the cardholder did not attempt to remedy the issue with you first to receive credit. - `TRACKING_NUMBER`: The tracking number for the order provided by the shipping carrier. If you have multiple numbers, they need to be submitted individually as separate pieces of evidence.
  - Allowed values: `GENERIC_EVIDENCE`, `ONLINE_OR_APP_ACCESS_LOG`, `AUTHORIZATION_DOCUMENTATION`, `CANCELLATION_OR_REFUND_DOCUMENTATION`, `CARDHOLDER_COMMUNICATION`, `CARDHOLDER_INFORMATION`, `PURCHASE_ACKNOWLEDGEMENT`, `DUPLICATE_CHARGE_DOCUMENTATION`, `PRODUCT_OR_SERVICE_DESCRIPTION`, `RECEIPT`, `SERVICE_RECEIVED_DOCUMENTATION`, `PROOF_OF_DELIVERY_DOCUMENTATION`, `RELATED_TRANSACTION_DOCUMENTATION`, `REBUTTAL_EXPLANATION`, `TRACKING_NUMBER`
- `type` (enum, required) — Indicates if the evidence is a file or plain text. Current values: - `TEXT`: The evidence is a blob of text under 500 characters. - `FILE`: The evidence is an uploaded binary file.
  - Allowed values: `FILE`, `TEXT`
- `created_at` (datetime, required) — When this evidence was created, in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339) format (UTC).
- `file` (DisputeEvidenceFile, optional) — If the evidence is of type `FILE`, contains metadata about the binary file uploaded as evidence.
- `text` (string, optional) — If the evidence is of type `TEXT`, contains the blob of text created as evidence. Min length: `1` Max length: `500`
- `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.

### 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`

### DisputeEvidenceFile

If the evidence is of type `FILE`, contains metadata about the binary file uploaded as evidence.

- `filename` (string, required) — Name of the uploaded file. It should be descriptive enough to indicate what type of information is contained in the uploaded file.
- `content_type` (enum, required) — The MIME type of the uploaded file. Current values: - `application/pdf` - `image/heic` - `image/heif` - `image/jpeg` - `image/png` - `image/tiff`
  - Allowed values: `application/pdf`, `image/heic`, `image/heif`, `image/jpeg`, `image/png`, `image/tiff`

## Examples

### Sample request with metadata

**Request**

```json
{
  "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
  "evidence": {
    "category": "GENERIC_EVIDENCE",
    "text": "evidence as text",
    "metadata": {
      "key": "value"
    }
  }
}
```

**Response**

```json
{
  "evidence": {
    "id": "EVD_dbdda8e161b7bad8519f7f73",
    "dispute_id": "DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg",
    "category": "GENERIC_EVIDENCE",
    "type": "FILE",
    "created_at": "2022-01-01T12:00:00Z",
    "file": {
      "filename": "filename",
      "content_type": "application/pdf"
    },
    "text": "text",
    "metadata": {
      "my-meta": "meta-value"
    }
  }
}
```

**SDK Code**

```python Sample request with metadata
import requests

url = "https://api.cash.app/network/v1/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text"

payload = {
    "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
    "evidence": {
        "category": "GENERIC_EVIDENCE",
        "text": "evidence as text",
        "metadata": { "key": "value" }
    }
}
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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"idempotency_key":"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19","evidence":{"category":"GENERIC_EVIDENCE","text":"evidence as text","metadata":{"key":"value"}}}'
};

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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text"

	payload := strings.NewReader("{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"evidence\": {\n    \"category\": \"GENERIC_EVIDENCE\",\n    \"text\": \"evidence as text\",\n    \"metadata\": {\n      \"key\": \"value\"\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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text")

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  \"evidence\": {\n    \"category\": \"GENERIC_EVIDENCE\",\n    \"text\": \"evidence as text\",\n    \"metadata\": {\n      \"key\": \"value\"\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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text")
  .header("Content-Type", "application/json")
  .body("{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"evidence\": {\n    \"category\": \"GENERIC_EVIDENCE\",\n    \"text\": \"evidence as text\",\n    \"metadata\": {\n      \"key\": \"value\"\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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text', [
  'body' => '{
  "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
  "evidence": {
    "category": "GENERIC_EVIDENCE",
    "text": "evidence as text",
    "metadata": {
      "key": "value"
    }
  }
}',
  '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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text");
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  \"evidence\": {\n    \"category\": \"GENERIC_EVIDENCE\",\n    \"text\": \"evidence as text\",\n    \"metadata\": {\n      \"key\": \"value\"\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",
  "evidence": [
    "category": "GENERIC_EVIDENCE",
    "text": "evidence as text",
    "metadata": ["key": "value"]
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.cash.app/network/v1/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text")! 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",
  "evidence": {
    "category": "GENERIC_EVIDENCE",
    "text": "evidence as text"
  }
}
```

**Response**

```json
{
  "evidence": {
    "id": "EVD_dbdda8e161b7bad8519f7f73",
    "dispute_id": "DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg",
    "category": "GENERIC_EVIDENCE",
    "type": "FILE",
    "created_at": "2022-01-01T12:00:00Z",
    "file": {
      "filename": "filename",
      "content_type": "application/pdf"
    },
    "text": "text",
    "metadata": {
      "my-meta": "meta-value"
    }
  }
}
```

**SDK Code**

```python Sample request without metadata
import requests

url = "https://api.cash.app/network/v1/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text"

payload = {
    "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
    "evidence": {
        "category": "GENERIC_EVIDENCE",
        "text": "evidence as text"
    }
}
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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"idempotency_key":"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19","evidence":{"category":"GENERIC_EVIDENCE","text":"evidence as text"}}'
};

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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text"

	payload := strings.NewReader("{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"evidence\": {\n    \"category\": \"GENERIC_EVIDENCE\",\n    \"text\": \"evidence as text\"\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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text")

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  \"evidence\": {\n    \"category\": \"GENERIC_EVIDENCE\",\n    \"text\": \"evidence as text\"\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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text")
  .header("Content-Type", "application/json")
  .body("{\n  \"idempotency_key\": \"e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19\",\n  \"evidence\": {\n    \"category\": \"GENERIC_EVIDENCE\",\n    \"text\": \"evidence as text\"\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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text', [
  'body' => '{
  "idempotency_key": "e345c3fb-1caa-46fd-b0d3-aa6c7b00ab19",
  "evidence": {
    "category": "GENERIC_EVIDENCE",
    "text": "evidence as text"
  }
}',
  '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/disputes/DSPT_1fbjn9dg7rmz1xeyv6gkyh8vg/evidence-text");
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  \"evidence\": {\n    \"category\": \"GENERIC_EVIDENCE\",\n    \"text\": \"evidence as text\"\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",
  "evidence": [
    "category": "GENERIC_EVIDENCE",
    "text": "evidence as text"
  ]
] as [String : Any]

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

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