Back to all posts
GuidesJune 11, 2026 · 1 min read

API Credentials vs OAuth 2.0 in NewLedger

Which App Connect path should you use for server-side integrations, partner apps, and MCP clients like ChatGPT?

NL
NewLedger team
Editorial
NewLedger App Connect OAuth 2.0 approval screen

NewLedger Editorial

If you are integrating with NewLedger, the first architecture decision is simple:

  • Use API credentials when your server is the thing connecting and you can store a client_secret safely.
  • Use OAuth 2.0 when a user needs to approve access in the browser and the client should receive delegated access instead of your stored secret.

The confusion usually comes from the fact that both live under App Connect, both issue scoped bearer tokens, and both can power serious production workflows. The difference is the trust model.

In a finance system, that trust model matters. The authentication pattern you choose determines whether secrets stay on your backend, whether a user must approve the connection explicitly, and whether audit and revocation remain straightforward when something changes.

The short answer

If your integration looks like this...Use this
A backend job, ETL worker, partner sync, internal ops tool, or server-side automation you controlAPI credentials
A browser-based app, partner product, or AI client that needs the user to sign in and approve scopeOAuth 2.0
A ChatGPT or MCP-style connection using your company MCP URLOAuth 2.0
A daemon or cron job with no interactive user at connect timeAPI credentials

What API credentials are for

API credentials are the server-to-server path.

You create an app under Settings → App Connect → API Credentials, delegate the permissions it needs, copy the client_id and client_secret, and exchange them for short-lived bearer tokens from your backend.

This is usually the right choice when:

  • You control the integration runtime
  • You have a secrets manager or vault
  • You do not need a browser redirect or consent screen
  • The integration should keep running without a person re-approving each sync

Typical examples:

  • Nightly revenue sync into a warehouse
  • Internal invoice-drafting automation
  • ERP, CRM, payroll, or payments reconciliation jobs
  • Partner backends that call NewLedger on behalf of a tenant under a pre-arranged setup

What OAuth 2.0 is for

OAuth 2.0 is the delegated-access path.

Instead of handing a client your stored secret, you send the user through NewLedger's sign-in and consent flow. The user chooses the company, reviews the requested permissions, confirms with 2FA, and then the client receives access within that approved scope.

This is usually the right choice when:

  • The client is user-facing
  • The connection starts from another product or browser flow
  • You need a redirect URI
  • The app should only work after explicit user consent
  • The client is public and should use PKCE

Typical examples:

  • ChatGPT or another MCP-capable AI client
  • A custom partner portal that lets the user connect their NewLedger workspace
  • A public integration that cannot safely hold a shared long-lived secret on-device

OAuth 2.0 is the right path when the user needs to see the app, review scope, and approve access explicitly.

The decision rule we recommend

Ask one question:

"Does this connection need a person to approve access in the browser?"

If no, start with API credentials.

If yes, use OAuth 2.0.

That rule is more reliable than asking whether the integration is "advanced," "AI-powered," or "third-party." Plenty of sophisticated integrations should still use API credentials. Plenty of lightweight ones need OAuth because the user must approve them directly.

Why security teams care about this split

This is not security theater. The distinction changes real control boundaries:

  • API credentials keep shared secrets on infrastructure you operate and keep the browser out of the token exchange path.
  • OAuth 2.0 makes the approval visible to the user, which is critical when the client is third-party, user-facing, or initiated outside your own backend.
  • Both let you apply least privilege, but they do it at different moments: delegated at app creation for API credentials, reviewed at consent time for OAuth.
  • Both are easier to govern when finance keeps a named owner, a documented purpose, and a clear revocation path for every connection.

How this maps to MCP and ChatGPT

MCP is not a separate auth model. It is one of the clients that uses NewLedger's OAuth 2.0 consent flow.

So if the use case is:

  • "Connect ChatGPT to our books"
  • "Paste the company MCP URL into an AI client"
  • "Approve scopes and let the assistant read reports or draft entries"

then the right answer is OAuth 2.0, not API credentials.

For the full walkthrough, see MCP for accounting.

Security differences that matter

TopicAPI credentialsOAuth 2.0
Secret storageYour backend stores the client_secretPublic clients use PKCE and do not rely on a shared long-lived secret
Browser consentNoYes
Redirect URINoYes
Best fitSystem-to-system automationDelegated user-approved access
Revocation pathRevoke or rotate the app credentialDelete the OAuth connection or revoke the client

Both approaches still use:

  • Scoped permissions
  • App Connect visibility
  • Audit history
  • Short-lived access tokens

The OAuth 2.0 connection surface should stay reviewable after setup, not disappear into implementation detail.

A secure rollout checklist

  1. Use a test company or non-production workspace before issuing live access.
  2. Start with the minimum scopes needed for the first working version.
  3. Keep client_secret values in a vault or secrets manager, never in frontend code, local config committed to git, or chat threads.
  4. Give each integration a clear owner, business purpose, and review cadence.
  5. Make revocation easy to execute by documenting whether the team should rotate an API credential or delete an OAuth connection.

What to publish on your own integration pages

If you are writing docs, onboarding notes, or partner setup steps:

  • Say API credentials when the reader is creating a server-side integration.
  • Say OAuth 2.0 when the reader is authorizing a client through the browser.
  • Keep OAuth 2.1 guidance on its own technical page if you need to document stricter implementation profiles or migration rules.
  • Avoid using "OAuth" as a catch-all for every API integration.
  • Avoid telling readers to create API credentials if the real flow is redirect-based consent.

Registration belongs to the delegated-access path. It should not be mixed into API credential onboarding.

That language distinction saves a lot of setup friction.

Where to go next

In practice, most teams should treat API credentials as the default integration path and OAuth 2.0 as the delegated-access path. Once you frame it that way, the App Connect model becomes much easier to explain and much harder to misuse.

# api # oauth # oauth2 # app-connect # integrations # mcp # automation # newledger
Start the conversation

Choose your next step

Start your 14-day trial for day-to-day accounting, or review pricing, migration, controls, and rollout before changing systems. Either way, the next step should feel clear.

Integration-Ready Delivery
Audit-Ready Controls
Sandbox And Guided Rollout
We use cookies to improve your experience. Manage preferences or accept all.
We use cookies to improve your experience. Manage preferences or accept all.