# Minting Services Terms

Source: https://developers.bitgo.com/docs/stablecoins-terms

## Overview

Before an enterprise can mint or burn stablecoins through the BitGo platform, a user must accept the minting services terms on behalf of the enterprise. This guide describes how to review and accept the terms through the API.

If you don't agree to the terms, calls to [Create Stablecoin Order](/reference/stablecoinv1enterpriseorderpost) fail with a **401 Unauthorized** response.

## Prerequisites

[Stablecoin Overview](docs/stablecoins-overview)

## Cookbook

Want the steps without the walkthrough? Expand the cookbook below:

  <Cookbook slug="scaas-minting-terms" title="Accept Minting Services Terms" />

## 1. Review Terms

Review the <a href="https://www.bitgo.com/legal/bitgo-coin-minting-services-terms/" target="_blank" rel="noreferrer">BitGo Coin Minting & Redemption Services Terms</a> in full. [Crypto-as-a-Service (CaaS)](/docs/crypto-as-a-service-overview) clients should present the full terms to their end users. Use the link above to retrieve the terms verbiage, as no API endpoint currently exists to fetch them programmatically.

## 2. Check Terms Status (Optional)

Retrieve the enterprise details to check whether your enterprise has accepted the minting services terms. If `stablecoinAgreement` is absent or empty, proceed to Step 3 to accept the terms.

> Endpoint: [Get Enterprise](/reference/enterprisegetbyid)

```shell cURL
export BITGO_ENV="test"  # or "prod" for production
export ENTERPRISE_ID="<ENTERPRISE_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X GET \
  "http://$BITGO_EXPRESS_HOST/api/v2/enterprise/$ENTERPRISE_ID" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```

#### Step Result 

 * Not Accepted - The response includes a `stablecoinAgreementLatestVersion` field that contains a version number that will be used to accept the terms in the next step. 
 * Accepted - The response includes a `stablecoinAgreement` field that contains an array of agreement records when your enterprise has confirmed the terms.

```json (Not Accepted)
{
  "stablecoinAgreementLatestVersion": 1, // This value becomes your version in the next step.
}
```
```json (Accepted)
{
  "id": "6437d9ae435d8b0007635c3f0db52154",
  "name": "Example Enterprise",
  "stablecoinAgreement": [
    {
      "user": "682de31be80bbf9a733a2553d30e5cb5",
      "date": "2026-03-23T14:20:58.892Z",
      "ip": "10.24.183.6",
      "version": 1
    }
  ],
  "stablecoinAgreementLatestVersion": 1,
  ...
}
```

## 3. Accept the Terms

When you accept the terms on behalf of your enterprise, the `version` field must match the current version of the terms. You can retrieve the latest version from the `stablecoinAgreementLatestVersion` field in the enterprise details response in Step 2.

> Endpoint: [Accept Minting Terms](/reference/stablecoinv1enterpriseagreementput)

```shell cURL
export BITGO_ENV="test"  # or "prod" for production
export ENTERPRISE_ID="<ENTERPRISE_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export STABLECOIN_AGREEMENT_LATEST_VERSION="<STABLECOIN_AGREEMENT_LATEST_VERSION"> 

curl -X PUT \
  https://app.bitgo-$BITGO_ENV.com/api/stablecoin/v1/enterprise/$ENTERPRISE_ID/agreement \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "version": $STABLECOIN_AGREEMENT_LATEST_VERSION
  }'
```

#### Step Result

```json JSON
{
  "enterpriseId": "6437d9ae435d8b0007635c3f0db52154",
  "version": 1
}
```
## See Also

- [Stablecoin Overview](/docs/stablecoins-overview)
- [BitGo Coin Minting & Redemption Services Terms and Public Terms](https://www.bitgo.com/legal/bitgo-coin-minting-services-terms/)
- [Mint Stablecoins](/docs/stablecoins-mint)
- [Burn Stablecoins](/docs/stablecoins-redeem)
