---
title: "Report that USDC has been sent to Coinbase for offramp"
method: POST
path: "/v1/offramp/send-complete"
tags: ["offramp"]
---

# Report that USDC has been sent to Coinbase for offramp

`POST /v1/offramp/send-complete`

Called by the frontend after successfully sending USDC to Coinbase's deposit address.
Records the transaction hash on the withdrawal event for tracking.

## Headers

- `authorization` string, nullable — Bearer JWT issued by Grove.

## Request body

- OfframpSendCompleteRequest — Request model for POST /v1/offramp/send-complete. Frontend calls this after successfully sending USDC to Coinbase's deposit address.
  - `event_id` string, required — Withdrawal event ID from pending-send response
  - `tx_hash` string, required — Transaction hash of the USDC send

## Response `200`

Successful Response

- OfframpSendCompleteResponse — Response model for POST /v1/offramp/send-complete.
  - `success` boolean, required — Whether the send was recorded successfully
  - `event_id` string, required — Withdrawal event ID
  - `tx_hash` string, required — Transaction hash of the USDC send

## Other responses

- `400` — Event not found or not owned by account
- `401` — Missing or invalid JWT
- `422` — Validation Error

---

[API](https://skmtc.net/grove/apis/grove-api.md) · [All operations](https://skmtc.net/grove/apis/grove-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/grove/grove-api/revisions/f286b48a8105/schema)
