TrieOH
Payssage

Problems

Every RFC 9457 problem Payssage can answer, by status.

Every Payssage error is an application/problem+json body: type, status, title, detail and instance are always present, plus errors: [{ field, message }] when request fields are at fault. A problem's type is {API_URL}/problems/{slug}, which the API itself serves as documentation. Branch on the slug at the end of type, not on title or detail. The members listed below a problem are its own, on top of the standard ones.

400

Add Owner To Org

add-owner-to-org — Owners can't be added to organizations they own.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/add-owner-to-org",
  "status": 400,
  "title": "Add Owner To Org",
  "detail": "…",
  "instance": "/…"
}

Add Self To Org

add-self-to-org — Users can't add themselves to organizations.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/add-self-to-org",
  "status": 400,
  "title": "Add Self To Org",
  "detail": "…",
  "instance": "/…"
}

Already Org Member

already-org-member — User is already a member of the organization.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/already-org-member",
  "status": 400,
  "title": "Already Org Member",
  "detail": "…",
  "instance": "/…"
}

Batch Failed

batch-failed — Some items of a batch failed; each is answered as its own problem.

MemberTypeDescription
itemsobject[]
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/batch-failed",
  "status": 400,
  "title": "Batch Failed",
  "detail": "…",
  "instance": "/…",
  "items": []
}

Intent Status

intent-status — The intent's status does not allow the action.

MemberTypeDescription
actionstringThe refused action, such as refunded or cancelled.
intent_statusstringThe intent's current status.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/intent-status",
  "status": 400,
  "title": "Intent Status",
  "detail": "…",
  "instance": "/…",
  "action": "…",
  "intent_status": "…"
}

Invalid Checkout Provider Data

invalid-checkout-provider-data — Invalid checkout_provider_data.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/invalid-checkout-provider-data",
  "status": 400,
  "title": "Invalid Checkout Provider Data",
  "detail": "…",
  "instance": "/…"
}

Invalid Flow

invalid-flow — Invalid flow.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/invalid-flow",
  "status": 400,
  "title": "Invalid Flow",
  "detail": "…",
  "instance": "/…"
}

Invalid Metadata

invalid-metadata — Invalid metadata.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/invalid-metadata",
  "status": 400,
  "title": "Invalid Metadata",
  "detail": "…",
  "instance": "/…"
}

Invalid Provider

invalid-provider — Invalid provider.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/invalid-provider",
  "status": 400,
  "title": "Invalid Provider",
  "detail": "…",
  "instance": "/…"
}

Invalid Provider Data

invalid-provider-data — Invalid provider_data.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/invalid-provider-data",
  "status": 400,
  "title": "Invalid Provider Data",
  "detail": "…",
  "instance": "/…"
}

Invalid Request

invalid-request — Invalid request.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/invalid-request",
  "status": 400,
  "title": "Invalid Request",
  "detail": "…",
  "instance": "/…"
}

Not Org Member

not-org-member — User is not a member of the organization.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/not-org-member",
  "status": 400,
  "title": "Not Org Member",
  "detail": "…",
  "instance": "/…"
}

Provider Mismatch

provider-mismatch — Provider mismatch.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/provider-mismatch",
  "status": 400,
  "title": "Provider Mismatch",
  "detail": "…",
  "instance": "/…"
}

Provider Not Implemented

provider-not-implemented — Provider not implemented.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/provider-not-implemented",
  "status": 400,
  "title": "Provider Not Implemented",
  "detail": "…",
  "instance": "/…"
}

Provider Rejected

provider-rejected — The payment provider rejected the request.

MemberTypeDescription
providerstringThe provider's name.
reasonstringPayssage's reading of the provider's cause, or empty.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/provider-rejected",
  "status": 400,
  "title": "Provider Rejected",
  "detail": "…",
  "instance": "/…",
  "provider": "…",
  "reason": "…"
}

Remove Org Owner

remove-org-owner — Cannot remove the owner of the organization.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/remove-org-owner",
  "status": 400,
  "title": "Remove Org Owner",
  "detail": "…",
  "instance": "/…"
}

Remove Self From Org

