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

# Cancel GRN

POST https://heimdall.eka.io/apis/external/grn/cancelGrn
Content-Type: application/json

### Cancel GRN

This API endpoint enables the cancellation of a Goods Receipt Note (GRN). To initiate the cancellation process, send an HTTP POST request to the specified URL, including the GRN ID in the payload. Provide remarks in the raw request body to offer additional context.

### Request Body

| Param   | Required  | Type   | Description                               |
| ------- | --------- | ------ | ----------------------------------------- |
| grnId   | Mandatory | String | The ID of the GRN to be canceled.         |
| remarks | Mandatory | String | Remarks or reasons for canceling the GRN. |

### Response

Upon successful cancellation, the API will respond with a JSON object containing a `success` key, indicating whether the cancellation was successful.

#### Example

```json
{
    "success": true
}

```

Reference: https://open-api-docs.dice.tech/dice-standardized-ap-is-v-2-copy/grn/cancel-grn

## Servers

- `https://heimdall.eka.io` (https://heimdall.eka.io, default)
- `https://heimdall.eka.ioapis` (https://heimdall.eka.ioapis)

## Request

### Headers

- `DICE-APP-ID` (string, optional) — Company Code of client
- `X-CLIENT-ID` (string, optional) — API Client ID
- `X-CLIENT-SECRET` (string, optional) — API Client Secret

### Body (application/json)

- `grnId` (string, required)
- `remarks` (string, required)

## Response

### 200

OK

- `success` (boolean, required)

## Examples

**Request**

```json
{
  "grnId": "GRN-INDIAN-00333",
  "remarks": "Cancel GRN Test"
}
```

**Response**

```json
{
  "success": true
}
```

**SDK Code**

```python GRN_Cancel GRN_example
import requests

url = "https://heimdall.eka.io/apis/external/grn/cancelGrn"

payload = {
    "grnId": "GRN-INDIAN-00333",
    "remarks": "Cancel GRN Test"
}
headers = {
    "DICE-APP-ID": "{{Company Code}}",
    "X-CLIENT-ID": "{{API Client ID}}",
    "X-CLIENT-SECRET": "{{API Client Secret}}",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript GRN_Cancel GRN_example
const url = 'https://heimdall.eka.io/apis/external/grn/cancelGrn';
const options = {
  method: 'POST',
  headers: {
    'DICE-APP-ID': '{{Company Code}}',
    'X-CLIENT-ID': '{{API Client ID}}',
    'X-CLIENT-SECRET': '{{API Client Secret}}',
    'Content-Type': 'application/json'
  },
  body: '{"grnId":"GRN-INDIAN-00333","remarks":"Cancel GRN Test"}'
};

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

```go GRN_Cancel GRN_example
package main

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

func main() {

	url := "https://heimdall.eka.io/apis/external/grn/cancelGrn"

	payload := strings.NewReader("{\n  \"grnId\": \"GRN-INDIAN-00333\",\n  \"remarks\": \"Cancel GRN Test\"\n}")

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

	req.Header.Add("DICE-APP-ID", "{{Company Code}}")
	req.Header.Add("X-CLIENT-ID", "{{API Client ID}}")
	req.Header.Add("X-CLIENT-SECRET", "{{API Client Secret}}")
	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 GRN_Cancel GRN_example
require 'uri'
require 'net/http'

url = URI("https://heimdall.eka.io/apis/external/grn/cancelGrn")

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

request = Net::HTTP::Post.new(url)
request["DICE-APP-ID"] = '{{Company Code}}'
request["X-CLIENT-ID"] = '{{API Client ID}}'
request["X-CLIENT-SECRET"] = '{{API Client Secret}}'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"grnId\": \"GRN-INDIAN-00333\",\n  \"remarks\": \"Cancel GRN Test\"\n}"

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

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

HttpResponse<String> response = Unirest.post("https://heimdall.eka.io/apis/external/grn/cancelGrn")
  .header("DICE-APP-ID", "{{Company Code}}")
  .header("X-CLIENT-ID", "{{API Client ID}}")
  .header("X-CLIENT-SECRET", "{{API Client Secret}}")
  .header("Content-Type", "application/json")
  .body("{\n  \"grnId\": \"GRN-INDIAN-00333\",\n  \"remarks\": \"Cancel GRN Test\"\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://heimdall.eka.io/apis/external/grn/cancelGrn', [
  'body' => '{
  "grnId": "GRN-INDIAN-00333",
  "remarks": "Cancel GRN Test"
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'DICE-APP-ID' => '{{Company Code}}',
    'X-CLIENT-ID' => '{{API Client ID}}',
    'X-CLIENT-SECRET' => '{{API Client Secret}}',
  ],
]);

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

```csharp GRN_Cancel GRN_example
using RestSharp;

var client = new RestClient("https://heimdall.eka.io/apis/external/grn/cancelGrn");
var request = new RestRequest(Method.POST);
request.AddHeader("DICE-APP-ID", "{{Company Code}}");
request.AddHeader("X-CLIENT-ID", "{{API Client ID}}");
request.AddHeader("X-CLIENT-SECRET", "{{API Client Secret}}");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"grnId\": \"GRN-INDIAN-00333\",\n  \"remarks\": \"Cancel GRN Test\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift GRN_Cancel GRN_example
import Foundation

let headers = [
  "DICE-APP-ID": "{{Company Code}}",
  "X-CLIENT-ID": "{{API Client ID}}",
  "X-CLIENT-SECRET": "{{API Client Secret}}",
  "Content-Type": "application/json"
]
let parameters = [
  "grnId": "GRN-INDIAN-00333",
  "remarks": "Cancel GRN Test"
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://heimdall.eka.io/apis/external/grn/cancelGrn")! 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()
```