> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dollarpe.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Best practices

> Rules DollarPe enforces on every transaction. Violations reject the transaction outright.

DollarPe validates every transaction against strict rules. Violations don't return soft errors. They reject the transaction outright. Read this before you go live.

## Before you start

<Steps>
  <Step title="Finish onboarding">
    All documentation submitted and approved. Your account must be active before you send any transaction.
  </Step>

  <Step title="Get your API credentials">
    Credentials must have the correct permissions for the endpoints you plan to use.
  </Step>

  <Step title="Test end to end in sandbox">
    Run the full flow (KYC, quotation, transaction, webhook receipt) before touching production.
  </Step>

  <Step title="Set up error handling">
    Handle API errors and webhook failures explicitly. Don't assume success on timeout or missing response.
  </Step>

  <Step title="Configure webhooks and polling">
    Register your webhook endpoint for status updates. Set up status polling as a fallback for delayed webhook delivery.
  </Step>
</Steps>

## Payin

### Bank account

<Warning>
  Money must come from a bank account registered in the same name provided during KYC. The sender name must match exactly. Transfers from third-party accounts are rejected.
</Warning>

* Send to the bank account details returned in the quotation response, not hardcoded values
* Do not reuse bank details across separate quotations

### Amount

<Warning>
  The transfer amount must exactly match the quotation amount. Partial payments and split payments are rejected.
</Warning>

* Send the full amount in a single transfer
* Even small differences from rounding or source-side fees will cause the transaction to fail

## Payout

### Quotation

* Quotation ID must be valid and unexpired before you submit the transaction
* Each quotation can only be used once
* Transaction amount must match the quotation amount exactly

### Asset

<Warning>
  Only supported stablecoins and blockchains are accepted. Sending an unsupported asset can result in permanent loss of funds.
</Warning>

* Use only the asset specified in your quotation
* Check [supported stablecoins and blockchains](/guides/support/stablecoins_and_blockchains) before sending

### Wallet

* Source wallet must be whitelisted during onboarding
* Send to the destination wallet address returned in the quotation response, not a saved or assumed address
* Each transaction hash must be unique. Hashes linked to other orders are rejected.

## Integration testing

Before going live:

* Run every integration point through sandbox, including error paths and edge cases
* Confirm your webhook handler processes retries without creating duplicate records
* Test status polling as a fallback when webhooks don't arrive
* Verify your retry logic handles rate limiting without breaking the transaction flow
