Kobaru
  1. API Reference
Kobaru
  • Kobaru.io Gateway API
    • Introduction
      • What is Kobaru?
      • Quick start
      • How x402 works
    • Integration
      • Standard x402 SDK
      • Advanced SDK
      • Transparent proxy integration
      • Direct API integration
    • Core Concepts
      • Available Chains and Assets
      • Payment schemes
      • Security
      • Usage models
    • Guides
      • Pricing your API
      • Going to Production
      • Testing with devnet
      • Bazaar discovery
    • API Reference
      • Error Handling
      • Get Supported Payment Kinds
        GET
      • Verify Payment Authorization
        POST
      • Settle Payment
        POST
    • Discovery
      • List Discovery Resources
    • Schemas
      • SupportedResponse
      • ErrorResponse
      • UnauthorizedResponse
      • RateLimitResponse
      • VerifySuccessResponse
      • VerifyErrorResponse
      • SettleSuccessResponse
      • SettleErrorResponse
      • DiscoveryResourceItem
      • ListDiscoveryResourcesResponse
  1. API Reference

Error Handling

Error codes#

Complete reference for all error codes returned by the Kobaru Gateway API.
When an API request fails, Kobaru returns a structured error response with a specific error code. Use this reference to understand what went wrong and how to fix it.

Error response format#

All errors follow a consistent JSON structure:
{
  "isValid": false,
  "invalidReason": "error_code_here",
  "error": "Human-readable error message"
}
FieldTypeDescription
isValidbooleanAlways false for error responses
invalidReasonstringMachine-readable error code from this reference
errorstringHuman-readable error description (optional)
For settlement errors, the response uses a slightly different structure:
{
  "success": false,
  "errorReason": "error_code_here",
  "error": "Human-readable error message"
}

HTTP status codes#

Kobaru maps error codes to appropriate HTTP status codes:
HTTP StatusCategoryWhen Used
400 Bad RequestClient ErrorInvalid request format, missing fields, validation failures
401 UnauthorizedAuthenticationMissing or invalid API key
403 ForbiddenAuthorizationValid API key but insufficient permissions
404 Not FoundResourceRequested resource does not exist
409 ConflictStateResource state conflict (e.g., duplicate request)
422 Unprocessable EntityValidationRequest is well-formed but semantically invalid
429 Too Many RequestsRate LimitRate limit exceeded
500 Internal Server ErrorServerUnexpected server error
503 Service UnavailableServerServer temporarily unavailable (missing configuration)

General error codes#

These errors apply across all payment networks and endpoints.

Request validation errors#

CodeHTTPDescriptionResolution
invalid_x402_version400The x402Version field is not 2Ensure your request includes "x402Version": 2 in the payload
invalid_payload400Missing or malformed paymentPayloadVerify the payment payload structure matches the x402 v2 specification
invalid_payment_requirements400Missing or invalid paymentRequirementsInclude all required fields: scheme, network, amount, asset, payTo
invalid_network400The specified network is invalid or unsupportedUse a valid CAIP-2 network identifier (e.g., solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp)
unsupported_scheme400The payment scheme is not supportedKobaru currently supports the exact scheme

Capability errors#

CodeHTTPDescriptionResolution
capability_not_enabled400The requested network/scheme/asset combination is not enabled for this clientEnable the capability in your Kobaru Console or contact support

Concurrency errors#

CodeHTTPDescriptionResolution
duplicate_request409A request with the same idempotency key is already being processedWait for the original request to complete, then retry if needed
concurrent_capture_in_progress409Another settlement is in progress for this authorizationWait for the existing settlement to complete

Server errors#

CodeHTTPDescriptionResolution
unexpected_verify_error500An unexpected error occurred during payment verificationRetry the request. If the error persists, contact support
unexpected_settle_error500An unexpected error occurred during payment settlementCheck transaction status on-chain before retrying. Contact support if the error persists
server_configuration_error503The server is missing required configurationContact Kobaru support. This indicates a server-side configuration issue

Solana-specific error codes#

These errors occur when processing payments on the Solana network.

Amount and recipient errors#

CodeHTTPDescriptionResolution
invalid_exact_solana_payload_authorization_value400The transfer amount does not match the required amountEnsure the transaction transfers exactly the amount specified in paymentRequirements.amount
invalid_exact_solana_payload_recipient_mismatch400The destination address does not match the required payTo addressVerify the transfer is sent to the correct Associated Token Account (ATA) for the payTo wallet
invalid_asset_mismatch400The token mint does not match the required assetUse the correct SPL token mint address specified in paymentRequirements.asset

Transaction format errors#

