ACH Payment Provider Options for Research Relay LLC¶
Executive Summary¶
Research Relay LLC sells RUO (Research Use Only) peptides and research chemicals via e-commerce. ACH is the target second payment rail alongside BTC/Lightning (already designed via BTCPay Server). ACH avoids high-risk card processing fees and reserves while still accepting USD.
Bottom line: Mainstream payment processors (Stripe, Square, PayPal, Helcim) explicitly list "research chemicals" as prohibited or restricted. The most viable path is a specialized high-risk ACH/eCheck processor purpose-built for the peptide/research chemical vertical. If Stripe were to approve the account (unlikely without prior authorization), their ACH product is technically excellent and integrates natively with MedusaJS v2.
Provider Comparison¶
Tier 1: Mainstream Processors (High Risk of Account Termination)¶
Stripe¶
| Attribute | Detail |
|---|---|
| ACH Fees | 0.8% per transaction, capped at $5 |
| ACH Credit | $1.00 flat per transaction |
| Failed ACH | $4 per failure |
| Disputed ACH | $15 per dispute |
| Faster Settlement | 1.2% (2-day settlement vs standard 4-day) |
| Verification | Financial Connections (instant) or micro-deposits (2-3 days) |
| Settlement | Standard: 4-6 business days; Faster: 2 business days |
| MedusaJS Integration | Native -- @medusajs/payment-stripe ships with Medusa v2 |
Risk Assessment: PROHIBITED
Stripe's Restricted Businesses list explicitly lists "Research chemicals" under the "Illegal weapons, explosives, and dangerous materials" category. Additionally, "Pseudo-pharmaceuticals or nutraceuticals that are not safe or make harmful claims" and "Illegal drugs, substances designed to mimic illegal drugs" are prohibited.
- Research chemicals are explicitly named as prohibited, not merely restricted
- Accounts processing research chemical transactions are routinely frozen or terminated without warning
- Even compliant merchants lose access once Stripe detects the product category
- Stripe may approve with "explicit prior approval" but this is rare and unreliable
- Approval can be revoked at any time
Verdict: Do not rely on Stripe for payment processing. Account termination risk is near-certain.
Square¶
| Attribute | Detail |
|---|---|
| ACH Fees | ACH invoicing available, pricing varies |
| Risk Assessment | PROHIBITED |
Square routinely shuts down peptide and research chemical accounts once transactions are detected. They follow card network rules (Visa, Mastercard) that classify unapproved pharmaceuticals and research chemicals under restricted categories. No ACH-specific workaround exists -- the merchant categorization issue applies regardless of payment method.
Verdict: Not viable.
PayPal / Venmo¶
| Attribute | Detail |
|---|---|
| ACH-like Option | PayPal balance / bank transfer |
| Risk Assessment | PROHIBITED |
PayPal, Stripe, and Square all routinely shut down peptide and research chemical accounts. PayPal's acceptable use policy prohibits controlled substances and drug-adjacent products. There is no separate ACH product that bypasses their merchant categorization.
Verdict: Not viable.
Helcim¶
| Attribute | Detail |
|---|---|
| ACH Fees | 0.5% + $0.25 per transaction, capped at $6 |
| Monthly Fees | None |
| Risk Assessment | LIKELY RESTRICTED |
Helcim's Acceptable Use Policy does not explicitly name "research chemicals," but their restricted business list is stated to be non-exhaustive. They are subject to card network rules and bank partnership agreements that restrict high-risk industries. If they don't restrict at signup, they may restrict later upon review.
Helcim's Fee Saver feature (which passes card fees to customers as a "convenience fee" when they don't pay via ACH) requires ACH to be enabled -- but merchants in restricted industries may be ineligible for ACH entirely.
Verdict: Possible but unreliable. Contact trustandsafety@helcim.com before applying.
Tier 2: ACH-Focused Platforms¶
Dwolla¶
| Attribute | Detail |
|---|---|
| ACH Fees | Custom pricing (historically ~0.5% per transaction) |
| Monthly Fees | Custom -- no free plan |
| Same-Day ACH | Supported |
| API | Full REST API with TypeScript SDK |
| Risk Assessment | UNCLEAR -- LIKELY RESTRICTIVE |
Dwolla's Terms of Service prohibit "sale or purchase of illegal goods, including controlled substances, and substances that pose a risk to consumer safety." Research chemicals could fall under this broad language.
Dwolla is primarily a B2B platform for companies building payment products (marketplaces, lending platforms). They are not optimized for e-commerce checkout flows. Integration complexity is significantly higher than Stripe -- you would need to build the entire checkout UX, bank verification, and payment flow from scratch.
Reported issues: lengthy onboarding, potential for account suspension without warning, high development costs ($10,000+ for custom integration).
Verdict: Not recommended. High integration cost, unclear risk tolerance, not designed for e-commerce.
Authorize.net (eCheck)¶
| Attribute | Detail |
|---|---|
| eCheck Fees | 0.75% per transaction |
| Monthly Gateway | $25/month |
| Risk Assessment | PROHIBITED |
Authorize.net's eCheck service agreement explicitly states that services may be cancelled if the business is "deemed to be high risk." Their prohibited list includes "Drug paraphernalia" and "Illegal products." Research chemicals would almost certainly trigger this restriction.
Additionally, per-transaction limits above $2,000 and monthly volume above $50,000 require additional financial documentation.
Verdict: Not viable for research chemicals.
Tier 3: Specialized High-Risk Processors (Recommended)¶
These processors are purpose-built for the peptide/research chemical vertical. They understand the regulatory landscape, have banking relationships that accept the risk category, and provide ACH/eCheck specifically for merchants who cannot use mainstream processors.
Paycron¶
| Attribute | Detail |
|---|---|
| Approval Rate | 99% for peptide businesses (eCheck) |
| Payment Methods | eCheck/ACH only (no credit cards for peptides) |
| Pricing | Custom -- contact for quote |
| Risk Assessment | PURPOSE-BUILT FOR THIS VERTICAL |
Paycron specializes in high-risk eCheck processing. They claim a 99% approval rate for peptide businesses. They do not offer credit card processing for the peptide industry, focusing exclusively on eCheck/ACH.
Pros: Highest reported approval rate, understands the vertical. Cons: No credit card processing, custom (likely higher) pricing, no MedusaJS integration out of the box.
Easy Pay Direct¶
| Attribute | Detail |
|---|---|
| Payment Methods | eCheck/ACH via Plaid integration |
| LegitScript | Required for peptide merchants |
| Pricing | Custom -- contact for quote |
| Risk Assessment | PURPOSE-BUILT FOR THIS VERTICAL |
Easy Pay Direct offers eCheck solutions for peptide businesses, with Plaid integration for bank account verification. They have a partnership with LegitScript offering 50% discount on certification.
Requirement: Merchants must be LegitScript certified before onboarding.
Pros: Plaid-based instant verification, LegitScript partnership. Cons: LegitScript certification required ($975 application + $2,150/year), custom pricing.
AllayPay¶
| Attribute | Detail |
|---|---|
| Payment Methods | Credit cards, eCheck, ACH |
| Approval | Quick approvals for peptide merchants |
| Pricing | Custom |
| Risk Assessment | SPECIALIZES IN HIGH-RISK |
AllayPay specializes in high-risk payment processing with multiple payment types including credit cards, eCheck, and ACH.
PayBlox¶
| Attribute | Detail |
|---|---|
| Payment Methods | Card, ACH, crypto |
| Focus | Connects merchants with processors who accept legal research peptides |
| Pricing | Custom |
| Risk Assessment | BROKER -- MATCHES TO APPROPRIATE PROCESSOR |
PayBlox acts as a broker, connecting peptide merchants with processors that understand the distinction between research-only use and retail sale.
Instabill¶
| Attribute | Detail |
|---|---|
| Payment Methods | Gift card payments, crypto payout, ACH payout |
| Pricing | Custom |
| Risk Assessment | SPECIALIZED |
Instabill offers a unique model where customers pay via gift card and the merchant receives payout in cryptocurrency or ACH. Unusual model but worth exploring.
VERIFIED Credit Card Processing¶
| Attribute | Detail |
|---|---|
| Model | Broker -- works with multiple US acquiring banks |
| Payment Methods | Credit cards, ACH, eChecks |
| Pricing | Custom |
| Risk Assessment | BROKER |
Operates as a broker, placing peptide merchants with appropriate processors based on compliance and risk profile.
Fee Comparison Summary¶
| Provider | ACH Fee | Monthly Fee | Cap | Viable? |
|---|---|---|---|---|
| Stripe | 0.8% | $0 | $5 | No (prohibited) |
| Helcim | 0.5% + $0.25 | $0 | $6 | Unlikely |
| Authorize.net | 0.75% | $25 | N/A | No (prohibited) |
| Dwolla | ~0.5% | Custom | N/A | Unlikely |
| Paycron | Custom | Custom | Custom | Yes |
| Easy Pay Direct | Custom | Custom | Custom | Yes (needs LegitScript) |
| AllayPay | Custom | Custom | Custom | Yes |
Note: High-risk processors do not publish rates. Expect ACH fees of 1-3% plus per-transaction fees, plus potential rolling reserves (5-10% of volume held for 6 months). This is still dramatically cheaper than high-risk credit card processing (4-8% + reserves).
Recommendation¶
Primary: Paycron (eCheck/ACH)¶
Why: Highest approval rate (99%) for peptide businesses, understands the vertical, eCheck-only focus means they have deep banking relationships for this category.
Action items: 1. Contact Paycron for a quote and timeline 2. Prepare business documentation (LLC formation docs, EIN, bank statements, website URL) 3. Ensure website has compliant RUO disclaimers, ToS, refund/shipping policies 4. Apply and negotiate rates
Secondary: Easy Pay Direct (eCheck via Plaid)¶
Why: Plaid integration for instant bank verification, LegitScript partnership discount.
Action items: 1. Evaluate whether LegitScript certification is worth the cost ($975 + $2,150/year) 2. If pursuing, begin LegitScript application (4-8 weeks process) 3. Contact Easy Pay Direct after certification
Parallel: Attempt Stripe with Prior Authorization¶
Why: If approved, Stripe's ACH product is technically superior and integrates natively with MedusaJS v2. The integration cost is near-zero.
Action items: 1. Contact Stripe sales/support to request explicit prior authorization for RUO research chemical sales 2. Be completely transparent about the business model 3. If approved in writing, proceed with Stripe ACH integration 4. Do NOT sign up and hope for the best -- this will result in account termination and potentially being blacklisted
Fallback: PayBlox or AllayPay as Broker¶
If Paycron and Easy Pay Direct don't work out, use a broker like PayBlox or VERIFIED Credit Card Processing to find an appropriate acquiring bank.
MedusaJS v2 Integration¶
Stripe ACH (If Approved)¶
The Stripe Module Provider ships with MedusaJS v2 and supports ACH Direct Debit through Stripe's Payment Element.
Configuration¶
// medusa-config.ts
module.exports = defineConfig({
modules: [
{
resolve: "@medusajs/medusa/payment",
options: {
providers: [
{
resolve: "@medusajs/medusa/payment-stripe",
id: "stripe",
options: {
apiKey: process.env.STRIPE_API_KEY,
webhookSecret: process.env.STRIPE_WEBHOOK_SECRET,
},
},
],
},
},
],
})
Enabling ACH in Stripe Dashboard¶
- Navigate to Settings > Payments > Payment methods
- Under "Bank debits," activate ACH Direct Debit
- Accept Stripe's ACH terms
- Configure Financial Connections for bank verification
Payment Element Integration¶
Stripe's Payment Element automatically surfaces ACH as a payment option when enabled.
The provider ID in Medusa will be pp_stripe_stripe. In the storefront, use the Payment
Element which handles the full ACH flow:
- Customer selects "Bank account" in the Payment Element
- Financial Connections modal opens for instant bank verification
- If instant verification unavailable, falls back to manual entry + micro-deposits
- Customer reviews and accepts the ACH mandate
- PaymentIntent enters
processingstate - Stripe sends
payment_intent.processingwebhook - After 2-6 business days, Stripe sends
payment_intent.succeededwebhook - Order transitions from pending to completed
Webhook Events for ACH¶
Subscribe to these webhook events for the Stripe payment provider:
payment_intent.succeeded-- ACH payment completedpayment_intent.payment_failed-- ACH payment failed (insufficient funds, etc.)payment_intent.canceled-- payment canceledcharge.refunded-- refund processed
The webhook endpoint URL follows the pattern:
{MEDUSA_URL}/hooks/payment/stripe_stripe
Order Status Mapping for ACH¶
| ACH State | Stripe Status | Medusa Order State | Customer-Facing |
|---|---|---|---|
| Customer confirms | processing |
Payment pending | "Payment submitted -- processing" |
| Bank verifying | processing |
Payment pending | "Payment being verified" |
| Funds received | succeeded |
Payment captured | "Payment confirmed" |
| Bank rejected | requires_payment_method |
Payment failed | "Payment failed -- please try again" |
| Disputed | disputed |
Disputed | "Payment under review" |
Key difference from cards: ACH payments take 2-6 business days to settle. The order
should NOT be fulfilled until payment_intent.succeeded is received. Consider showing
customers a "payment processing" status and sending email updates when status changes.
High-Risk Processor Integration¶
If using a specialized processor (Paycron, Easy Pay Direct, AllayPay), you will need a custom payment module provider in MedusaJS v2.
Custom Provider Structure¶
// src/modules/payment-ach/service.ts
import { AbstractPaymentProvider } from "@medusajs/framework/utils"
class AchPaymentProvider extends AbstractPaymentProvider {
static identifier = "ach-custom"
async initiatePayment(context) {
// Call high-risk processor's API to create payment
}
async authorizePayment(paymentSessionData) {
// ACH authorization is asynchronous -- return "pending"
}
async capturePayment(paymentSessionData) {
// For ACH, capture happens when bank confirms (via webhook)
}
async refundPayment(paymentSessionData, refundAmount) {
// Initiate ACH refund via processor API
}
async cancelPayment(paymentSessionData) {
// Cancel pending ACH payment
}
async getPaymentStatus(paymentSessionData) {
// Check payment status with processor
}
// ... other required methods
}
This requires: - Understanding the high-risk processor's API (documentation quality varies) - Building the bank account collection UX (Plaid or manual entry) - Handling webhooks for async ACH settlement - Testing with sandbox/test accounts - Estimated development effort: 2-4 weeks
Checkout UX Flow for ACH¶
Customer Experience¶
1. Cart Review
└─> Customer reviews items, sees order total
2. Shipping Information
└─> Standard address collection
3. Payment Selection
├─> Option A: Bitcoin / Lightning (BTCPay Server)
└─> Option B: Bank Transfer (ACH)
4. ACH Bank Verification (if Option B selected)
├─> Instant: Financial Connections / Plaid modal
│ └─> Customer logs into bank, selects account (~30 seconds)
└─> Manual: Customer enters routing + account number
└─> Micro-deposits sent (2-3 days to verify)
5. ACH Authorization
└─> Customer reviews and accepts ACH mandate:
"I authorize Research Relay LLC to debit my bank account
for $XX.XX. I understand this is a one-time payment.
I may revoke this authorization by contacting
support@research-relay.com within 3 business days
prior to the scheduled debit date."
6. Order Confirmation
└─> "Your payment is being processed. ACH payments typically
take 3-5 business days to complete. You will receive
an email when your payment is confirmed and your order
ships."
7. Async Settlement (behind the scenes)
├─> T+0: Payment submitted to ACH network
├─> T+2 to T+4: Bank processes debit
├─> T+4 to T+6: Funds arrive in merchant account
└─> Webhook fires → order status updated → customer notified
8. Fulfillment
└─> Ship order after payment_intent.succeeded webhook
Key UX Considerations¶
- Set expectations: ACH is slower than card or crypto. Clearly communicate the 3-5 business day settlement window.
- Email notifications: Send emails at each status change (payment submitted, payment confirmed, order shipped).
- Instant verification preferred: Push customers toward Financial Connections / Plaid for instant bank verification rather than micro-deposits.
- Mobile-friendly: Bank verification modals must work on mobile devices.
- Error handling: Clearly explain what happens if ACH fails (insufficient funds, wrong account number) and provide easy retry flow.
Cost Analysis: ACH vs BTC vs Card¶
For a $200 average order:
| Payment Method | Fee | Net to Merchant | Settlement |
|---|---|---|---|
| BTC/Lightning (BTCPay) | ~0% (self-hosted) | $200.00 | Instant |
| ACH (Stripe, if approved) | $1.60 (0.8%) | $198.40 | 4-6 days |
| ACH (high-risk processor) | ~$4-6 (est. 2-3%) | $194-196 | 3-5 days |
| Credit card (high-risk) | ~$10-16 (5-8%) | $184-190 | 2-3 days |
| Credit card (standard) | ~$6.10 (2.9%+$0.30) | $193.90 | 2 days |
ACH through a high-risk processor is the clear winner for USD payments, saving $4-10 per transaction compared to high-risk card processing, and avoiding the reserves and chargeback risk associated with card networks.
LegitScript Certification¶
Some high-risk processors (notably Easy Pay Direct) require LegitScript certification. This is worth evaluating even if not strictly required, as it can:
- Improve approval odds with any processor
- Potentially lower processing rates
- Enable advertising on Google and Meta platforms
- Demonstrate regulatory compliance to banking partners
Cost¶
- Application fee: $975 (non-refundable)
- Annual certification: $2,150 (upon approval)
- Expedited review: $2,500 additional
- Total first year: $3,125 (standard) or $5,625 (expedited)
Process¶
- Create LegitScript account
- Pay application review fee ($975)
- Submit documentation (business registration, website, product info, compliance docs)
- Respond to follow-up requests
- Approval timeline: 4-8 weeks (standard), 1-3 weeks (expedited)
- Pay annual fee upon approval
Considerations for RUO Merchants¶
LegitScript has increasingly scrutinized the "research chemicals" space. Their 2025 data shows a 308% increase in "problematic peptide" ads year-over-year. They are specifically skeptical of "not for human consumption" disclaimers, viewing them as potential red flags rather than compliance measures.
For Research Relay, the key is demonstrating genuine RUO positioning: - Sell only to verified researchers/institutions (or at minimum, require attestation) - Include COAs (Certificates of Analysis) for all products - No dosing instructions, no wellness claims, no before/after photos - Clear, consistent RUO labeling across entire website - Professional, scientific presentation
Next Steps¶
- Immediate: Contact Paycron for eCheck/ACH pricing and onboarding requirements
- Immediate: Contact Stripe sales to request prior authorization (low probability of success, but zero-cost to try)
- Week 1-2: Evaluate LegitScript certification ROI
- Week 2-4: Begin onboarding with chosen processor
- Week 4-8: Build MedusaJS integration (custom provider if not Stripe)
- Week 8-12: Test, QA, launch ACH as payment option
Sources¶
- Stripe Restricted Businesses List
- Stripe ACH Direct Debit Documentation
- Stripe ACH Pricing
- Stripe ACH Settlement Time
- Helcim ACH Payments
- Helcim Acceptable Use Policy
- Dwolla Pricing
- Authorize.net eCheck
- Medusa Stripe Module Provider
- Medusa Payment Element Customization
- Paycron Peptide Merchant Accounts
- Easy Pay Direct Peptide Processing
- LegitScript Peptides Guide
- NACHA ACH Authorization Requirements
- 2026 NACHA Rule Changes