> ## 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.

# Integration checklist

> Pick your integration path and complete each phase before going live.

KYC is always first. After that, the steps differ based on your path.

<Tabs>
  <Tab title="Payin">
    <Steps>
      <Step title="KYC and customer verification">
        **Account setup**

        * [ ] Create and verify customer accounts
        * [ ] Submit KYC with all required fields filled
        * [ ] Test a successful KYC verification flow
        * [ ] Test a KYC failure and confirm your error handling works

        **KYC errors**

        * [ ] Handle KYC rejections and show the user what to fix
        * [ ] Update and resubmit failed KYC information
      </Step>

      <Step title="Payin requirements">
        <Warning>
          Only send funds to the bank account details returned in the quotation response. Send the exact amount specified. Mismatches reject the transaction.
        </Warning>

        **Bank transfer**

        * [ ] Validate bank account details against the quotation before every transfer
        * [ ] Send exactly the amount specified in the quotation
        * [ ] Complete transfers before the quotation expires
        * [ ] Record the Reference Number for each payin

        **Monitoring**

        * [ ] Generate a new quotation when one expires
        * [ ] Monitor transaction status after sending
        * [ ] Set up alerts for failed transactions
        * [ ] Define how your system handles transactions stuck longer than 24 hours
      </Step>

      <Step title="Testing">
        * [ ] Fetch exchange rates and confirm they display correctly in your UI
        * [ ] Create quotations across different amounts and currency pairs
        * [ ] Test quotation expiry and confirm your system handles it cleanly
        * [ ] Send test transactions on sandbox networks
        * [ ] Verify fee calculations match what you show users
        * [ ] Test failure scenarios and confirm recovery paths work
      </Step>

      <Step title="Webhooks">
        **Setup**

        * [ ] Register your webhook URL
        * [ ] Validate webhook signatures on every incoming request
        * [ ] Set up monitoring for missed or delayed webhooks

        **Testing**

        * [ ] Receive and handle KYC status update webhooks
        * [ ] Receive and handle transaction status update webhooks
        * [ ] Test retry behavior when your endpoint is temporarily down
        * [ ] Confirm your handler is idempotent (processing the same webhook twice should not trigger two actions)
      </Step>

      <Step title="Error handling">
        **API and integration**

        * [ ] Test API authentication failures
        * [ ] Test input validation rejections
        * [ ] Test rate limit responses and confirm your retry logic handles them
        * [ ] Test timeout handling

        **User-facing**

        * [ ] Error messages explain what went wrong and what the user should do next
        * [ ] Users never see raw error codes or internal field names
        * [ ] Store transaction logs with enough detail to trace failures
      </Step>

      <Step title="Production deployment">
        **Setup**

        * [ ] Request production API credentials
        * [ ] Switch all configuration to production endpoints
        * [ ] Remove sandbox-only code and test accounts

        **Before launch**

        * [ ] Enable production logging
        * [ ] Configure alerts for critical failures
        * [ ] Complete a security review
        * [ ] Run a small real-money test before full rollout
      </Step>
    </Steps>
  </Tab>

  <Tab title="Payout">
    <Steps>
      <Step title="KYC and customer verification">
        **Account setup**

        * [ ] Create and verify customer accounts
        * [ ] Submit KYC with all required fields filled
        * [ ] Test a successful KYC verification flow
        * [ ] Test a KYC failure and confirm your error handling works

        **KYC errors**

        * [ ] Handle KYC rejections and show the user what to fix
        * [ ] Update and resubmit failed KYC information

        **Bank account**

        * [ ] Add and verify bank account details
        * [ ] Confirm the bank account name matches the KYC name exactly
      </Step>

      <Step title="Payout requirements">
        <Warning>
          Only send from whitelisted wallet addresses. Verify the asset and network match the quotation before sending.
        </Warning>

        **Wallet and transaction**

        * [ ] Confirm the source wallet is whitelisted before sending
        * [ ] Validate asset and network against the quotation
        * [ ] Send exactly the amount specified in the quotation
        * [ ] Complete transfers before the quotation expires
        * [ ] Record the transaction hash for each payout

        **Monitoring**

        * [ ] Generate a new quotation when one expires
        * [ ] Monitor on-chain transaction status after sending
        * [ ] Set up alerts for failed transactions
        * [ ] Define how your system handles transactions stuck longer than 24 hours
      </Step>

      <Step title="Testing">
        * [ ] Fetch exchange rates and confirm they display correctly in your UI
        * [ ] Create quotations across different amounts and currency pairs
        * [ ] Test quotation expiry and confirm your system handles it cleanly
        * [ ] Send test transactions on sandbox networks
        * [ ] Run payouts and verify all transaction status transitions
        * [ ] Verify fee calculations match what you show users
        * [ ] Test failure scenarios and confirm recovery paths work
      </Step>

      <Step title="Webhooks">
        **Setup**

        * [ ] Register your webhook URL
        * [ ] Validate webhook signatures on every incoming request
        * [ ] Set up monitoring for missed or delayed webhooks

        **Testing**

        * [ ] Receive and handle KYC status update webhooks
        * [ ] Receive and handle transaction status update webhooks
        * [ ] Test retry behavior when your endpoint is temporarily down
        * [ ] Confirm your handler is idempotent (processing the same webhook twice should not trigger two actions)
      </Step>

      <Step title="Error handling">
        **API and integration**

        * [ ] Test API authentication failures
        * [ ] Test input validation rejections
        * [ ] Test rate limit responses and confirm your retry logic handles them
        * [ ] Test timeout handling

        **User-facing**

        * [ ] Error messages explain what went wrong and what the user should do next
        * [ ] Users never see raw error codes or internal field names
        * [ ] Store transaction logs with enough detail to trace failures
      </Step>

      <Step title="Production deployment">
        **Setup**

        * [ ] Request production API credentials
        * [ ] Switch all configuration to production endpoints
        * [ ] Remove sandbox-only code and test accounts

        **Before launch**

        * [ ] Enable production logging
        * [ ] Configure alerts for critical failures
        * [ ] Complete a security review
        * [ ] Run a small real-money test before full rollout
      </Step>
    </Steps>
  </Tab>
</Tabs>