CodeHTTPDescriptionResolution
invalid_transaction_format400The transaction cannot be decodedEnsure the transaction is a valid base64-encoded Solana transaction
transaction_too_large400The transaction exceeds the maximum allowed sizeReduce the transaction size by removing unnecessary instructions
malformed_instruction400An instruction in the transaction cannot be parsedVerify all instructions use correct program IDs and data formats

Fee payer errors#

CodeHTTPDescriptionResolution
invalid_fee_payer400The transaction fee payer is not the Kobaru facilitatorSet the facilitator's public key as the fee payer. The facilitator covers transaction fees

Compute budget errors#

CodeHTTPDescriptionResolution
missing_compute_budget_limit400Transaction is missing the SetComputeUnitLimit instructionAdd a SetComputeUnitLimit instruction as the first instruction
missing_compute_budget_price400Transaction is missing the SetComputeUnitPrice instructionAdd a SetComputeUnitPrice instruction as the second instruction
invalid_compute_unit_limit400The compute unit limit is invalid or exceeds allowed maximumSet a reasonable compute unit limit (typically 200,000-400,000 for token transfers)
priority_fee_exceeds_limit400The priority fee exceeds the maximum allowed by the facilitatorReduce the priority fee. Maximum is configured by the facilitator (default: 100,000 lamports)

Instruction topology errors#

Kobaru enforces a strict instruction order to prevent transaction manipulation:
CodeHTTPDescriptionResolution
invalid_instruction_count_topology400The transaction has an unexpected number of instructionsTransactions must have exactly 4 instructions (or 5 if creating an ATA)
invalid_instruction_topology_expected_create_ata400Expected a CreateAssociatedTokenAccount instruction but found something elseIf the recipient ATA doesn't exist, include a CreateATA instruction in position 3
invalid_instruction_topology_ata_mismatch400The ATA being created doesn't match the expected recipientEnsure the CreateATA instruction creates an ATA for the correct recipient and mint
missing_transfer_instruction400No SPL token transfer instruction foundInclude a TransferChecked instruction as the final instruction
Required instruction order:
1.
SetComputeUnitLimit (ComputeBudget program)
2.
SetComputeUnitPrice (ComputeBudget program)
3.
CreateAssociatedTokenAccount (optional, if recipient ATA doesn't exist)
4.
TransferChecked (SPL Token program)

Security errors#

These errors prevent unauthorized use of the facilitator's resources:
CodeHTTPDescriptionResolution
facilitator_cannot_pay_ata_creation400The transaction attempts to have the facilitator pay for ATA creation rentThe payer (not the facilitator) must pay for ATA creation
facilitator_cannot_be_payer400The transaction source is the facilitator's walletYou cannot transfer tokens from the facilitator's wallet
facilitator_cannot_be_authority400The facilitator is set as the transfer authorityThe payer must be the authority for the token transfer
facilitator_ata_cannot_be_source400The source ATA belongs to the facilitatorYou cannot transfer tokens from the facilitator's token account

Payer validation errors#

CodeHTTPDescriptionResolution
cannot_determine_payer400Unable to determine the transaction payer from the transfer instructionEnsure the transfer instruction has a valid source account
invalid_payer_address_format400The payer address is not a valid Solana public keyUse a valid base58-encoded Solana public key

Memo validation errors#

CodeHTTPDescriptionResolution
missing_required_memo400Transaction is missing a required Memo instructionAdd a Memo instruction for payment attribution
empty_memo400The Memo instruction contains no dataInclude meaningful memo content for payment tracking
memo_too_long400The memo exceeds the maximum allowed lengthReduce memo length (maximum varies by configuration)
invalid_memo_format400The memo format is invalidEnsure the memo follows the required format for payment attribution

Transaction lifecycle errors#

CodeHTTPDescriptionResolution
blockhash_expired400The transaction's recent blockhash has expiredGenerate a new transaction with a fresh blockhash (blockhashes expire after ~60-90 seconds)
transaction_signature_already_used409This transaction signature has already been processedThis transaction was already submitted. Check the previous result
simulation_failed400Transaction simulation failed before submissionCheck that the payer has sufficient SOL for fees and sufficient tokens for the transfer
submission_failed500Transaction submission or confirmation failedThe transaction may have been submitted but not confirmed. Check on-chain status before retrying

Settlement errors#

CodeHTTPDescriptionResolution
settle_timeout500Settlement confirmation timed outCheck the transaction status on-chain. The transaction may still confirm
settle_confirmation_failed500Settlement transaction was submitted but confirmation failedVerify the transaction status on a Solana explorer before retrying

Troubleshooting common errors#

simulation_failed#

Symptoms: Transaction verification returns simulation_failed before the transaction is submitted.
Common causes:
1.
Insufficient SOL balance - The payer needs SOL to pay transaction fees (even though the facilitator is the fee payer, simulation may fail if accounts are not properly funded)
2.
Insufficient token balance - The source account doesn't have enough tokens
3.
Invalid account states - One or more accounts in the transaction are in an invalid state
Resolution:

capability_not_enabled#

Symptoms: Request returns capability_not_enabled even though you expect the capability to work.
Common causes:
1.
Capability not configured - The network/scheme/asset combination hasn't been enabled for your account
2.
Wrong network identifier - Using mainnet ID when your account is configured for devnet (or vice versa)
3.
Wrong asset address - Using an incorrect token mint address
Resolution:
1.
Log in to console.kobaru.io
2.
Navigate to Settings > Capabilities
3.
Verify the correct network, scheme, and asset are enabled
4.
For Solana devnet testing, use: solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1
5.
For Solana mainnet, use: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp

invalid_fee_payer#

Symptoms: Transaction is rejected because the fee payer is incorrect.
Common causes:
1.
Wrong fee payer set - The transaction specifies a fee payer other than the Kobaru facilitator
2.
SDK misconfiguration - The x402 SDK is not correctly configured to use Kobaru as the facilitator
Resolution:
When constructing your transaction, set the fee payer to the Kobaru facilitator's public key. The facilitator public key is returned in the /v1/supported response.

blockhash_expired#

Symptoms: Transaction is rejected because the blockhash has expired.
Common causes:
1.
Stale transaction - The transaction was created too long ago (blockhashes expire after ~60-90 seconds)
2.
Slow client - Network latency caused delays between transaction creation and submission
Resolution:
1.
Create transactions with fresh blockhashes immediately before submission
2.
Use getLatestBlockhash() with the finalized commitment for the most reliable blockhashes
3.
Consider using durable nonces for transactions that need longer validity

duplicate_request#

Symptoms: Request returns duplicate_request when you believe it's a new request.
Common causes:
1.
Retry collision - A previous request with the same signature is still being processed
2.
Reused transaction - The same signed transaction was submitted multiple times
Resolution:
1.
Wait for the original request to complete before retrying
2.
If retrying, the API will return the cached result for the same idempotency key
3.
For new payment attempts, create a new transaction with a fresh blockhash and signature

priority_fee_exceeds_limit#

Symptoms: Transaction is rejected due to excessive priority fees.
Common causes:
1.
Priority fee too high - The compute unit price results in total fees exceeding the facilitator's limit
2.
Automatic fee estimation - Some SDKs automatically set high priority fees during network congestion
Resolution:
The Kobaru facilitator enforces a maximum priority fee (default: 100,000 lamports) to prevent abuse. Calculate your priority fee:
Total Priority Fee = Compute Units * Compute Unit Price / 1,000,000
Reduce either the compute unit limit or the compute unit price to stay within limits.

Error code quick reference#

By category#

Validation errors: invalid_x402_version, invalid_payload, invalid_payment_requirements, invalid_network, unsupported_scheme
Solana amount/recipient: invalid_exact_solana_payload_authorization_value, invalid_exact_solana_payload_recipient_mismatch, invalid_asset_mismatch
Transaction format: invalid_transaction_format, transaction_too_large, malformed_instruction
Compute budget: missing_compute_budget_limit, missing_compute_budget_price, invalid_compute_unit_limit, priority_fee_exceeds_limit
Instruction topology: invalid_instruction_count_topology, invalid_instruction_topology_expected_create_ata, invalid_instruction_topology_ata_mismatch, missing_transfer_instruction
Security: facilitator_cannot_pay_ata_creation, facilitator_cannot_be_payer, facilitator_cannot_be_authority, facilitator_ata_cannot_be_source
Concurrency: duplicate_request, concurrent_capture_in_progress, transaction_signature_already_used
Server: unexpected_verify_error, unexpected_settle_error, server_configuration_error, settle_timeout, settle_confirmation_failed

Getting help#

If you encounter an error not covered in this reference or need additional assistance:
Documentation: docs.kobaru.io
Support: support@kobaru.io
Discord: Join our developer community for real-time help
When contacting support, include:
1.
The full error response (including invalidReason)
2.
Your request payload (redact sensitive information)
3.
The timestamp of the request
4.
Your client ID (available in the Console)
Modified at 2026-01-04 14:01:01
Previous
Bazaar discovery
Next
Get Supported Payment Kinds
Built with