For a failed classic USDC payment on Stellar, check the exact result code and the destination's trustline for that asset's issuer. A missing trustline, insufficient receiving capacity and missing issuer authorization are different failures. Increasing the sender's XLM balance does not automatically solve a receiver-side limit.
Identify the asset before editing a limit
Stellar classic assets are identified by their asset code and issuing account, as the asset documentation explains. The text USDC alone is not enough. Compare the network and issuer with Circle's official address directory, then compare those details with what the receiving wallet or platform accepts. Mainnet and testnet entries are separate.
This guide concerns a classic payment and its account trustline. A token transfer through a smart contract, a claimable balance or an application's internal balance may require different evidence. Do not create a trustline for an unfamiliar issuer merely because a search result labels its token USDC. An identical code does not establish identical redemption rights or support at the destination.
Read the operation result, not only 'transaction failed'
Stellar exposes both transaction-level and operation-level results. Its transaction result reference explains that tx_failed means an operation failed and the operations were not applied. The more specific payment code tells you which condition to investigate. Preserve the original hash and code before modifying a wallet setting.
| Payment evidence | Meaning for diagnosis | Who needs to act |
|---|---|---|
| PAYMENT_NO_TRUST | The destination lacks the required asset trustline | Destination account controller or receiving service |
| PAYMENT_LINE_FULL | Incoming amount does not fit alongside buying liabilities | Destination account controller or receiving service |
| PAYMENT_NOT_AUTHORIZED | Issuer authorization is missing at the destination | Issuer or relevant platform, following its supported process |
| PAYMENT_SRC_NO_TRUST | The source lacks the required asset trustline | Sender-side wallet or service |
| PAYMENT_NO_DESTINATION | The destination account does not exist | Sender and intended recipient must verify account setup |
| CHANGE_TRUST_LOW_RESERVE | Creating the trustline lacks sufficient reserve capacity | Controller of the account creating that trustline |
The payment result codes distinguish these conditions. Read the operation type too: path payments have their own result names and introduce route-related failures. A wallet's shortened 'failed' label should not turn a missing trustline into a fee problem.
Calculate receiving capacity with buying liabilities
A trustline limit is a ceiling for that particular asset, not an amount already paid to anyone. Its balance and liabilities matter together. The account reference describes buying liabilities as obligations from offers to buy the asset. Capacity reserved for those offers is not necessarily available for a separate incoming payment.
Here is a fictional example, with all numbers expressed in units of the same asset. The receiver has a limit of 500, a balance of 430 and buying liabilities of 50. The remaining receiving capacity is 500 minus 430 minus 50, or 20. A proposed payment of 30 does not fit, despite the 70-unit gap between the visible balance and the headline limit.
| Check in the fictional example | Amount | Interpretation |
|---|---|---|
| Trustline limit | 500 | Overall ceiling being tested |
| Current asset balance | 430 | Already occupying the trustline |
| Buying liabilities | 50 | Capacity committed to buying offers |
| Remaining capacity | 20 | Limit minus balance minus buying liabilities |
| Proposed incoming payment | 30 | Exceeds current capacity by 10 |
This arithmetic diagnoses capacity, not all conditions for success. Authorization, source funding, account existence and a valid transaction still matter. State can also change between inspection and submission. Increasing a limit or reducing a genuinely unwanted buying offer can change capacity, but neither action should be approved blindly or treated as a guarantee that a particular exchange deposit will be credited.
Keep the token limit separate from the XLM reserve
Creating a trustline adds an account subentry and can increase its minimum XLM reserve. That is a different quantity from the USDC holding limit. The Change Trust error reference separately identifies a low reserve and an invalid limit. Raising an existing limit does not create another trustline just because the permitted amount becomes larger.
If the receiving account lacks room for a new subentry, inspect that account's reserve position and any sponsorship arrangement. If its USDC trustline is already full, sending XLM to the sender does not create receiving capacity for USDC. Native XLM itself does not require an asset trustline, so success with an XLM transfer is not a complete test for receiving this USDC asset.
A safe sequence for a wallet or exchange deposit
- Save the network, transaction hash, operation type and full result code. Check whether the intended transfer actually succeeded before creating a replacement.
- Match the asset code and issuer on both sides. Do not substitute an unrelated USDC representation or network.
- Inspect the destination trustline's existence, limit, balance, buying liabilities and authorization status where available.
- If you control the destination, review the appropriate trustline or offer change in your trusted wallet. Confirm the asset and effect before signing.
- If a platform controls the destination, send its support the evidence. You cannot repair its trustline by changing a different account you own.
- After any correction, obtain current deposit instructions and rebuild only the payment that remains necessary. Preserve the earlier attempt for reconciliation.
For a custodial deposit, a successful ledger payment and the platform's internal credit are separate checks. A memo or other routing requirement can still matter after trustline capacity is resolved. If there is no transaction hash because the wallet rejected construction, say so; do not invent one or describe an unsigned draft as an onchain failure.
The USDC page helps keep the asset context distinct from the receiving network. Before a later no-account swap, use the current order's asset and network instructions. KOT.CASH's how-it-works page describes its exchange flow; this Stellar troubleshooting example does not assert that every USDC network or account configuration is accepted by a particular order.
FAQ
Why does Stellar USDC need a trustline?
For a classic non-native asset payment, the destination normally needs a trustline for the specific asset code and issuer. A line for another asset called USDC does not meet that requirement.
Can a Stellar trustline be full below its stated limit?
Yes, buying liabilities can occupy part of its receiving capacity. Compare the limit with both the current balance and those liabilities.
Does adding XLM increase a Stellar USDC trustline limit?
An XLM reserve and an asset's holding limit are different settings. Funding the relevant account can address a reserve shortage, but it does not by itself edit the USDC trustline limit.
Related on KOT.CASH
Sources
- developers.stellar.org/docs/learn/fundamentals/stellar-data-structures/assets
- developers.circle.com/stablecoins/usdc-contract-addresses
- developers.stellar.org/docs/data/apis/horizon/api-reference/errors/result-codes/transactions
- developers.stellar.org/docs/data/apis/horizon/api-reference/errors/result-codes/operation-specific/payment
- developers.stellar.org/docs/learn/fundamentals/stellar-data-structures/accounts
- developers.stellar.org/docs/data/apis/horizon/api-reference/errors/result-codes/operation-specific/change-trust
- developers.stellar.org/docs/learn/fundamentals/transactions/list-of-operations