Skip to content

How to Send a Noah Stablecoin Payout (2026)

Turn USDC into local fiat with Noah's payout API: channels, JSON Schema forms, prepare pricing, Nonce idempotency, and webhook tracking, step by step.

Table of Contents

Most stablecoin offramps stop at a US bank account. Noah's payout API is built for the harder job: turning USDC into local currency in markets where the recipient expects a SEPA credit, a Fedwire, or a mobile money wallet.

The named object here is the Noah stablecoin payout: a sell transaction on Noah's Business API that converts stablecoins from your balance into fiat and pays a recipient through a runtime-selected channel. This guide walks the five API calls in order, shows a worked Fedwire example with the real numbers from Noah's sandbox docs, and ends with Stablecoin Insider's take on when Noah is the right payout rail.

Key Takeaways

  • A Noah stablecoin payout is five calls: countries, channels, form, prepare, sell.
  • Read channel IDs at runtime; Noah says they change and must not be cached.
  • Prepare returns a fee, a crypto estimate, a ceiling, and a FormSessionID.
  • Every sell needs a unique Nonce, which never expires, so retries stay safe.
  • Production requires an ES384 or ES256 signed JWT in the Api-Signature header.
📌
Stablecoin Insider's framing: use this guide when your platform holds USDC (or another supported stablecoin) and must pay recipients in many local currencies through one integration. If you only need a US bank offramp, start with How to Off-Ramp USDC to ACH or Wire. If the payout lands as a stablecoin in a wallet, Modern Treasury or Circle payout guides fit better.

Facts in this guide come from Noah's public documentation as of October 5, 2026: the Global Payout product page, the Direct Payout to US Business recipe, and the Channels, Idempotence, and Transaction webhook concept pages. Noah does not publish a fixed fee schedule, so no fee in this article is a price quote.

What a Noah stablecoin payout actually is

Noah describes Global Payout as converting crypto into over 120 fiat currencies and delivering through local methods across 60+ countries, per its Global Payout page. Delivery methods listed there include bank transfers, mobile money, digital wallets, and cash pickup.

Under the hood, a payout is a sell transaction. Your business balance funds it, Noah converts the stablecoin, and the fiat leg goes out on the channel you picked. The transaction record shows Direction: Out and Network: OffNetwork for a fiat payout to a bank, according to the Transaction webhook reference.

That distinction matters. You aren't sending USDC to a wallet. You're spending USDC to buy a fiat payment.

Who should use Noah for stablecoin payouts

Noah's product page names five fits: crypto exchanges handling fiat withdrawals, remittance services, gig platforms paying contractors, marketplaces settling sellers, and gaming payouts. All five share one trait: recipients live in many countries and expect local rails.

Skip Noah if your recipients are mostly US businesses on ACH and wire. A narrower offramp is simpler (see How to Off-Ramp USDC to ACH or Wire). Skip it too if recipients want stablecoins, not fiat; How to Send a Modern Treasury Stablecoin Payout and How to Send a Circle Stablecoin Payout cover wallet delivery.

Prerequisites before your first payout

Noah's payout recipe lists the setup: register interest at business@noah.com, sign up for a sandbox account, and ask Noah to upgrade it to a business account. Then generate a sandbox API key in the Business Dashboard.

  • Base URLs: https://api.sandbox.noah.com/v1 for sandbox and https://api.noah.com/v1 for production, per Noah's developer index.
  • Auth: every request carries an X-Api-Key header.
  • Request signing: an Api-Signature JWT is mandatory in production, signed with ES384 (ES256 also accepted) and audience https://api.noah.com, per the Request Signing page.
  • Sandbox assets carry a _TEST suffix, so you'll send USDC_TEST, not USDC.
  • Webhooks: subscribe to the Transaction event before you send anything.

Choose a compliance model first

Noah supports two models, explained on its Compliance Overview. The choice changes how you create customers, so make it before writing code.

ModelWho it fitsHow customers get onboarded
RelianceRegulated businesses that already run KYCYou share simplified KYC data via PUT /customers/{CustomerID}; Noah spot-checks full KYC packs
StandardTechnology providers without their own licensesNoah runs KYC through hosted onboarding or prefill; customers still accept Noah's terms in a hosted session

