Skip to content

Drive one simulated authorization against a named card

POST/v1/simulated-spends

Requires an API client bearer token.

Drives one simulated authorization against a card the operator issued and funded, over the same wire path a real network would use. The caller passes a card id, never a PAN — the PAN is resolved server-side against a single-use grant and never returned. NOT idempotency-keyed: each accepted call is a deliberately distinct wire transaction (press twice = two payments); the console disables the button while a request is in flight instead. Returns 202 with an acceptance handle plus the wire identity (stan/rrn, null only when the simulator leg failed before a message was built) — the decision itself is queryable via GET /v1/simulated-spends/{id} and arrives asynchronously as an authorization.decided event. A simulator-leg failure is recorded and reported through that same GET endpoint rather than surfacing as an error response here.

Request body

card_idstringrequired
amountobjectrequired
+ show properties
amountstringrequired
currency"EUR" | "GBP" | "USD"required
mccstringrequired
merchant_namestringrequired
channel"pos" | "ecommerce" | "atm" | "moto"required
entry_mode"contactless" | "chip" | "magstripe" | "manual"
scenario"partial_approval" | "force_stip_timeout"
approved_amountobject
+ show properties
amountstringrequired

Non-negative canonical decimal, at most 16 integer digits. Fractional digits must not exceed the minor-unit precision of `currency` (2 for EUR/GBP/USD), because the amount has to be representable in ISO 8583 DE4.

currency"EUR" | "GBP" | "USD"required
mitboolean

Example

curl -X POST https://api.rigid.fi/v1/simulated-spends \
  -H "Authorization: Bearer $RIGID_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "card_id": "string",
  "amount": {
    "amount": "string",
    "currency": "EUR"
  },
  "mcc": "string",
  "merchant_name": "string",
  "channel": "pos"
}'

Responses

202

The simulated spend was accepted for transmission.

simulation_idstringrequired
accepted_atstring (date-time)required
stanstring | nullrequired
rrnstring | nullrequired
network_txn_idstring
400

Validation error

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
401

Authentication required

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
403

Forbidden

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
404

Card not found

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
409

Card is not active

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
500

Internal server error

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring