Skip to main content
These are the test cases to help you test your site’s integration with CryptoProcessing payment requests. For each test case, create a new payment request via the /payments/v1/requests endpoint and then process the payment_request callback. For some test cases, you will need to check that your customer receives an email from CryptoProcessing and can click a link in it. Make sure to specify an email address you can access (end_user_email) when creating payment requests for such test cases.
You can test payment requests in the sandbox environment by withdrawing funds from your merchant account instead of sending an external payment. Create a payment request, open the link, and choose a payment currency to get an address, then withdraw funds to that address.
ProcedureExpected results
Successfully completed payment
  1. Create a payment request.
  2. Open the payment request link on your device.
  3. Place a payment for the exact amount requested.
  • The site gets a payment_request callback.
  • The callback status is paid.
  • The customer is redirected to url_success.
  • The customer receives an email about the successful payment.
Overpayment
  1. Create a payment request.
  2. Open the payment request link on your device.
  3. Place a payment for an amount larger than requested (add more than the minimum withdrawal amount plus the refund fee, or the extra amount can’t be refunded).
  • The site gets a payment_request callback.
  • The callback status is paid.
  • The customer is redirected to url_success.
  • The customer receives an email with a link to an automatic partial refund.
Underpayment
  1. Create a payment request.
  2. Open the payment request link on your device.
  3. Place a payment for an amount less than requested (if you accept underpayments, less than your tolerance allows). To get a refund, pay more than the minimum withdrawal amount plus the refund fee.
  4. Wait until the payment request’s lifespan or rate lock ends, whichever comes first.
  • When the payment request ends, the site gets a payment_request callback.
  • The callback status is failed.
  • The customer is redirected to url_failed.
  • The customer receives an email with a link to an automatic full refund.
Accepted underpayment (if you accept underpayments)
  1. Create a payment request.
  2. Open the payment request link on your device.
  3. Place a payment for an amount less than requested, but within your underpayment tolerance.
  4. Wait until the payment request’s lifespan or rate lock ends, whichever comes first.
  • When the payment request ends, the site gets a payment_request callback.
  • The callback status is paid, and its status_reason says the underpayment was accepted.
  • The callback’s currency_received is the amount actually received, converted to the payment request currency.
Payment requests with a late payment
  1. Create a payment request with a short lifespan (for example, 5 minutes).
  2. Open the payment request link on your device.
  3. Choose a payment currency and click Proceed to payment.
  4. Copy the address or scan the QR code with your device. Do not place the payment yet.
  5. Wait till the payment request expires.
  6. Place a payment for the requested amount.
  • The site gets a payment_request callback with the expired status when the payment request expires.
  • After the late payment is confirmed, the site gets another payment_request callback. Its status is still expired, and the transaction has late_payment set to true.
  • The customer is redirected to url_failed.
  • The customer receives an email with a link to an automatic full refund.
Payment request expired before the currency selection
  1. Create a payment request with a short lifespan (for example, 5 minutes).
  2. Wait till the payment request expires.
  • The site gets a payment_request callback.
  • The callback status is expired.
  • The customer is redirected to url_failed.
  • The customer does not receive any email.
Payment request expired after the currency selection
  1. Create a payment request with a short lifespan (for example, 5 minutes).
  2. Open the payment request link on your device.
  3. Choose a payment currency and click Proceed to payment. Do not place the payment.
  4. Wait till the payment request expires.
  • The site gets a payment_request callback.
  • The callback status is expired.
  • The callback contains the information about the selected currency in the currency_sent field.
  • The customer is redirected to url_failed.
  • The customer does not receive any email.
Last modified on October 29, 2026