# Send a Link Signature

> Coming soon, upon request — this feature is turned on for your tenant by the Aurea team. [Contact us](https://www.aureahub.com/contact)

Send the wallet's signature of a link's message: Aurea checks it is the wallet's, then links the wallet at the bank ramp.

## Overview

- `signature`: the wallet's 65-byte hex signature of the link's `message` (`personal_sign`; an MPC ceremony signs the `digest`). Aurea checks it recovers to the wallet's address before anything is sent: otherwise `400` `BANK_RAMP_SIGNATURE_INVALID` (`details.reason` `malformed` or `wrong_signer`) and the link keeps waiting.
- `200` `linked`, or `202` `pending` while the bank ramp checks it.
- `404` `BANK_RAMP_LINK_NOT_FOUND`: no such link of the user. `409` `BANK_RAMP_LINK_NOT_AWAITING_SIGNATURE` (`details.status`): it is not waiting. `409` `BANK_RAMP_LINK_EXPIRED`: its 15 minutes are over — link the wallet again.
- The bank ramp unavailable or failing (`502`, `503`): the link goes back to waiting, so send the same signature again while it lasts. The bank ramp refusing it: the link is `failed`, with the code in `failureCode`.

## Endpoint

### `POST /v1/ramp/bank/customer/wallets/{linkId}/signature`

Authentication: bearer token required.

Sends the wallet's signature of a waiting link to the bank ramp.

**Path parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `linkId` | string | yes | The link's `linkId` |

**Request body**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `signature` | string | yes | The wallet's signature of `message`, hex (1 to 200 characters) |

**Responses**

`200` Linked

```json
{
  "linkId": "9e3b6a1f-4c2d-4e8b-a7f0-5d1c3b9e2a64",
  "walletId": "0b7d2e4f-6a8c-4e1b-9d3f-2c5a7e9b1d40",
  "address": "0xC0207704CaEB9342cf491Ad4a177F43592df65a7",
  "network": "gnosis",
  "environment": "sandbox",
  "signer": "client",
  "status": "linked",
  "message": null,
  "digest": null,
  "expiresAt": null,
  "failureCode": null,
  "linkedAt": "2026-10-14T09:31:10.000Z",
  "createdAt": "2026-10-14T09:30:00.000Z"
}
```

`400` Not the wallet's

```json
{
  "statusCode": 400,
  "error": "BadRequestError",
  "message": "The signature is not the wallet's over the message.",
  "details": { "code": "BANK_RAMP_SIGNATURE_INVALID", "reason": "wrong_signer" }
}
```

`409` Expired

```json
{
  "statusCode": 409,
  "error": "ConflictError",
  "message": "The time to sign this wallet link is over: link the wallet again.",
  "details": { "code": "BANK_RAMP_LINK_EXPIRED" }
}
```

---

Web version: https://docs.aureahub.com/#bank-customer-wallet-signature
