Skip to content

Payment Provider Research — Ecuador

Context

VoxQuote needs a payment provider for Premium subscriptions (monthly recurring). Target market: Ecuador. Initial plan: manual activation via /admin/users/{id}/subscription while evaluating providers. Decision deferred until post-launch.

Candidates

1. PayPal

Setup requirements - Personal or business PayPal account (business preferred for invoicing) - No RUC required to receive payments - Verified email required

Subscription support - Native recurring billing via Subscriptions API (Plans + Subscriptions) - Monthly billing cycles supported out of the box

Fees (Ecuador → receiver) - ~4.4% + $0.30 USD per transaction (international standard rate) - No monthly fee for basic integration

Webhook reliability - Mature webhook system (BILLING.SUBSCRIPTION.RENEWED, etc.) - Occasional delays reported; idempotency via BILLING-SUBSCRIPTION-ID header recommended

Refund mechanics - Full/partial refunds via dashboard or API - Refunds credited within 5 business days

USD pricing - Native USD support ✓

Notes - Widely trusted in Ecuador - Easy for users to pay with credit card even without a PayPal account - SDK: paypalrestsdk (Python) or direct REST API


2. PlaceToPay (Everteam / Redpos)

Setup requirements - Ecuadorian legal entity (company or natural person with RUC) - Contract with PlaceToPay / local reseller - Integration approval process (takes ~2 weeks)

Subscription support - Tokenized card billing supported (stored-card recurring) - Requires PCI-compliant token vault setup

Fees - ~2.5–3.5% per transaction (negotiated; varies by volume) - Monthly platform fee (~$30–60 USD/month depending on tier)

Webhook reliability - REST notifications; fairly reliable within Ecuador's banking ecosystem - Supports Banco del Pacífico, Produbanco, Banco Pichincha, etc. natively

Refund mechanics - Refund via dashboard or API; local bank processing time applies (2–5 days)

USD pricing - Native USD ✓ (Ecuador is USD-dollarized)

Notes - Stronger for local card acceptance (SRI-compliant invoicing possible) - Higher setup friction than PayPal - Better long-term fit if user base is primarily Ecuadorian professionals


3. PayPhone

Setup requirements - Ecuadorian RUC required - Account activation via PayPhone portal (24–48h approval) - No paper contract needed

Subscription support - One-time payment buttons and payment links natively - Recurring billing: manual charge via token (card tokenization available) - Less mature than PayPal's subscription API

Fees - ~3.5% per transaction - No monthly platform fee

Webhook reliability - Simple webhook callbacks; less documentation than PayPal - Mainly used for one-time e-commerce in Ecuador

Refund mechanics - Via dashboard (no refund API documented as of 2026-Q1)

USD pricing - Native USD ✓

Notes - Quickest to onboard among Ecuadorian options - Good for one-time payments; subscriptions require custom implementation - Limited English documentation


Comparison Matrix

Criteria PayPal PlaceToPay PayPhone
Setup time Hours 2+ weeks 24–48h
RUC required No Yes Yes
Native subscriptions ✓ Yes Partial Manual
Fees ~4.4% + $0.30 ~2.5–3.5% + flat ~3.5%
USD
Local card acceptance Limited Best Good
Webhook quality Mature Good Basic
Refund API Dashboard only

Recommendation

Launch phase (manual): Use /admin/users/{id}/subscription endpoint. Collect payment via PayPal transfer, Bancolombia, or Banco del Pacífico. Mark user as premium manually. Acceptable until ~50 paying users.

Phase 2 (automated): Integrate PayPal first — zero friction, no RUC, mature subscription API, widely accepted in Ecuador. The payment_service.py stub interface is provider-agnostic so swapping to PlaceToPay later requires only replacing the implementation, not the caller interface.

Future consideration: PlaceToPay if user base grows and local card acceptance becomes a friction point (Visa/MC issued by Ecuadorian banks sometimes block PayPal transactions).

Next Steps

  1. Create PayPal developer account at developer.paypal.com
  2. Set up sandbox subscription plan matching Premium tier price
  3. Implement payment_service.py with create_checkout + handle_webhook
  4. Add /billing/checkout and /billing/webhook endpoints
  5. Wire Flutter to open in-app browser with checkout URL