Payment Gateway

Merchant onboarding guide

How merchants are reviewed, approved, provisioned, and connected to WooCommerce or custom storefronts.

Current Production Links

Merchant request access

https://noramp.dev/merchant/signup

Coaching / education request access

https://noramp.dev/merchant/signup?merchant_category=coaching_education

Admin dashboard

https://noramp.dev/admin/dashboard

Admin merchant onboarding

https://noramp.dev/admin/merchant-onboard

Plugin API base URL

https://api.noramp.dev

Onboarding Paths

1. Public Application With AI Review

Use this when the merchant has not already been approved.

  1. Merchant submits business name, email, website URL, catalog URL, support email, and support phone.
  2. The platform fetches the public site and catalog.
  3. Deterministic compliance checks run first.
  4. Claude AI review runs when configured.
  5. Merchant receives immediate feedback: preapproved or needs changes.
  6. No processor account is created from the public application page.
  7. Admin reviews the application and creates the onboarding link.

2. Admin Precheck Onboarding

Use this when an admin wants a full site precheck before account creation.

  1. Admin enters identity, support info, site URLs, evidence, tier, and callback URL.
  2. The platform runs deterministic checks and Claude review when configured.
  3. If the precheck passes, the processor account is created through the platform API.
  4. The account receives the selected category MCC, approved description, fee policy, reserves, and metadata.
  5. Admin sends the hosted onboarding URL to the merchant.
  6. Merchant completes hosted KYC.
  7. Merchant receives API Base URL and Merchant Token after completion.

3. Trusted Short-Link Onboarding

Use this when the merchant is already manually approved and you do not want to run the AI/site assessment again. Create it from the admin onboarding page with the trusted onboarding form.

https://api.noramp.dev/t/<short_code>

Example:

https://api.noramp.dev/t/t_oneday1

Trusted Short-Link Rules

Do not use native processor account links directly for these merchants. Native links do not guarantee the correct MCC or business profile setup.

What The Platform Sends

When the merchant clicks a normal or trusted onboarding link, the connected account is created with:

country = US
email

capabilities:
card_payments
link_payments
transfers

business_profile:
mcc = selected category MCC
name = business name / legal entity / email
product_description = selected category product description
support_email
support_phone
support_url
url = merchant site URL

controller:
fees.payer = application
losses.payments = application
requirement_collection = stripe
stripe_dashboard.type = express

settings:
statement_descriptor
statement_descriptor_prefix = category prefix, such as RSCH or COACH
payouts.schedule.interval = manual
branding.primary_color, if provided

metadata:
internal_merchant_id
merchant_category = selected category key
vertical = selected category vertical
industry = selected category industry
mcc = selected category MCC
compliance_template
tier
platform_fee_percent
estimated_all_in_fee_percent
reserve_percent
merchant_site_url
merchant_callback_url
processor_profile_locked = true

The merchant still completes unavoidable hosted KYC: owner information, tax details, address, bank account, TOS acceptance, and requested verification forms.

Fee Policy

Standard

18% estimated all-in 15% platform fee 10% reserve

Growth

10% estimated all-in 7% platform fee 10% reserve

Enterprise

9% estimated all-in 6% platform fee 10% reserve

The platform fee is the application fee charged by the gateway. The all-in number assumes roughly 3% processor cost.

Admin Intake Fields

Normal precheck onboarding

  • Internal merchant ID
  • Legal entity name
  • DBA / customer-facing name
  • Merchant email
  • Website URL and catalog URL
  • Support email, phone, and URL
  • Statement descriptor
  • Brand primary color
  • Merchant category
  • Sample CoA URL, when required for the selected category
  • Age gate screenshot URL, when required for the selected category
  • Shipping label example URL, when required for the selected category
  • Tier, estimated volume, banking jurisdiction, and callback URL

Trusted onboarding

  • Internal merchant ID
  • DBA / customer-facing name
  • Merchant email
  • Merchant category
  • Website URL
  • Support email and phone
  • Statement descriptor
  • Tier
  • Approval reason

Compliance Precheck

Before normal account creation, the platform checks:

The reason this happens before processor account creation is applicant-pool hygiene. Processor risk teams can infer who a platform is attracting from rejected and attempted applications, not only approved merchants. See the business model thesis for the operating rationale.

Merchant Credentials

After hosted onboarding, the merchant receives:

The merchant token is signed and stored only as a hash in Neon. Admins can rotate or revoke tokens.

Credential portal

https://api.noramp.dev/merchant/credentials?token=<merchant_token>

WooCommerce Callback URL

The merchant plugin exposes this callback URL:

https://merchant-domain.com/wp-json/payment-gateway/v1/callback

If a merchant accidentally provides wp-jsn, the platform normalizes it to wp-json.

Shopify Bridge

Shopify stores use the manual offsite bridge instead of native Shopify payment-app checkout. The merchant creates a manual payment method named Secure Card Payment, then the platform creates and reconciles the hosted payment link from the Shopify orders/create webhook.

https://api.noramp.dev/webhooks/shopify/orders-create

Required Platform Environment

STRIPE_SECRET_KEY
STRIPE_PUBLISHABLE_KEY
STRIPE_WEBHOOK_SECRET
DATABASE_URL
PUBLIC_BASE_URL
MERCHANT_TOKEN_SECRET
ADMIN_SESSION_SECRET
DASHBOARD_ADMIN_EMAIL
DASHBOARD_PASSWORD_HASH
ANTHROPIC_API_KEY, optional for AI review
ANTHROPIC_MODEL, optional
SHOPIFY_API_KEY, optional for OAuth app install
SHOPIFY_API_SECRET, optional for Shopify webhooks
SHOPIFY_WEBHOOK_SECRET, optional when different from app secret
RESERVE_HOLD_DAYS=60
RESERVE_PAYOUTS_ENABLED=0

Admin Monitoring

Revocation

Per-merchant revocation is database-backed. Revoking a merchant's tokens prevents those token hashes from authenticating future checkout requests.