Skip to content

Sandbox

Fast-forward the sandbox clock

reminders:write

TEST KEYS ONLY (403 with a live key). Moves your sandbox organisation’s clock forward and immediately runs, in this order, the subscription renewals and the reminder cadence against it — so you can see a subscription renew on day 31 and reminder 1, 2 and 3 fire (fees, §9b intervals and the collection notice) without waiting weeks. Your data is not rewritten: due dates and next-invoice dates stay exactly as issued; only the clock the engines read moves. A renewed invoice is dated on its period, never before it. The clock only ever moves FORWARD, at most 365 days per call. Sandbox subscriptions renew only through this call and POST /v1/subscriptions/{id}/run — never by the background scheduler.

Request body fields 2
FieldTypeRequiredDescription
daysintegerNoField in the request payload.
hoursintegerNoField in the request payload.
Request exampleapplication/json
curl -X POST https://api.rieckflow.com/v1/test/advance-clock \
-H "Authorization: Bearer $RIECK_API_KEY" \
-H "Idempotency-Key: order-2041" \
-H "Content-Type: application/json" \
-d '{
"days": 14,
"hours": 1
}'
200 clock.offset is how far ahead your sandbox now runs in total. subscriptions lists the renewals this call ran (outcome issued/skipped/failed, invoiceId, invoiceNumber, sent); reminders lists what the cadence actually fired. Nothing leaves the sandbox: mail is redirected, SMS and letters are stopped.application/json
Response fields 2
FieldTypeDescription
data.clock.offsetstringPostgreSQL interval showing how far ahead the sandbox clock is.
data.remindersobject[]Reminder actions triggered by this call.
Possible errors 10
HTTPCodeMeaning
400invalid_idempotency_keyIdempotency-Key is missing or malformed.
400invalid_requestThe request body or parameter failed validation.
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
403sandbox_onlyThis operation is only available to sandbox API keys.
409idempotency_conflictThe same key was used with a different request.
409idempotency_in_progressThe same operation is currently being processed. Retry later.
413payload_too_largeThe JSON or uploaded file exceeds this endpoint’s size limit.
429rate_limitedThe organisation’s rate budget is exhausted.
Request body — fuldt JSON Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"minimum": 0,
"maximum": 365
},
"hours": {
"type": "integer",
"minimum": 0,
"maximum": 8760
}
},
"additionalProperties": false
}

Simulate a card payment outcome

payments:write

TEST KEYS ONLY (403 with a live key). Plays the card step of a checkout session for you — no browser, no card — with the outcome you choose, and delivers the gateway callback to Rieck exactly as the real gateway would: signed HMAC-SHA256 over the raw body, verified, looked up and booked through the same code path as production. approved books the payment and emits payment.received; declined and card_expired record a failed attempt and emit payment.failed; requires_3ds leaves the payment waiting for a challenge — that is not a decline, so no event yet. The outcome lives on THIS call, never on a card number or an amount ending in a magic digit. amountOere defaults to the invoice balance and may not exceed it; the fraud guard is NOT switched off (422 fraud_guard_blocked after too many failed attempts on one reference — you will want to see that before your customers do). Only available while Rieck’s own gateway simulator is active: 409 gateway_simulator_unavailable means your sandbox talks to the gateway’s real test environment, where its test cards on the hosted page play the same roles.

Request body fields 3
FieldTypeRequiredDescription
referencestringYesField in the request payload.
outcomestringNoField in the request payload.
amountOereintegerNoAmount in integer øre. 125000 means DKK 1,250.00.
Request exampleapplication/json
curl -X POST https://api.rieckflow.com/v1/test/gateway-callbacks \
-H "Authorization: Bearer $RIECK_API_KEY" \
-H "Idempotency-Key: order-2041" \
-H "Content-Type: application/json" \
-d '{
"reference": "crm-9001",
"outcome": "approved",
"amountOere": 125000
}'
201 paymentId, reference, outcome, amountOere, callback.httpStatus/callback.result (what Rieck’s webhook handler did with the delivery) and expectedEvent — the webhook event your endpoint will receive, or null while 3DS waits.application/json
Possible errors 9
HTTPCodeMeaning
400invalid_idempotency_keyIdempotency-Key is missing or malformed.
400invalid_requestThe request body or parameter failed validation.
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
409idempotency_conflictThe same key was used with a different request.
409idempotency_in_progressThe same operation is currently being processed. Retry later.
413payload_too_largeThe JSON or uploaded file exceeds this endpoint’s size limit.
429rate_limitedThe organisation’s rate budget is exhausted.
Request body — fuldt JSON Schema
{
"type": "object",
"properties": {
"reference": {
"type": "string",
"pattern": "^FAK-[0-9a-f]{32}$"
},
"outcome": {
"default": "approved",
"type": "string",
"enum": [
"approved",
"declined",
"card_expired",
"requires_3ds"
]
},
"amountOere": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"reference"
],
"additionalProperties": false
}