Stablecoin Insider's read: most startups land on Standard. Reliance is only open to regulated entities, and Noah says those customers must hold valid, unexpired KYC in your system every time they transact (source).

Step 1: Create or update the customer

Call PUT /customers/{CustomerID} with your own CustomerID. For a business recipient, Noah's recipe sends Type Business, RegisteredName, RegistrationNumber, RegistrationCountry, RegisteredAddress, and IncorporationDate.

PUT https://api.sandbox.noah.com/v1/customers/acme-contractor-001
X-Api-Key: <sandbox key>

{
  "Type": "Business",
  "RegisteredName": "Acme Corporation",
  "RegistrationNumber": "12-3456789",
  "RegistrationCountry": "US",
  "RegisteredAddress": { "Street": "123 Main Street", "City": "San Francisco",
    "PostCode": "94105", "State": "CA", "Country": "US" },
  "IncorporationDate": "2010-03-15"
}

Store the CustomerID against the same compliance profile in your system. Every later payout references it.

Step 2: Find the payout channel at runtime

A channel is Noah's term for a payment route with fixed details: country, fiat currency, and payment method type, plus its own fees and limits. The Channels page says a Country code of XX marks a channel usable across multiple countries.

First call GET /channels/sell/countries. Then call GET /channels/sell with Country, CryptoCurrency, FiatCurrency, and optionally FiatAmount to get price calculations back.

GET https://api.sandbox.noah.com/v1/channels/sell?Country=US&CryptoCurrency=USDC_TEST&FiatCurrency=USD
X-Api-Key: <sandbox key>

Noah's sandbox demo response in the recipe returns three US channels. The values below are illustrative sandbox output, not a price list:

PaymentMethodTypeDemo TotalFeeDemo limitsDemo ProcessingSeconds
TokenizedCard4.51.2 to 1,000,00060
BankFedwire0.030 to 15,00086400
BankAch0.030 to 15,00086400
SourceNoah Direct Payout recipeSandbox demo bodyNot an SLA
⚠️
Hard rule from Noah's docs: channel IDs must be read from GET /channels/sell at runtime. They are not stable enough to hardcode or cache, and their limits change. Treat the channel list like a live quote, not a config file.

Step 3: Render or fill the dynamic form

Each channel needs different recipient data. Call GET /channels/{ChannelID}/form to get a JSON Schema FormSchema. For the US BankFedwire channel in Noah's recipe, the required fields are AccountHolderAddress, BankDetails (AccountNumber and a 9-digit routing BankCode), and PaymentPurpose.

Outside the US the schema changes. Noah's Channels page shows a German EUR channel whose AccountNumber field is a 22-character IBAN validated against the pattern ^DE[0-9]{2}[A-Z0-9]{18}$. That's the point of the dynamic form: your UI doesn't hardcode per-country bank rules.

Returning recipients are cheaper to handle. If you pass an existing PaymentMethodID, Noah requests only the fields it doesn't already hold, per the recipe's prepare notes.

Step 4: Prepare the transaction

Call POST /transactions/sell/prepare with ChannelID, CryptoCurrency, FiatAmount, and the Form. Prepare does two jobs: it returns the freshest pricing estimate and pre-validates the form data.

POST https://api.sandbox.noah.com/v1/transactions/sell/prepare

{
  "ChannelID": "<BankFedwire channel ID from Step 2>",
  "CryptoCurrency": "USDC_TEST",
  "FiatAmount": "1000.0",
  "Form": {
    "AccountHolderAddress": { "Address": "123 Main Street", "City": "New York",
      "State": "NY", "PostalCode": "10001" },
    "BankDetails": { "AccountNumber": "12345678", "BankCode": "123456789" },
    "PaymentPurpose": "Contractor invoice"
  }
}

The response carries four fields you must persist:

  • CryptoAmountEstimate: estimated stablecoin spent.
  • CryptoAuthorizedAmount: the maximum Noah may charge you. Noah suggests sizing it from GET /prices plus a slippage buffer that matches your risk appetite.
  • FormSessionID: the handle you submit in Step 5.
  • TotalFee: the channel fee, always in the fiat currency of the payout.

