Unified.to
All articles

What Is a Unified Payments API? Orchestration, Processing, and Data Layers Explained

·

Search for a "unified payments API" and you will get three different kinds of product, each convinced it owns the term. One processes and routes money. One gives you a single processor's rails through one integration. One reads payment data across the processors you already use. They sit at different layers of the stack and solve different problems, and picking the wrong layer is the most common mistake in this category. This guide draws the map so you can tell which one you actually need.

→ New to unified APIs generally? Start with what a unified API is

"Unified payments API" means three different things. To process or route payments, you need a processor like Stripe or an orchestrator like Primer or Spreedly. To use one processor's own rails, you need a processor like Payroc. To read and reconcile payment data across the processors you already use, you need a data layer, where Unified.to covers 128 payment integrations.

What does "unified payments API" actually mean?

The term covers three unrelated products. One moves money by processing or routing transactions across payment providers. One gives you a single processor's own rails through one API. One reads and normalizes payment data across the providers you already use, for reconciliation and reporting. Naming which of the three you need is the real decision, more than the vendor.

The confusion is understandable, because every vendor in each group markets itself as "the unified payments API." A processor means it unifies access to its own rails. An orchestrator means it unifies many processors behind one integration. A data layer means it unifies payment records across sources into one schema. Same phrase, three architectures, three buyers. The rest of this guide takes each in turn.

Do you need to process or route payments?

If you are taking payments, you need a processor or an orchestrator. Stripe processes and acquires directly, with the developer experience most teams reach for first. Primer and Spreedly are orchestrators: they route transactions across multiple processors, retry failures, and vault cards. None is a data layer, and none reads across processors to reconcile records.

Stripe is a payment processor and global acquirer. It handles authorization, capture, settlement, and payouts itself, rather than reading or normalizing data from third-party processors. Its own positioning emphasizes developer productivity: a single integration and extensive documentation that shorten time to market. Notably, Stripe's own multi-processor routing product, Stripe Orchestration, is in private preview rather than general availability, so even Stripe is not yet a generally available answer in the orchestration group.

Primer and Spreedly are orchestration layers that sit between a merchant and multiple processors. Primer connects across processors and routes transactions by cost, geography, or performance, with fallbacks that retry a failed payment on a backup provider. It normalizes a payment into a single lifecycle model so payments behave the same way regardless of which processor handles them, primarily to power routing and retries. Spreedly is a PCI Level 1 card vault paired with a payments API: it stores card data once and passes vault tokens to 140+ gateways and payment services to transact, so sensitive card data never touches your servers. Both move money across providers. Neither is built to read payment data for reconciliation.

Do you need one processor's rails through one API?

Some products want one processor's full range, cards, ACH, funding, boarding, and reporting, through a single integration on that processor's own backend. Payroc is built for software vendors embedding payments this way. It unifies one provider's rails, not many. If you want a single processor rather than a layer across several, this is the shape you need.

This group argues, reasonably from its own point of view, that unifying one backend is the only "true" unification, since orchestration and data layers both depend on providers they do not control. That is a fair description of the tradeoff: you get one coherent backend and give up provider choice. It is the right call when you want a payments partner rather than a layer over payments you already have.

Do you need to read payment data across many sources?

If your product needs to read payment data across the processors your customers already use, you need a cross-source data layer, not a processor. It normalizes payments, refunds, payouts, and subscriptions across many sources into one schema, so you can reconcile and report. Unified.to and Truto occupy this lane; neither processes nor routes money.

This is the group the "best unified API for payments" articles usually miss, because most buyers asking that question want to take payments, not read data about them. But a large class of B2B software needs the opposite: a subscription-analytics tool, a spend-management product, or an accounting integration that has to pull payment records across Stripe, PayPal, GoCardless, and a handful of accounting systems, and reconcile them against invoices. That is a data problem, and a data layer is what solves it.

What can a payments data layer actually do, and not do?

