# token.transfer.retracted

Source: https://docs.settlemint.com/docs/api-reference/events/token-transfer-retracted
A token transfer event was retracted because a reorg invalidated its pending or final source.



A token transfer event was retracted because a reorg invalidated its pending or final source.

## Delivery contract [#delivery-contract]

| Field                   | Value                                             |
| ----------------------- | ------------------------------------------------- |
| Event type              | `token.transfer.retracted`                        |
| Version                 | `1`                                               |
| Lifecycle state         | `retracted`                                       |
| Counter-signed receipts | Recommended for endpoints that consume this event |
| SDK type                | `Webhook.TokenTransferRetractedV1`                |

This row gives advice only. DALP waits for a counter-signed receipt only if the webhook endpoint's `counterSignedReceipts` value is `true` when DALP queues the delivery. When the value is `false`, a normal 2xx response completes the delivery.

Related references:

* `idxr_token`

## Payload schema [#payload-schema]

```json
{
  "type": "object",
  "properties": {
    "tokenAddress": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$"
    },
    "chainId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "from": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$"
    },
    "to": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$"
    },
    "amount": {
      "type": "string"
    },
    "transactionHash": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{64}$"
    },
    "blockNumber": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "logIndex": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "supersedes": {
      "type": "string",
      "pattern": "^evt_[a-zA-Z0-9]+$"
    },
    "reorgBlockNumber": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "tokenAddress",
    "chainId",
    "from",
    "to",
    "amount",
    "transactionHash",
    "supersedes",
    "reorgBlockNumber"
  ],
  "additionalProperties": false
}
```

## TypeScript SDK example [#typescript-sdk-example]

```typescript fixture=webhook-consumer
import { verifyWebhook, type Webhook } from "@settlemint/dalp-sdk";

const result = verifyWebhook({
  rawBody,
  headers,
  secret: process.env.DALP_WEBHOOK_SECRET!,
});

if (!result.ok) {
  throw new Error(`Webhook verification failed: ${result.code}`);
}

if (result.event.type === "token.transfer.retracted") {
  const event: Webhook.Event<"token.transfer.retracted"> = result.event;
  console.log(event.payload);
}
```

## curl example [#curl-example]

```bash
curl -X POST https://consumer.example.com/dalp/webhooks \
  -H "content-type: application/json" \
  -H "webhook-id: evt_docs_token_transfer_retracted_001" \
  -H "webhook-timestamp: 1778112000" \
  -H "webhook-signature: v1,docs-example-signature" \
  --data '{"evt_id":"evt_docs_token_transfer_retracted_001","type":"token.transfer.retracted","version":1,"lifecycle_state":"retracted","supersedes":"evt_tokenTransfer001","request":{"idempotency_key":"idem_01JZP7R5W8M9N0P1Q2R3S4T5"},"related":{"idxr_token":"idxr_token_example"},"payload":{"tokenAddress":"0x5555555555555555555555555555555555555555","chainId":537001,"from":"0x6666666666666666666666666666666666666666","to":"0x7777777777777777777777777777777777777777","amount":"250000000000000000000","transactionHash":"0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","blockNumber":18445240,"logIndex":7,"supersedes":"evt_tokenTransfer001","reorgBlockNumber":18445201}}'
```

## Version history [#version-history]

* `v1`: Initial registry entry for `token.transfer.retracted`.

## Deprecation [#deprecation]

This event type is not deprecated.

## Manifest [#manifest]

The machine-readable AsyncAPI entry is published in the [DALP events manifest](/.well-known/dalp-events.json).