Field definitions come from Noah's Direct Payout recipe. If you settle with an end customer, debit them in your own ledger using FiatAmount as the reference for absorbing or passing on fees.

Step 5: Submit the sell with a Nonce

Call POST /transactions/sell with CryptoCurrency, FiatAmount, CryptoAuthorizedAmount, FormSessionID, a unique Nonce, and your own ExternalID for reconciliation.

POST https://api.sandbox.noah.com/v1/transactions/sell

{
  "CryptoCurrency": "USDC_TEST",
  "FiatAmount": "1000.0",
  "CryptoAuthorizedAmount": "1010.03",
  "FormSessionID": "<from prepare>",
  "Nonce": "<new UUID per payout>",
  "ExternalID": "invoice-2026-10-0042"
}

Noah's Idempotence page explains why the Nonce matters. It guarantees transaction idempotency, not request idempotency, and it has no expiration. Typical idempotency keys expire after 24 hours, which leaves a gap if a response never arrives.

Balance behavior is specific. On creation, your AvailableBalance drops immediately. If price moves past your ceiling, Noah cancels and refunds AvailableBalance. On settlement, TotalBalance drops by the final amount and AvailableBalance is adjusted for any gap versus CryptoAuthorizedAmount, per the recipe.

Step 6: Track the payout with webhooks

The Transaction webhook fires on creation and whenever Status, SubStatus, Refunds, or RFI changes. Status is one of three values: Pending, Failed, or Settled, per Noah's Transaction Event reference.

SubStatus (while Pending)Meaning per Noah
AmlScreeningAutomatic compliance, KYT, or travel-rule screening in flight
UnderReviewPayment held for transaction-monitoring review
SubmittedOutbound payment sent to the external provider
ConfirmingProvider processing, awaiting final confirmation

Plan for RFIs too. When Noah opens a request for information, the RFI object moves through AwaitingCustomer, UnderReview, Closed, and Completed. Noah's compliance freeze page says a customer has 10 days to supply requested documents before the transaction is rejected and refunded. For a payout funded from a prefunded dashboard balance, the refund goes back to the Custodian Stablecoin Account.

Worked example: a $1,000 Fedwire payout funded with USDC

Here's the full sandbox run using the numbers in Noah's Direct Payout recipe. A SaaS platform pays a US contractor's business account by wire.

  • PUT the business customer (acme-contractor-001).
  • GET /channels/sell for US, USDC_TEST, USD; pick the BankFedwire channel ID returned today.
  • GET the channel form; fill AccountHolderAddress, BankDetails, PaymentPurpose.
  • Prepare with FiatAmount 1000.0. Demo response: TotalFee 0.03, CryptoAmountEstimate 1000.03, CryptoAuthorizedAmount 1010.03.
  • Submit the sell with the FormSessionID, a fresh Nonce, and ExternalID set to the invoice number.
  • Wait for the Transaction webhook to move from Pending to Settled before marking the invoice paid.

Stablecoin Insider's math on those documented demo values: the ceiling (1010.03) sits 10.00 USDC above the estimate (1000.03), a buffer of about 1.0%. The fee itself is 0.03 on a 1,000 payout, or 0.003%. In production, size your buffer from live GET /prices data rather than copying 1%.

Global Payout vs Automated Payout: pick the right Noah product

Noah ships a second payout product. The Automated Payout recipe uses POST /workflows/onchain-deposit-to-payment-method to trigger a fiat payout whenever a crypto deposit is detected, which removes the need to pre-fund.

QuestionGlobal Payout (sell)Automated Payout (workflow)
Who funds itYour prefunded Noah balanceA customer's onchain deposit
TriggerYour API call per payoutDeposit detected on a designated address
Best forContractor runs, marketplace settlements, B2B invoicesOfframp-on-deposit flows where users send USDC themselves
Key endpointPOST /transactions/sellPOST /workflows/onchain-deposit-to-payment-method

