Payment providers
Configure FastSpring, PayPal, Triple-A and bank transfer instances in Control Center — fields, credentials, webhooks, test and live instances, and price mappings. Stripe stays disabled.
On this page
Payments & billing › Payment providers lists every provider instance. An instance is one configured account of a provider in one environment (test or live) — for example a FastSpring test store and a FastSpring live store are two instances. The form of each instance is generated from the provider's own definition, with English and Arabic labels and help for every field. Configuring needs providers.manage, a step-up and a reason.
What needs merchant credentials#
| Provider | You need from the merchant account | Status |
|---|---|---|
| FastSpring | A store (test and/or live), API credentials, a webhook and its HMAC secret, a checkout path, one product per HyoNova price | Supported · Ready to configure |
| PayPal | A PayPal Business account, a REST app (client ID and secret) and a webhook on that app | Supported · Ready to configure |
| Triple-A | A merchant account: OAuth client ID and secret, and the merchant key | Supported · Ready to configure |
| Bank transfer | The receiving bank account details | Supported · Ready to configure |
| Stripe | Nothing — keep it disabled | Disabled |
The issuer profile, billing settings, routing, price mappings and discounts need no external credentials.
Configure an instance#
- Open the instance. Choose the provider's card. HyoNova seeds one instance per provider, disabled.
- Choose the environment.
testfor the provider's sandbox,livefor real money. - Fill in the settings. Non-secret values such as a checkout path, a merchant key or bank names.
- Enter the credentials. Secret fields are written to the secret store. They are never shown again; the form shows only whether each is configured. Leave a secret empty to keep the stored value.
- Set role and priority.
primaryfor the instance a route uses,secondaryfor a fallback,availablefor configured but unused. - Enable and save with a reason. Enabling a
primaryinstance demotes any other enabled primary of the same provider and environment tosecondary. - Test the connection. See Provider health. Every save clears the previous test result.
To run test and live side by side, add an instance (provider, a new instance key, environment, reason). It starts disabled.
FastSpring (card)#
| Field | Required | Value |
|---|---|---|
| Checkout path | Yes | From FastSpring › Checkouts |
| Store name | No | Display only |
| API username | Yes (secret) | FastSpring › Developer Tools › APIs › API Credentials |
| API password | Yes (secret) | Shown once by FastSpring |
| Webhook HMAC secret | Yes (secret) | FastSpring › Developer Tools › Webhooks › your webhook |
In FastSpring, create a webhook with the URL shown on the instance card (the product API host followed by /api/v1/webhooks/payments/fastspring), set its HMAC SHA256 Secret, turn on webhook expansion so events carry full subscription, order and account objects, and select the events listed on the card: order.completed, order.failed, subscription.activated, subscription.charge.completed, subscription.charge.failed, subscription.payment.overdue, subscription.updated, subscription.canceled, subscription.uncanceled, subscription.deactivated, subscription.paused, subscription.resumed, return.created, payoutEntry.created.
Give each instance its own webhook secret. Webhooks are checked against every instance of the provider; with a shared secret a live event could be matched to the test instance and then ignored as an environment mismatch.
PayPal (PayPal balance, bank or card inside PayPal)#
| Field | Required | Value |
|---|---|---|
| Webhook ID | Yes | developer.paypal.com › Apps & Credentials › your app › Webhooks |
| Brand name on PayPal | No | Shown to the buyer on the PayPal approval page |
| Client ID | Yes (secret) | developer.paypal.com › Apps & Credentials › your REST app (Sandbox or Live tab matching the environment) |
| Client secret | Yes (secret) | The secret of the same REST app |
- Create a REST app. In developer.paypal.com › Apps & Credentials, pick the Live tab for
live(or Sandbox fortest) and create an app of type Merchant. Copy its client ID and secret. - Add the webhook to that app. URL: the product API host followed by
/api/v1/webhooks/payments/paypal(shown on the instance card). Events:BILLING.SUBSCRIPTION.ACTIVATED,BILLING.SUBSCRIPTION.UPDATED,BILLING.SUBSCRIPTION.RE-ACTIVATED,BILLING.SUBSCRIPTION.CANCELLED,BILLING.SUBSCRIPTION.SUSPENDED,BILLING.SUBSCRIPTION.EXPIRED,BILLING.SUBSCRIPTION.PAYMENT.FAILED,PAYMENT.SALE.COMPLETED,PAYMENT.SALE.REFUNDED,PAYMENT.SALE.REVERSED. Copy the webhook ID. - Configure the instance with the environment, the three values and a reason, then Test connection. The test asks PayPal for an access token; without a webhook ID the instance reports configuration incomplete.
- Create plans at the provider. The PayPal card offers Create plans at the provider once nothing is missing. HyoNova creates one PayPal product per HyoNova plan and one PayPal billing plan per active price that has no mapping yet, then saves the mappings. Seat prices are created with quantity support. Existing mappings are never changed; run it again after adding prices.
- Enable the
paypalroute in Payment routing.
A buyer approves the subscription on PayPal; HyoNova activates it from BILLING.SUBSCRIPTION.ACTIVATED and records each charge from PAYMENT.SALE.COMPLETED. Every webhook is verified with PayPal's signing certificate (fetched only from PayPal's API hosts) against the configured webhook ID; anything else is refused with 401. PayPal does not prorate: a plan change on a PayPal subscription is scheduled for the end of the paid period. A cancelled PayPal subscription keeps access to the end of that period, and HyoNova closes it a day later because PayPal sends no final event.
Triple-A (crypto)#
| Field | Required | Value |
|---|---|---|
| Merchant key | Yes | Triple-A dashboard › API keys |
| Order currencies | Yes | Fiat currencies HyoNova invoices in, for example USD,EUR |
| Settlement currency | No | Informational |
| Client ID | Yes (secret) | OAuth client ID |
| Client secret | Yes (secret) | OAuth client secret |
| Notification signing secret | Yes (secret) | A random secret of 16 to 64 characters that you generate |
No webhook is set up in the Triple-A dashboard: HyoNova sends the notification URL and the signing secret with every payment request. The test environment uses Triple-A's sandbox.
Bank transfer (built into HyoNova)#
| Field | Required | Value |
|---|---|---|
| Beneficiary name | Yes | Account holder exactly as the bank has it |
| Bank name | Yes | Receiving bank |
| SWIFT / BIC | No | For international transfers |
| Accepted currencies | Yes | Currencies the account receives |
| Payment instructions | Yes | Printed on invoices; ask payers to quote the payment reference |
| Intermediary bank | No | Correspondent bank details |
| IBAN / Account number | One of the two (secret) | Kept in the secret store; shown only to the paying company and to operators |
There is no API and no webhook: payments are confirmed by an operator (see Refunds and bank confirmations).
Stripe (disabled)#
Stripe is a complete integration kept Disabled, role available, with no route. Leave it so unless HyoNova decides to use it. If it is ever configured, its secret key must match the instance environment (test keys for test, live keys for live).
Price and discount mappings#
Card prices are sold through the provider's own catalogue. For every HyoNova price sold by card, add a mapping per environment on the price (provider, environment, the provider's product reference — a FastSpring product path or a PayPal billing plan ID). For PayPal the mappings are normally created by Create plans at the provider. A card checkout for an unmapped price is refused, and upgrades need the target price mapped too. Discount codes used with card need the provider's coupon code mapped the same way. Mappings need plans.manage.
Status#
| Feature | Status | Notes |
|---|---|---|
| Payment providers and routing | Requires setupBuilt, but works only after a supporting service is configured for your workspace. | Configure payment provider instances, test their connections and route each payment method to one of them. |
Was this page helpful?
Thanks. Page ratings are not collected yet, so nothing was sent. If something is missing or wrong, see the Get help page.