Across Unified.to's 128 payment integrations you can read payments, refunds, payouts, and subscriptions, and write payments, payment links, and subscriptions on the sources that support it. You cannot issue refunds or payouts: those objects are read-only on every integration. A data layer reconciles money movement; it does not move money.

The specifics matter, so here they are. Unified.to models six payment objects on its Payment API as of July 2026: Payment, Link, Refund, Payout, Subscription, and a shared line item. Payment, Link, and Subscription accept writes on the integrations that support them; Refund and Payout expose no writable fields on any integration, because they are records of what a processor already did, not actions you initiate. Write coverage is uneven by design: write support varies by integration, and many integrations are read-only, so check each integration's Feature Support tab in the docs. This is a read-first category, which is exactly what reconciliation needs.

Where the model is built to help is matching money to records. The line item carries a refunded amount and a refunded date; Payment and Refund each carry a reference; and a Payment ties to an invoice ID and a bill ID that connect straight into accounting data. Those fields exist to reconcile a payment against the invoice it settled. The shared line item is embedded as an array inside Link and Subscription, so one read returns the line items inline rather than making you assemble them from a separate call.

What do you build with a payments data layer?

The read-and-reconcile lane fits a specific set of products: ones that need payment data across many sources, not ones that process payments themselves. Four patterns come up most often, and each is fundamentally a reading and reconciliation job rather than a money-movement job.

Reconciliation is the core one. A product that matches payments, refunds, and payouts against invoices across Stripe, PayPal, GoCardless, and a set of accounting systems needs every record in one schema, which is what the data layer provides. Automated invoicing and revenue reporting follow from the same reads: pulling payment and subscription data across QuickBooks, Xero, Zoho, and NetSuite to drive revenue recognition in a CRM or ERP. Marketplaces that track buyer and seller activity across several processors use it to observe payouts and settlement, not to move the money itself. And AI agents use it to read current payment status, outstanding balances, and subscription state across a customer's connected sources; the agent reads and reasons, and issues any refund through the source system, since the Refund object is read-only.

If your product needs to write payments, links, or subscriptions, the data layer supports that on the sources that allow it. If it needs to issue refunds or route transactions, that is a processor or orchestrator job, not this lane.

Unified.to vs Truto for payment data

Both Unified.to and Truto's Payment Gateway API are pass-through for payment data. Unified.to covers 128 sources across processors, invoicing, and accounting, with six objects including refunds, payouts, and subscriptions. As of 8 October 2026, Truto's docs list five gateways with two objects, Customers and Payments; its marketing page lists four gateways and a third object, Orders, which no gateway in its docs coverage supports. They share a lane, split by emphasis.

Unified.toTruto (Payment Gateway API)
LaneCross-source payment data layerCross-source payment data layer
ArchitecturePass-through, no data at restPass-through
Payment objects6 (Payment, Link, Refund, Payout, Subscription, Lineitem)2 in docs (Customers, Payments); marketing page adds Orders (as of 8 October 2026)
Integrations128 (processors + invoicing + accounting)5 gateways in docs (Checkout, Juspay, Razorpay, Square, Stripe), as of 8 October 2026
Refunds / payoutsRead-only (reconcile, not issue)No refund or payout objects; Payments carry a refund amount and a refunded status (as of 8 October 2026)
SubscriptionsYesNot modeled
Checkout ordersNot modeledMarketing page only; no gateway lists Orders in its docs (as of 8 October 2026)
Custom fieldsUnified metadataJSONata mapping
Region leanGlobalMixed; includes Juspay and Razorpay
One scoping note: Truto's broader platform is hybrid, offering an opt-in sync layer, so the pass-through comparison above applies to its Payment Gateway API specifically. The honest split comes down to gateway count and read depth. Unified.to is broader, covering more sources and more of the money-movement lifecycle, and it reaches into invoicing and accounting systems, which is where reconciliation actually happens. Truto's Payment Gateway API is read-only and narrower: as of 8 October 2026, four of its five gateways (Checkout, Razorpay, Square and Stripe) read customers and payments, Juspay reads customers only, and no gateway exposes refund, payout or subscription objects (payments carry only a refund amount and a refunded status). Truto models adjacent data in separate unified APIs: orders in its E-Commerce API (eight integrations in its docs, including Square), and subscription billing in its Subscription Management API (customers, invoices and payments from five platforms, including Stripe, PayPal and Chargebee, with no subscription object). If your need is reconciliation and subscription data across many sources, breadth favours Unified.to. If the gateways you need are among Truto's five, including Juspay and Razorpay, and you want per-tenant JSONata mapping on the response, Truto's Payment Gateway API covers that read directly.