remove-self-from-org — Cannot remove yourself from the organization.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/remove-self-from-org",
  "status": 400,
  "title": "Remove Self From Org",
  "detail": "…",
  "instance": "/…"
}

Seller Flow Needs Wallet

seller-flow-needs-wallet — Wallet_id is required for seller flow.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/seller-flow-needs-wallet",
  "status": 400,
  "title": "Seller Flow Needs Wallet",
  "detail": "…",
  "instance": "/…"
}

Seller Not In Wallet

seller-not-in-wallet — Seller does not belong to wallet.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/seller-not-in-wallet",
  "status": 400,
  "title": "Seller Not In Wallet",
  "detail": "…",
  "instance": "/…"
}

Unsupported Provider

unsupported-provider — Payssage has no payment provider by this name.

MemberTypeDescription
providerstringThe provider's name.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/unsupported-provider",
  "status": 400,
  "title": "Unsupported Provider",
  "detail": "…",
  "instance": "/…",
  "provider": "…"
}

Validation Failed

validation — The request is malformed or breaks a rule; `errors` names the offending fields.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/validation",
  "status": 400,
  "title": "Validation Failed",
  "detail": "…",
  "instance": "/…"
}

Webhook Missing Data ID

webhook-missing-data-id — Mercadopago webhook: missing data.id.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/webhook-missing-data-id",
  "status": 400,
  "title": "Webhook Missing Data ID",
  "detail": "…",
  "instance": "/…"
}

Webhook Not Implemented

webhook-not-implemented — Webhook handling not implemented for this provider.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/webhook-not-implemented",
  "status": 400,
  "title": "Webhook Not Implemented",
  "detail": "…",
  "instance": "/…"
}

Webhook Payload Invalid

webhook-payload-invalid — Mercadopago webhook: invalid payload.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/webhook-payload-invalid",
  "status": 400,
  "title": "Webhook Payload Invalid",
  "detail": "…",
  "instance": "/…"
}

401

API Keys Not Accepted

api-keys-not-accepted — This API takes bearer tokens only, not API keys.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/api-keys-not-accepted",
  "status": 401,
  "title": "API Keys Not Accepted",
  "detail": "…",
  "instance": "/…"
}

Email Not Verified

email-not-verified — The caller must verify their email address first.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/email-not-verified",
  "status": 401,
  "title": "Email Not Verified",
  "detail": "…",
  "instance": "/…"
}

Invalid API Key

invalid-api-key — The API key is unknown, malformed or revoked.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/invalid-api-key",
  "status": 401,
  "title": "Invalid API Key",
  "detail": "…",
  "instance": "/…"
}

Invalid Token

invalid-token — The bearer token does not parse, its signature or issuer is wrong, or it is not valid yet.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/invalid-token",
  "status": 401,
  "title": "Invalid Token",
  "detail": "…",
  "instance": "/…"
}

Provider Unauthorized

provider-unauthorized — The payment provider refused Payssage's credentials.

MemberTypeDescription
providerstringThe provider's name.
reasonstringPayssage's reading of the provider's cause, or empty.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/provider-unauthorized",
  "status": 401,
  "title": "Provider Unauthorized",
  "detail": "…",
  "instance": "/…",
  "provider": "…",
  "reason": "…"
}

Token Expired

token-expired — The bearer token has expired; refresh it and retry.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/token-expired",
  "status": 401,
  "title": "Token Expired",
  "detail": "…",
  "instance": "/…"
}

Unauthenticated

unauthenticated — The request carries no credentials: no bearer token and no API key where the operation needs one.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/unauthenticated",
  "status": 401,
  "title": "Unauthenticated",
  "detail": "…",
  "instance": "/…"
}

Webhook Signature Mismatch

webhook-signature-mismatch — Mercadopago webhook: signature mismatch.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/webhook-signature-mismatch",
  "status": 401,
  "title": "Webhook Signature Mismatch",
  "detail": "…",
  "instance": "/…"
}

Webhook Signature Missing

webhook-signature-missing — Mercadopago webhook: missing ts or v1 in x-signature header.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/webhook-signature-missing",
  "status": 401,
  "title": "Webhook Signature Missing",
  "detail": "…",
  "instance": "/…"
}

