Skip to content

Schemas

Response Envelope

TransactCore uses two response formats depending on the endpoint:

Success (with data wrapper)

Used by GET /payment-intents/{id}:

json
{
  "data": {
    "payment_intent_id": "pi_3abc123",
    "amount": 3420,
    "currency": "usd",
    "status": "succeeded"
  }
}

Success (flat)

Used by POST /payment-intents and GET /config/stripe:

json
{
  "client_secret": "pi_3abc123_secret_xyz789",
  "payment_intent_id": "pi_3abc123",
  "publishable_key": "pk_live_xxxxx",
  "amount": 3420,
  "currency": "usd"
}

Error

json
{
  "error": "Error message describing what went wrong",
  "message": "Additional details (optional)"
}

Validation Error

json
{
  "message": "The amount field must be at least 50.",
  "errors": {
    "amount": ["The amount field must be at least 50."]
  }
}

Common Error Codes

HTTP StatusErrorDescription
400Payment account cannot accept paymentsConnected account has incomplete onboarding or is restricted
401UnauthenticatedMissing or invalid Bearer token
403ForbiddenToken does not have the required scope
404Payment intent not foundNo payment intent exists with the given ID
404No payment account configuredOrganization has no connected Stripe account
422Validation errorRequest body failed validation (see errors object)
422Unable to cancel payment intentPayment intent is in a non-cancelable state
429Too many requestsRate limit exceeded
500Failed to create payment intentStripe API error or internal server error

Currency

All amounts are in the smallest currency unit (cents for USD).

AmountMeaning
50$0.50 (minimum)
3420$34.20
100000$1,000.00

The currency field accepts ISO 4217 three-letter codes. Default: usd.


Rate Limit Headers

All responses include rate limit information:

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

All ecommerce endpoints: 100 requests per minute per IP address.


Hashkeys

TransactCore uses hashkeys as external identifiers for resources. Hashkeys are prefixed strings that encode internal IDs:

ResourcePrefixExample
Connected Accountcct_cct_00000k1L2m3N4o5
Organizationorg_org_00000k1L2m3N4o5

Payment intents use Stripe's native IDs (e.g., pi_3abc123) rather than hashkeys.


Changelog
DateChange
2026-03-19Initial publication.

ShopHero CommerceCore Platform