Skip to content

Authentication ​

All TransactCore ecommerce endpoints require OAuth 2.0 Bearer token authentication. Tokens are obtained from the Identity API using the Client Credentials flow.

Obtaining a Token ​

bash
curl -X POST https://identity.retailsuccessplatform.com/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id=${CLIENT_ID}" \
  -d "client_secret=${CLIENT_SECRET}" \
  -d "scope=transactcore:payment-intents.read transactcore:payment-intents.create"
json
{
  "token_type": "Bearer",
  "expires_in": 3600,
  "access_token": "eyJhbGciOiJSUzI1NiIs..."
}

Using the Token ​

Include the token in the Authorization header of every request:

bash
curl https://api.transactcore.retailsuccessplatform.com/api/v1/ecommerce/config/stripe \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..."

Available Scopes ​

ScopeGrants Access To
transactcore:payment-intents.readGET /ecommerce/config/stripe — Stripe config
GET /ecommerce/payment-intents/{intent} — Payment intent status
transactcore:payment-intents.createPOST /ecommerce/payment-intents — Create payment intent
POST /ecommerce/payment-intents/{intent}/cancel — Cancel payment intent
transactcore:connected-accounts.readGET /ecommerce/connected-account — Look up connected account by organization

Request both scopes for full checkout functionality.

Rate Limits ​

All ecommerce endpoints share a rate limit of 100 requests per minute per IP address.

Rate limit headers are included in every response:

HeaderDescription
X-RateLimit-LimitMaximum requests per window
X-RateLimit-RemainingRemaining requests in current window
Retry-AfterSeconds until the rate limit resets (only on 429 responses)

429 Too Many Requests ​

json
{
  "error": "Too many requests",
  "retry_after": 42
}

Token Management Best Practices ​

  1. Cache tokens — Tokens are valid for the expires_in duration (typically 1 hour). Cache and reuse them.
  2. Refresh before expiry — Request a new token before the current one expires to avoid interrupting checkout flows.
  3. Server-side only — Never expose your access token to the browser. All TransactCore API calls should be made from your backend.
  4. Minimal scopes — Request only the scopes you need. For read-only operations (e.g., checking payment status), use only transactcore:payment-intents.read.

Organization Context ​

TransactCore resolves the payment destination based on either:

  • organization_id — Your organization's hashkey. TransactCore looks up the connected Stripe account for this organization.
  • connected_account_id — A specific connected account hashkey, if you already know which account to use.

You must provide one of these when creating a payment intent. For the config endpoint, pass connected_account_id as a query parameter to retrieve the Stripe account ID for Connect mode.

Error Responses ​

StatusDescription
401 UnauthorizedMissing or invalid access token
403 ForbiddenToken does not have the required scope
429 Too Many RequestsRate limit exceeded
json
{
  "error": "Unauthenticated."
}

Changelog
DateChange
2026-03-19Added connected account lookup endpoint and fixed scope format.
2026-03-19Initial publication.

ShopHero CommerceCore Platform