Skip to main content
A beneficiary is a registered bank account recipient for fiat payouts, like an address book entry for stablecoin payouts. Register a beneficiary for each recipient, and wait for it to become ACTIVE before you send a payout to it.

Prerequisites

Before you begin, ensure that you’ve:
  • Enabled fiat payout permissions on your Managed Payments account.
  • Created an API key with Managed Payments access from the Circle hub.

Steps

Step 1. Get field requirements

The required fields vary by corridor. Call GET /v1/beneficiaries/requirements with the corridor parameters and the customerType to get the fields you must supply. This example gets the requirements for an individual recipient in Mexico who is paid over SPEI, Mexico’s interbank payment system:
In the registration request, send the fields in two objects, split by field name:
  • travelRule: fields that start with BENEFICIARY_, such as BENEFICIARY_NAME and BENEFICIARY_ADDRESS. These are the recipient details the Travel Rule requires.
  • bankAccount: all other fields, such as CLABE, IBAN, and ACCOUNT_NUMBER.

Step 2. Register a beneficiary

You can’t update a beneficiary. To fix an error, delete it and register it again with the corrected details. Use the new beneficiary ID in your payout requests.
Send the fields from Step 1 to POST /v1/beneficiaries. This example registers an individual SPEI beneficiary in Mexico:
The response returns 201. The status is INACTIVE while Circle screens the beneficiary:
Save the id. You use it as the destination.id when you send a payout.

Step 3. Wait for the beneficiary to become active

Circle screens the beneficiary in the background, and you can’t send a payout to it until its status is ACTIVE. Subscribe to the payouts.beneficiary.updated webhook event to learn when screening finishes. To set up your endpoint, see Set up a webhook endpoint. To secure it, see Webhook security. If you can’t receive webhooks, such as when testing without a public endpoint, poll GET /v1/beneficiaries/{id} until status changes from INACTIVE:
If status is DENIED, screening rejected the beneficiary. Delete it and register a new one.

Manage existing beneficiaries

List beneficiaries

Call GET /v1/beneficiaries to retrieve your beneficiaries. Use the status query parameter to filter the results, and pageSize, pageAfter, and pageBefore to page through them.

Delete a beneficiary

Call DELETE /v1/beneficiaries/{id} to delete a beneficiary. Circle permanently removes the recipient’s personal data, and GET /v1/beneficiaries/{id} returns 404 afterward. Deleting a beneficiary that’s already deleted also succeeds.
A successful delete returns 204 No Content.

Recover a stale beneficiary

If a corridor’s required fields change after you register a beneficiary, its status becomes STALE and it can’t receive payouts. To recover, call GET /v1/beneficiaries/requirements for the current fields, delete the beneficiary, and register it again. To send a fiat payout using an ACTIVE beneficiary, see Send fiat payouts.