Noah also offers a hosted offramp interface and manual dashboard payouts, per the product page. The same page puts white-label integration at 2 to 3 weeks from contract to go-live.

How Noah compares with other stablecoin payout rails

QuestionNoahBlindPayModern Treasury
What the recipient getsLocal fiat on a runtime channel (bank, mobile money, wallet, cash pickup)Bank fiat on documented railsStablecoin wallet credit via Payment Orders
Pricing handlePrepare: estimate plus CryptoAuthorizedAmount ceilingShort-lived payout quotePayment Order amount
Retry safetyNon-expiring NonceSingle-use quote IDPlatform idempotency
SCI guideThis postBlindPay how-toModern Treasury how-to

Other sibling guides: How to Send a zerohash Stablecoin Payout, How to Send a Ripple Payments Direct USDC Payout, and How to Create a Bridge Liquidation Address for Tempo USDC. For the market view, see Best Stablecoin On/Off-Ramps Compared, stablecoin payouts on Tron vs Solana, stablecoin transfers for cross-border payroll, and cross-border payments on stablecoin rails.

Where Noah payouts break

  • Hardcoded channel IDs. Noah says they change; cache them and payouts fail.
  • Thin CryptoAuthorizedAmount. Too tight a ceiling and price moves cancel the sell.
  • Unsigned production calls. Sandbox tolerates a missing Api-Signature; production doesn't.
  • Ignoring RFIs. A 10-day document window can stall a contractor run if nobody owns it.
  • Assuming a fee schedule. Noah publishes no fixed price list; the channel response is the quote.
💡
Stablecoin Insider's take: Noah is the strongest fit when the hard part of your payout is breadth, not the stablecoin leg. The runtime channel model plus JSON Schema forms means one integration can reach mobile money in Ghana and SEPA in Germany without per-country code. The trade-off is operational: you must treat channels as live data, size slippage ceilings yourself, and staff RFI handling. Teams paying a handful of US vendors should pick a simpler offramp; teams paying contractors in 20 countries should prototype Noah in sandbox first.

Shipping a Noah stablecoin payout? Run one sandbox customer, one runtime channel lookup, one prepare, one Nonce-protected sell, and one Settled webhook before you touch production keys.

Need a bank offramp with a short-lived quote instead? Compare the BlindPay flow next.

Send a BlindPay Stablecoin Payout
How to Send a BlindPay Stablecoin Payout (2026)
Sibling operator guide for quote-locked stablecoin to bank payouts on BlindPay.

FAQ

What is a Noah stablecoin payout?

It's a sell transaction on Noah's Business API that converts stablecoins from your balance into local fiat and pays a recipient through a channel such as Fedwire, ACH, SEPA, or mobile money.

How many currencies does Noah pay out in?

Noah says over 120 fiat currencies across 60+ countries on its Global Payout page. Check GET /channels/sell/countries for what your account can reach today.

Which API calls does a Noah payout need?

Five, in order: GET /channels/sell/countries, GET /channels/sell, GET /channels/{ChannelID}/form, POST /transactions/sell/prepare, and POST /transactions/sell.

Can you cache Noah channel IDs?

No. Noah's docs say channel IDs must be read at runtime because they aren't stable and their limits change.

How does Noah prevent duplicate payouts?

Every transactional call requires a unique Nonce. Noah's nonce guarantees the transaction runs once and doesn't expire, unlike 24-hour idempotency keys.

What does CryptoAuthorizedAmount do?

It caps how much stablecoin Noah can spend on the payout. If the price moves beyond it, Noah cancels the sell and refunds your available balance.

Do you need your own license to use Noah?

Not necessarily. Unlicensed technology providers use the Standard model, where Noah runs KYC. Regulated firms can use the Reliance model and share their own KYC data.

How do you know a Noah payout landed?

Listen for the Transaction webhook. Status moves from Pending to Settled on success or Failed otherwise, with SubStatus detail while pending.


This content is provided for informational and educational purposes only and does not constitute financial, investment, legal, or tax advice; no material herein should be interpreted as a recommendation, endorsement, or solicitation to buy or sell.

Latest