403

Insufficient Role

insufficient-role — The caller's role does not allow the operation.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/insufficient-role",
  "status": 403,
  "title": "Insufficient Role",
  "detail": "…",
  "instance": "/…"
}

Not Resource Owner

not-resource-owner — Insufficient permissions.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/not-resource-owner",
  "status": 403,
  "title": "Not Resource Owner",
  "detail": "…",
  "instance": "/…"
}

Seller Revoked

seller-revoked-checkout — The seller revoked Payssage's access, so it cannot be charged.

MemberTypeDescription
seller_idstringThe seller.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/seller-revoked-checkout",
  "status": 403,
  "title": "Seller Revoked",
  "detail": "…",
  "instance": "/…",
  "seller_id": "…"
}

404

Not Found

not-found — The requested resource does not exist.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/not-found",
  "status": 404,
  "title": "Not Found",
  "detail": "…",
  "instance": "/…"
}

Provider Not Found

provider-not-found — The payment provider does not know the resource.

MemberTypeDescription
providerstringThe provider's name.
reasonstringPayssage's reading of the provider's cause, or empty.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/provider-not-found",
  "status": 404,
  "title": "Provider Not Found",
  "detail": "…",
  "instance": "/…",
  "provider": "…",
  "reason": "…"
}

Unhandled Webhook Event

unhandled-webhook-event — Payssage does not handle this webhook event type.

MemberTypeDescription
event_typestringThe event type.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/unhandled-webhook-event",
  "status": 404,
  "title": "Unhandled Webhook Event",
  "detail": "…",
  "instance": "/…",
  "event_type": "…"
}

Unknown Webhook Provider

unknown-webhook-provider — Unknown webhook provider.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/unknown-webhook-provider",
  "status": 404,
  "title": "Unknown Webhook Provider",
  "detail": "…",
  "instance": "/…"
}

Webhook Intent Not Found

webhook-intent-not-found — No intent was created for the webhook's payment.

MemberTypeDescription
payment_idstringThe provider's payment.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/webhook-intent-not-found",
  "status": 404,
  "title": "Webhook Intent Not Found",
  "detail": "…",
  "instance": "/…",
  "payment_id": "…"
}

409

Credentials Connected

credentials-connected — Credentials for this provider are already connected to this wallet.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/credentials-connected",
  "status": 409,
  "title": "Credentials Connected",
  "detail": "…",
  "instance": "/…"
}

Delivery Exists

delivery-exists — A delivery for this event and endpoint already exists.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/delivery-exists",
  "status": 409,
  "title": "Delivery Exists",
  "detail": "…",
  "instance": "/…"
}

No Transaction To Cancel

no-transaction-to-cancel — Intent has no mercadopago transaction to cancel.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/no-transaction-to-cancel",
  "status": 409,
  "title": "No Transaction To Cancel",
  "detail": "…",
  "instance": "/…"
}

No Transaction To Refund

no-transaction-to-refund — Intent has no mercadopago transaction to refund.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/no-transaction-to-refund",
  "status": 409,
  "title": "No Transaction To Refund",
  "detail": "…",
  "instance": "/…"
}

Org Collector Connected

org-collector-connected — This collector is already connected to this organization.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/org-collector-connected",
  "status": 409,
  "title": "Org Collector Connected",
  "detail": "…",
  "instance": "/…"
}

Org Slug Taken

org-slug-taken — An organization with this slug already exists.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/org-slug-taken",
  "status": 409,
  "title": "Org Slug Taken",
  "detail": "…",
  "instance": "/…"
}

Org Wallet Name Taken

org-wallet-name-taken — A wallet with this name already exists in this organization.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/org-wallet-name-taken",
  "status": 409,
  "title": "Org Wallet Name Taken",
  "detail": "…",
  "instance": "/…"
}

Personal Collector Connected

personal-collector-connected — This collector is already connected to your account.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/personal-collector-connected",
  "status": 409,
  "title": "Personal Collector Connected",
  "detail": "…",
  "instance": "/…"
}

Personal Wallet Taken

