> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.crisscross.money/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.crisscross.money/_mcp/server.

# Common Issues

> A guide to resolving common integration challenges merchants may encounter while working with CrissCross.

### Overview

While CrissCross aims to provide a seamless payment processing experience, some issues may arise due to integration challenges, configuration errors, or external dependencies. This guide highlights common issues merchants encounter and how to resolve them.

---

### Common Issues and Solutions

1. **Invalid or Expired Access Token (401 Unauthorized)**
   * **Issue**: Requests fail with a 401 error.
   * **Cause**: Missing, incorrect, or expired OAuth access token used in the request.
   * **Solution**: Verify that you are sending a valid access token in the `Authorization: Bearer ...` header. Request a new token from the Authentication API (`POST /v1/auth/oauth2/token`) using your `client_id` and `client_secret` if the token has expired.

2. **Payment Declined by Issuer (402 Payment Declined)**
   * **Issue**: Payment requests are declined by the customer’s bank.
   * **Cause**: Insufficient funds, incorrect payment details, or card restrictions.
   * **Solution**: Suggest the customer try a different payment method or contact their bank for details.

3. **Incorrect Webhook Configuration**
   * **Issue**: Webhook notifications are not being received.
   * **Cause**: Incorrect endpoint configuration or blocked traffic.
   * **Solution**: Ensure the webhook endpoint is correctly configured and accessible. Verify any firewall rules that may block incoming requests.

4. **Mismatched Currency Code in Transactions**
   * **Issue**: Payments are rejected due to unsupported currency codes.
   * **Cause**: Currency code mismatch between the merchant and the payment processor.
   * **Solution**: Ensure the currency code is supported by both CrissCross and the payment processor. Use the currency compatibility matrix in the dashboard.

5. **Duplicate Transactions Due to Retries**
   * **Issue**: Multiple payments are processed for a single order.
   * **Cause**: Manual retries by merchants during automatic CrissCross retries.
   * **Solution**: Monitor CrissCross’s retry logic and avoid triggering manual retries when automatic retries are active.

6. **Timeouts During Payment Processing**
   * **Issue**: Payments fail with a timeout error.
   * **Cause**: Network issues or a slow response from the payment processor.
   * **Solution**: Implement retries with exponential backoff or use CrissCross’s automatic retry feature.

7. **Missing Payment Methods in Checkout**
   * **Issue**: Some expected payment methods are not shown in the hosted checkout.
   * **Cause**: Payment methods may not be enabled for the merchant's account.
   * **Solution**: Verify the payment method configurations in the dashboard and ensure all relevant methods are enabled.

---

### Best Practices for Issue Resolution

* **Monitor Logs and Metrics**: Regularly monitor your integration logs and CrissCross metrics to identify issues early.
* **Use Webhooks for Real-Time Alerts**: Configure webhooks to stay informed about payment statuses and issues.
* **Keep Your Credentials and Webhooks Secure**: Store your `client_secret` and access tokens securely (e.g. in environment variables or a secrets manager), rotate credentials periodically, and secure webhook endpoints to prevent unauthorized access.