Who this is for. Developers and site administrators setting up a store's payment methods, tax providers and shipping methods, and checking them before launch. Look a provider up here; how each fits into a checkout is on Payment methods and how a payment runs and Tax zones and providers. Sign-in providers (Google, Microsoft, Facebook) are on How the sign-in methods fit together.

True of every provider below, and not repeated in each entry:

  • A provider is a record, not a setting. Payment methods are added under Invoices › Payment methods, tax providers under Taxes. Each has a name, an on or off switch (Active or Enabled), an optional site, and the configuration listed below. Like every record, it exists only on the environment where it was created, so staging and production each need their own.
  • Payment methods are shared by every site of the account. GET /cdna-api/invoices/payment-methods?active=1 lists the active methods of every site, so filter it to entries whose site is the current one or none.
  • Active is the switch that offers a method. To offer a method only for some currencies, amounts or countries, filter the list in the checkout's own code.
  • These are the providers the platform ships: four payment provider types, three tax provider types and the template shipping method.

Payment providers

Stripe

Typestripe
CapabilitiesCards, and the other payment method types the connected Stripe account has switched on. At checkout, 3-D Secure and bank redirects, as the purchase response's PAYMENT_AUTHENTICATION_REQUIRED and PAYMENT_REDIRECT. Full and partial refunds from the site's admin. Works at checkout and in forms.
ConfigurationOnly the connected account's id (account_id), set by the "Connect account" button. There are no API keys to enter: the platform's own Stripe keys are used, through Stripe Connect. The payment methods list gives the browser the publishableKey and accountId it needs.
Order createdBy Stripe's webhook, which Core dna registers for the whole platform; a site registers nothing. The purchase call normally answers PAYMENT_PENDING: the checkout is split from its cart and kept for Checkouts.standaloneLifetime (a year by default) while the shopper waits on the payment-processing page, and the webhook completes it into an order. See The payment-processing page and webhooks.
Test modeThe Test Mode switch selects the platform's test or live Stripe keys. Pay with Stripe's test cards.
Go-live checklist
  • Test Mode off, and the account connected.
  • Stripe's script hosts in the CSP policy setting.
  • The payment-processing page built and polling.
  • The payment method types switched on in Stripe confirm within Checkouts.standaloneLifetime of the attempt, a year by default.
  • Refunds issued from the site's admin, so the site records them.
  • One small real order placed and refunded.

PayPal

Typepaypal
CapabilitiesPayPal, and PayPal's card fields. Full and partial refunds from the site's admin. Works at checkout and in forms.
ConfigurationclientId and clientSecret, from a PayPal REST app
Order createdDuring the purchase call, which captures the payment and creates the order in the same request. PayPal needs no webhook.
Test modeTest Mode uses PayPal's sandbox, with the credentials of a sandbox REST app
Go-live checklist
  • The live REST app's client ID and secret, and Test Mode off.
  • PayPal's script hosts in the CSP policy setting.
  • A routine to compare PayPal's dashboard with the site's orders, regularly.
  • One small real order placed and refunded.

PayPal Donate

Typepaypal-donate
CapabilitiesThe PayPal donate button, for donations through a form's payment element. A donation through a hosted button starts as a draft invoice, finalised with the amount PayPal reports. Refund a donation in PayPal.
ConfigurationbusinessEmail (the PayPal account that receives the money) or hostedButtonId (a button made in PayPal). It also uses the environment's PayPal Donate salt, set by Core dna.
Completed byPayPal's notification, which the platform checks with PayPal before trusting it. The notification address is sent with each donation, so nothing is registered. The form submission is completed, and its Completed event fires, when the notification arrives
Test modeTest Mode uses PayPal's sandbox, for the button and for checking notifications
Go-live checklist
  • The live business email or button, and Test Mode off.
  • The salt confirmed on production with Core dna.
  • One real donation made, and the form submission seen as completed.

Mock Pay

Typemock-pay
CapabilitiesNone real: it reports payments as successful without taking any money, and the orders it creates look like real ones. Refunds are accepted when its refunds switch is on.
ConfigurationfailureRate (never, random or always; default never), and switches for authorisation, partial capture and refunds (authorizationSupported, partialCaptureSupported, refundsSupported, all off by default)
Test modeIt is only ever a test. Use always to exercise the decline path and random for retries
Go-live checklist
  • No Mock Pay method Active on any site of the account.
  • GET /cdna-api/invoices/payment-methods?active=1 on the live hostname returns no "paymentServiceProviderType": "mock-pay".
  • No form's payment element offers it.
See The mock provider.

Tax providers

A tax provider is chosen per checkout: the provider of the tax zone that matches the address, or the default provider when none does. Every provider receives the default warehouse's address as the ship-from address when no other warehouse is given, and returns the tax per line, shipping included.

Avalara

Typeavalara
CapabilitiesCalculation per line, including shipping. Address validation, on by default: Avalara validates the address before it calculates. Submits the transaction to Avalara after payment, when submit_documents is on. Product tax codes through tax categories.
Configurationaccount_id, license_key, company_code, sandbox_environment, submit_documents, validate_address, default_item_tax_code, shipping_tax_code
Test modeThe sandbox switch sends requests to Avalara's sandbox, with a sandbox account's credentials
Go-live checklist
  • Production credentials and company code, and the sandbox switch off.
  • Nexus configured in Avalara for every place the client must collect. Elsewhere Avalara returns zero tax.
  • A default item tax code and a shipping tax code set, and a tax category on every product whose code differs from the default.
  • Submit documents on, if the client files returns from Avalara.
  • The default warehouse's address correct.

Stripe Tax

Typestripe
CapabilitiesCalculation per line, including shipping, through the platform's Stripe keys and the account of the site's Stripe payment method. Submits the transaction to Stripe after payment, when submit_documents is on.
Configurationaccount_id, test_mode, submit_documents, default_item_tax_code, shipping_tax_code
Test modeUses the platform's Stripe test keys, which Core dna manages; arrange testing with Core dna
Go-live checklist
  • Test mode off, and the Stripe payment method connected to the same account.
  • A registration in Stripe for every place the client must collect. Elsewhere Stripe Tax returns zero tax.
  • The default item tax code and the shipping tax code set.

Mock

Typemock
CapabilitiesOne flat percentage on every line, shipping included. Nothing is submitted anywhere.
Configurationrate, the percentage
Test modeIt is only ever a test
Go-live checklistNo live tax zone, and not the default provider, points at it: it would charge real shoppers a made-up rate.

Shipping

Template method

TypeThe one kind of shipping method: even a flat rate is a template.
CapabilitiesAny calculation a template can make from the items, their products and the address: bands by weight or value, free shipping over an amount, regions by postcode. The template creates rates with rates.create(total, name, serviceLevel, courierName): the rates it creates are the method's result, worked out by the template's own logic and tables.
ConfigurationName, Active, a group, its shipping categories, the warehouses it serves for pickup, and the template code in the site's template language. Where the method ships, by region or by site, is decided in the template.
Test modeTest on a test site, with a method that offers a single free rate if the build needs one, and compare every rate with a hand calculation
Go-live checklist
  • Every product has a shipping category, or a default shipping category is set.
  • Every method has at least one shipping category, and together they cover every category in use.
  • Each template tested with a domestic, an international and a pickup order, and one order per band.
  • Region rules written in the template from the delivery address, and any site rule checked there with the site's id.
  • No test method left active.
See every method is a template.