OrdioDocumentation
Version 1.0.0
Installation guide →
Optional integrations

Payments

Customers can pay online through the business's own payment-provider account, or pay when collecting or receiving an order. Ordio does not receive or hold payment funds.

Choose a provider

ProviderSuitable for
StripeCard checkout in currencies supported by the business's Stripe account
PayPalPayPal checkout in currencies supported by the business's PayPal account
PaystackCard and local payment methods supported by the business's Paystack account
YocoZAR card checkout

Start with the provider's test or sandbox credentials. Deploy and test one provider before enabling Online payments under Settings.

Stripe

  1. Save the test key with npx firebase-tools@15.24.0 functions:secrets:set STRIPE_SECRET_KEY.
  2. Add https://REGION-PROJECT_ID.cloudfunctions.net/stripeWebhook as a Stripe webhook.
  3. Subscribe to checkout.session.completed.
  4. Save its signing secret with npx firebase-tools@15.24.0 functions:secrets:set STRIPE_WEBHOOK_SECRET.
  5. Deploy with npm run deploy -- --providers=stripe.
  6. Select Stripe under Settings > Payments.

PayPal

  1. Create a PayPal REST application and copy its sandbox client ID and secret.
  2. Save them with:

- npx firebase-tools@15.24.0 functions:secrets:set PAYPAL_CLIENT_ID - npx firebase-tools@15.24.0 functions:secrets:set PAYPAL_CLIENT_SECRET

  1. Keep PAYPAL_ENVIRONMENT=sandbox in functions/.env.
  2. Add https://REGION-PROJECT_ID.cloudfunctions.net/paypalWebhook as the application webhook.
  3. Subscribe to CHECKOUT.ORDER.APPROVED and PAYMENT.CAPTURE.COMPLETED.
  4. Copy the webhook ID and save it with npx firebase-tools@15.24.0 functions:secrets:set PAYPAL_WEBHOOK_ID.
  5. Deploy with npm run deploy -- --providers=paypal.
  6. Select PayPal under Settings > Payments.

Change PAYPAL_ENVIRONMENT to live only when replacing the sandbox credentials with credentials from the live PayPal application.

Paystack

  1. Save the Paystack test key with npx firebase-tools@15.24.0 functions:secrets:set PAYSTACK_SECRET_KEY.
  2. In Paystack, set the webhook URL to https://REGION-PROJECT_ID.cloudfunctions.net/paystackWebhook.
  3. Deploy with npm run deploy -- --providers=paystack.
  4. Select Paystack under Settings > Payments.

Paystack requires the customer account to have an email address. Customers signed in only by phone can choose another available payment method.

Yoco

  1. Save the test key with npx firebase-tools@15.24.0 functions:secrets:set YOCO_SECRET_KEY.
  2. Add https://REGION-PROJECT_ID.cloudfunctions.net/yocoWebhook as a Yoco webhook.
  3. Enable the payment success, failure and refund events available in the Yoco dashboard.
  4. Save the webhook signing secret with npx firebase-tools@15.24.0 functions:secrets:set YOCO_WEBHOOK_SECRET.
  5. Deploy with npm run deploy -- --providers=yoco.
  6. Select Yoco under Settings > Payments.

Replace REGION with FUNCTIONS_REGION and PROJECT_ID with the Firebase project ID.

Test before accepting payments

  • A successful test payment produces one paid order with the correct total and currency
  • Cancelling returns to the ordering platform without marking the order as paid
  • Failed payments remain unpaid
  • Repeating the same webhook does not duplicate the payment or order
  • Invalid webhook signatures are rejected
  • Collection and delivery payment options still work when online payments are disabled

Order totals are calculated again in Functions. Provider redirects do not mark orders as paid; payment is confirmed with the provider and checked against the stored order amount.

Ordio documentation - Updated 9 August 2026Your hosting. Your data.