> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Revoke billing readiness

> Withdraw a billing-readiness confirmation that stopped being true

`POST /api/v2/storefront/account-mappings/ready-to-invoice/{assertionId}/revoke`

The reverse of [asserting billing readiness](/v2/storefront/buyer-account-mapping/tasks/ready-to-invoice),
and it **fails closed**: it immediately blocks new direct-billed activity on
the account (any active grant billed to this party moves to
`payment_required`), without touching buys already placed. It never falls
back to agent/Interchange billing on your behalf — that would put someone
else on the hook for an invoice you decided to send yourself.

## Request

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.interchange.io/api/v2/storefront/account-mappings/ready-to-invoice/331/revoke \
    -H "Authorization: Bearer $SCOPE3_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{ "reason": "Payment method declined; account moved to collections." }'
  ```
</CodeGroup>

## Parameters

| Field         | Type          | Required | Notes                                                                                                                                                                                                                                                   |
| ------------- | ------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `assertionId` | string (path) | Yes      | The assertion id from the assert response, from the review queue's `billingGate` (while the intake is still pending), or from [recovering it](/v2/storefront/buyer-account-mapping/tasks/list-ready-to-invoice) once the account has already activated. |
| `reason`      | string        | Yes      | 1–500 characters. Recorded on the assertion's audit trail.                                                                                                                                                                                              |

## Response

`200 OK` with the revoked assertion (`state: "revoked"`), in the same shape as
the [assert response](/v2/storefront/buyer-account-mapping/tasks/ready-to-invoice).

## Errors

* `400 VALIDATION_ERROR` — `reason` is missing, empty, or too long.
* `401 UNAUTHORIZED` — missing or invalid API key.
* `404 NOT_FOUND` — no *active* assertion with this id under your storefront. An already-revoked assertion 404s the same way.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Assert billing readiness" href="/v2/storefront/buyer-account-mapping/tasks/ready-to-invoice" icon="file-invoice-dollar">
    Confirm a direct-billed buyer is billable
  </Card>

  <Card title="Recover a billing-readiness assertion" href="/v2/storefront/buyer-account-mapping/tasks/list-ready-to-invoice" icon="magnifying-glass-dollar">
    Find the assertion id for an account that's already active
  </Card>

  <Card title="Buyer Account Mapping" href="/v2/storefront/buyer-account-mapping" icon="diagram-project">
    The review queue, whose `billingGate` field reflects this state
  </Card>
</CardGroup>