personal-wallet-taken — A wallet with this name already exists.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/personal-wallet-taken",
  "status": 409,
  "title": "Personal Wallet Taken",
  "detail": "…",
  "instance": "/…"
}

Provider Conflict

provider-conflict — The payment provider answered with a conflict.

MemberTypeDescription
providerstringThe provider's name.
reasonstringPayssage's reading of the provider's cause, or empty.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/provider-conflict",
  "status": 409,
  "title": "Provider Conflict",
  "detail": "…",
  "instance": "/…",
  "provider": "…",
  "reason": "…"
}

Seller Connected

seller-connected — This seller is already connected to this wallet.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/seller-connected",
  "status": 409,
  "title": "Seller Connected",
  "detail": "…",
  "instance": "/…"
}

Seller Provider Mismatch

seller-provider-mismatch — The seller is connected through another payment provider.

MemberTypeDescription
seller_idstringThe seller.
providerstringThe provider's name.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/seller-provider-mismatch",
  "status": 409,
  "title": "Seller Provider Mismatch",
  "detail": "…",
  "instance": "/…",
  "seller_id": "…",
  "provider": "…"
}

Seller Revoked

seller-revoked — The seller revoked Payssage's access, so the payment cannot be refunded or cancelled here; it needs manual handling at the provider.

MemberTypeDescription
seller_idstringThe seller.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/seller-revoked",
  "status": 409,
  "title": "Seller Revoked",
  "detail": "…",
  "instance": "/…",
  "seller_id": "…"
}

Webhook Event Exists

webhook-event-exists — A webhook event for this external id and type already exists for this provider.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/webhook-event-exists",
  "status": 409,
  "title": "Webhook Event Exists",
  "detail": "…",
  "instance": "/…"
}

Webhook Seller Token Missing

webhook-seller-token-missing — The intent's seller has no provider access token, so the webhook cannot be resolved.

MemberTypeDescription
seller_idstringThe seller.
intent_idstringThe intent.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/webhook-seller-token-missing",
  "status": 409,
  "title": "Webhook Seller Token Missing",
  "detail": "…",
  "instance": "/…",
  "seller_id": "…",
  "intent_id": "…"
}

429

Provider Rate Limited

provider-rate-limited — The payment provider is rate limiting Payssage; retry later.

MemberTypeDescription
providerstringThe provider's name.
reasonstringPayssage's reading of the provider's cause, or empty.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/provider-rate-limited",
  "status": 429,
  "title": "Provider Rate Limited",
  "detail": "…",
  "instance": "/…",
  "provider": "…",
  "reason": "…"
}

Too Many Requests

rate-limited — The caller exceeded the rate limit; retry later.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/rate-limited",
  "status": 429,
  "title": "Too Many Requests",
  "detail": "…",
  "instance": "/…"
}

500

Internal Server Error

internal-server-error — The server failed unexpectedly. The cause is logged, never returned.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/internal-server-error",
  "status": 500,
  "title": "Internal Server Error",
  "detail": "Internal Server Error",
  "instance": "/…"
}

502

Provider Request Failed

provider-request-failed — Payment provider request failed.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/provider-request-failed",
  "status": 502,
  "title": "Provider Request Failed",
  "detail": "…",
  "instance": "/…"
}

Provider Unavailable

provider-unavailable — The payment provider failed on its side.

MemberTypeDescription
providerstringThe provider's name.
reasonstringPayssage's reading of the provider's cause, or empty.
application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/provider-unavailable",
  "status": 502,
  "title": "Provider Unavailable",
  "detail": "…",
  "instance": "/…",
  "provider": "…",
  "reason": "…"
}

503

Identity Unavailable

identity-unavailable — IdentityX could not be reached to check the API key; retry later.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/identity-unavailable",
  "status": 503,
  "title": "Identity Unavailable",
  "detail": "…",
  "instance": "/…"
}

Test Mode Only

test-mode-only — Test mode only.

application/problem+json
{
  "type": "https://api.payssage.trieoh.com/problems/test-mode-only",
  "status": 503,
  "title": "Test Mode Only",
  "detail": "…",
  "instance": "/…"
}