Submit an Attestation
An attestation is a permissioned request to mint or burn tokens. It includes the amount, wallet IDs, proof of funds, and metadata like transaction references. This guide walks through submitting a new attestation for review.
Prerequisites
Section titled “Prerequisites”Before you begin, ensure:
- You have uploaded any supporting documents and received
blobId
s - Your submitter wallet has the
SUBMITTER_ROLE
- You have the
stablecoinId
for the token
Endpoint
Section titled “Endpoint”POST /v2/stablecoin/{stablecoinId}/attestation
Example Request
Section titled “Example Request”{ "type": "mint", "amount": "1000000000000000000", "sourceWalletId": "{{walletId}}", "destinationWalletId": "{{walletId}}", "signerWalletId": "{{walletId}}", "transactionReference": "WIRE-REF-2025-001", "transactionDate": "2025-05-08T12:00:00Z", "documents": [ { "blobId": "{{blobId}}" } ], "additionalNotes": "USDC treasury deposit received"}
type
:"mint"
or"burn"
amount
: Value in base units (e.g. 1 USDC =1000000
if 6 decimals)sourceWalletId
: For mint – where the backing value came from (bank, custodian)destinationWalletId
: For mint – where tokens should be sentsignerWalletId
: Wallet authorized to sign and submit this attestationtransactionReference
: Bank wire or internal referencetransactionDate
: ISO timestamp of fiat eventdocuments
: Array of{ blobId }
for uploaded filesadditionalNotes
: Optional free text
Example Request
curl -X POST https://api.fsco.io/v2/stablecoin/{{stablecoinId}}/attestation \ -H "Authorization: Bearer $FSCO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "mint", "amount": "1000000000000000000", "sourceWalletId": "{{walletId}}", "destinationWalletId": "{{walletId}}", "signerWalletId": "{{walletId}}", "transactionReference": "WIRE-REF-2025-001", "transactionDate": "2025-05-08T12:00:00Z", "documents": [ { "blobId": "blob_abc123" } ], "additionalNotes": "USDC treasury deposited" }'
import axios from 'axios';
const FSCO_API_KEY = process.env.FSCO_API_KEY;
const submitAttestation = async () => { const response = await axios.post( 'https://api.fsco.io/v2/stablecoin/{{stablecoinId}}/attestation', { type: 'mint', amount: '1000000000000000000', sourceWalletId: '{{walletId}}', destinationWalletId: '{{walletId}}', signerWalletId: '{{walletId}}', transactionReference: 'WIRE-REF-2025-001', transactionDate: '2025-05-08T12:00:00Z', documents: [ { blobId: 'blob_abc123' } ], additionalNotes: 'USDC treasury deposited' }, { headers: { Authorization: `Bearer ${FSCO_API_KEY}`, 'Content-Type': 'application/json' } } );
console.log('Attestation submitted:', response.data);};
submitAttestation();
import requestsimport os
FSCO_API_KEY = os.getenv("FSCO_API_KEY")
headers = { "Authorization": f"Bearer {FSCO_API_KEY}", "Content-Type": "application/json",}
payload = { "type": "mint", "amount": "1000000000000000000", "sourceWalletId": "{{walletId}}", "destinationWalletId": "{{walletId}}", "signerWalletId": "{{walletId}}", "transactionReference": "WIRE-REF-2025-001", "transactionDate": "2025-05-08T12:00:00Z", "documents": [{"blobId": "blob_abc123"}], "additionalNotes": "USDC treasury deposited",}
response = requests.post( "https://api.fsco.io/v2/stablecoin/{{stablecoinId}}/attestation", json=payload, headers=headers,)
print("Attestation submitted:", response.json())
using System;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Threading.Tasks;
class Program{ static async Task Main() { var apiKey = Environment.GetEnvironmentVariable("FSCO_API_KEY");
var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
var json = @"{ ""type"": ""mint"", ""amount"": ""1000000000000000000"", ""sourceWalletId"": ""{{walletId}}"", ""destinationWalletId"": ""{{walletId}}"", ""signerWalletId"": ""{{walletId}}"", ""transactionReference"": ""WIRE-REF-2025-001"", ""transactionDate"": ""2025-05-08T12:00:00Z"", ""documents"": [ { ""blobId"": ""blob_abc123"" } ], ""additionalNotes"": ""USDC treasury deposited"" }"; var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.fsco.io/v2/stablecoin/{{stablecoinId}}/attestation", content); var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine("Attestation submitted: " + responseString); }}
Response
{ "attestationId": "{{attestationId}}" }
The response returns an
attestationId
, which is used to verify, reject, or execute the attestation.