For the complete documentation index, see llms.txt. This page is also available as Markdown.

Integration Best Practices

This guide outlines best practices for developers integrating with the Reveel PayID API. Following these principles will help ensure a reliable, secure, and scalable integration.

1. Authentication

  • Always include your API key in the Authorization header:

    Authorization: Bearer your-api-key
  • Store API keys securely in environment variables, never in frontend code or public repositories

  • Implement key rotation mechanisms if your backend supports it

  • Use proper error handling for 401 responses to trigger re-authentication flows

2. Token and Network Compatibility

  • Only use the supported tokens: USDT, USDC, ETH, BNB, POL - along with native tokens of respective chains.

  • Only use the supported networks: ETH, POL, OP, BNB, BASE

  • Be aware of unsupported combinations:

    • POL token on OP network

    • BNB token on OP network

    • USDT token on BASE network

    • BNB token on BASE network

    • POL token on BASE network

3. Transaction Handling

  • For ERC20 tokens (USDT, USDC), always check for approveTx in the response

  • If approveTx is present, execute this transaction first before the main transaction

  • Implement proper error handling for transaction states (pending, completed, failed)

  • Add client-side idempotency keys to prevent accidental duplicate transactions

  • When sending to a PayID, be prepared to handle route-based swaps and associated fees

4. Error Handling

  • All API responses follow a consistent format with success flag

  • Error responses include detailed information in the error object:

  • Implement specific handling for common errors:

    • 400: Client-side validation errors

    • 401: Authentication failures

    • 404: Resource not found

    • 409: Conflicts (e.g., route conflicts, PayID already taken)

    • 500: Server errors (may be retried with backoff)

5. Pagination

  • When fetching transaction activities, always use pagination parameters:

    • page (default: 1): Page number

    • pageSize (default: 10): Number of items per page

  • Implement UI for pagination controls or auto-load mechanisms

  • Use the pagination metadata returned in the response for accurate UI:

6. Network Resilience

  • Implement retry logic with exponential backoff for 5xx errors and timeouts

  • Do not retry on 4xx errors (except possibly 429 Too Many Requests)

  • Recommended backoff strategy:

    • Initial delay: 1 second

    • Maximum retries: 3

    • Exponential factor: 2 (1s, 2s, 4s)

  • Add circuit breakers to prevent cascading failures during API outages

7. Monitoring and Logging

  • Log all API requests with relevant details:

    • Endpoint path

    • HTTP method

    • Response status code

    • Error messages (without sensitive data)

    • Response times

  • Track transaction success rates for user analytics

  • Implement health checks to detect API availability issues

8. Security Considerations

  • Validate wallet addresses on the client side before submission

  • Never log full transaction data that might contain sensitive information

  • Implement rate limiting in your client applications to prevent abuse

  • For PayID integrations, validate PayID format before submission to reduce errors

9. Performance Optimization

  • Cache frequently accessed data (user lists, routes)

  • Implement conditional fetching based on UI state

  • Use local storage or state management to reduce redundant API calls

  • Prefetch anticipated data when appropriate (e.g., user routes before transaction)

10. API Evolution

  • The Reveel API uses versioned endpoints (/v1/transactions)

  • Monitor for deprecation notices and new versions

  • Design your integration to easily accommodate API changes by using abstraction layers

  • Subscribe to developer notifications if available to stay current with changes

11. Content Headers

  • Always include proper headers for all requests:

  • Validate response content types to ensure you're receiving JSON data

  • Handle unexpected content types gracefully (e.g., HTML error pages)

Last updated

Was this helpful?