# Revoke an Address

Stop using an address the user proved: no new virtual IBAN can deliver to it.

## Overview

- `204` with no body. `404` when the user holds no such address — revoked already, another user's, or never proven.
- **`409` `NOAH_ADDRESS_IN_USE` while one of the user's payouts is still waiting for a deposit from that address** ([Pay from a Wallet](https://docs.aureahub.com/docs/payout-wallet-pay.md)). The answer names the payout waiting (`details.payoutId`) and when its rule stops holding the address (`details.expiresAt`), and the address is kept. Send that deposit, or wait until then.
- After it, [Initiate Deposit](https://docs.aureahub.com/docs/payin-initiate.md) refuses the address with `400` `NOAH_DESTINATION_NOT_ALLOWED`.
- **A virtual IBAN created earlier for that address keeps delivering there**: revoking changes nothing at the bank ramp. Stop showing that IBAN to the user.
- Answers whatever your tenant's settings: a user can always stop using what they proved. The address can be proven again with a new challenge.
- Aurea records every revocation in your tenant's activity log.
- Answers `403` to a token without a tenant, and when your tenant does not use the bank ramp.

## Endpoint

### `DELETE /v1/ramp/bank/addresses/{id}`

Authentication: bearer token required.

Revokes one of the user's proven addresses.

**Path parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | The address `id`, a UUID |

**Responses**

`204` No Content

`404` Not Found

```json
{ "statusCode": 404, "error": "NotFoundError", "message": "This user holds no such address" }
```

`409` A payout is waiting for it

```json
{
  "statusCode": 409,
  "error": "ConflictError",
  "message": "A payout is still waiting for a deposit from this address: send it, or wait until the payout's time runs out, and then stop using the address.",
  "details": {
    "code": "NOAH_ADDRESS_IN_USE",
    "payoutId": "6b1f0d24-9c3a-4f18-b7e5-2a8c4d6e0f13",
    "expiresAt": "2026-09-17T13:00:00.000Z"
  }
}
```

## Implementation

```javascript
async function revokeAddress(token, addressId) {
  const res = await fetch(`https://api.aureahub.com/v1/ramp/bank/addresses/${addressId}`, {
    method: 'DELETE',
    headers: { Authorization: `Bearer ${token}` }
  });

  if (res.status === 204) return true;
  const data = await res.json();
  throw new Error(`${res.status}: ${data.message}`);
}
```

---

Web version: https://docs.aureahub.com/#bank-address-revoke