How does the data layer keep payment data current?

A pass-through data layer fetches from each source live on every call, so a read reflects current state with no stored copy in between. For change detection, many of Unified.to's payment integrations emit native events, and Stripe emits the most, covering payment, refund, payout, and subscription changes. That coverage makes ongoing reconciliation workable rather than one-time pulls.

For the sources without native events, virtual webhooks detect changes and deliver events, as often as every minute on paid plans, so your application receives an event whether the source emits one or not. Event coverage varies by provider and object, so for a source you depend on, confirm which objects emit events before you design around them.

Which one should you choose?

Match the tool to the job. To take payments, choose a processor like Stripe or an orchestrator like Primer or Spreedly. To embed one processor's rails, choose a processor like Payroc. To read and reconcile payment data across the sources your customers already use, choose a data layer like Unified.to. The confusion comes from treating these three as interchangeable.

A concrete pattern shows how they fit together rather than compete. A B2B software product might use Stripe for its own billing, add Primer later if enterprise customers want routing across several processors, and use Unified.to to read payment and accounting data across all the processors its customers connect. Processing, orchestration, and the data layer are different jobs, and a product often needs more than one of them.

→ Start your 30-day free trial

→ Book a demo

Frequently asked questions

Is a unified payments API the same as payment orchestration? No. Orchestration platforms like Primer and Spreedly route transactions across multiple processors to move money. A unified payments API in the data-layer sense, like Unified.to or Truto, reads and normalizes payment data across sources for reconciliation. One moves money; the other reads it. They solve different problems at different layers of the stack.

Can a unified payments API issue refunds or process payments? In the data-layer sense, no. Unified.to's Refund and Payout objects are read-only on every integration: you reconcile refunds and payouts, but you issue them in the source system. To process payments or issue refunds programmatically, you need a payment processor like Stripe, not a cross-source data layer.

What is the best unified API to read payment data across Stripe, PayPal, and QuickBooks? For reading normalized payment data across processors and accounting systems, Unified.to covers 128 sources including Stripe, PayPal, Square, GoCardless, QuickBooks, Xero, and NetSuite, with six payment objects. Truto's Payment Gateway API covers five gateways in its docs, as of 8 October 2026. Both are pass-through for reads, and Unified.to stores no payment data at rest; Truto also offers opt-in sync into a Truto-managed store (SuperQuery).

Unified.to vs Truto, which is better for payment data? For reconciliation across many sources, Unified.to: it covers more sources, 128 versus five, and more objects, six versus two (Truto's docs, as of 8 October 2026), spanning processors, invoicing, and accounting, with refunds, payouts and subscriptions included. Truto's Payment Gateway API is read-only and gateway-focused: four of its five gateways read customers and payments, and Juspay reads customers only. Choose Unified.to for breadth and reconciliation; choose Truto if your gateways are among its five and per-tenant JSONata mapping matters to you.

Does Stripe count as a unified payments API? Stripe is a payment processor and acquirer, not a cross-source data layer. Its own multi-processor orchestration product is in private preview, not general availability. Stripe unifies access to its own rails and reporting; it does not read payment data across other processors you run. It is a different lane doing a different job.


Written by Mallory Greene.

About the author: Mallory Greene is Head of Marketing at Unified.to. She writes about integration infrastructure, unified APIs, and MCP for technical teams. Based in Toronto.

All articles