Skip to main content

Change a beneficiary

Changing where a seller's money goes is the workflow most worth attacking, so it is the one the platform makes slowest. The request waits out a window, both the old and the new verified channel are told, and a second person approves with a fresh second factor.

Click any step to read what happens there and what can refuse it.

The API calls​

# 1. the seller
curl -X POST "$API/v1/sellers" -H "x-api-key: $KEY" -H "x-pehmen-organization: $ORG" \
-H "x-pehmen-environment: test" -H "idempotency-key: $(uuidgen)" -H "content-type: application/json" \
-d '{"merchant_seller_ref":"atlas-events"}'

# 2. the new destination (202: a worker registers it)
curl -X POST "$API/v1/beneficiaries" ... \
-d '{"seller_id":"slr_…","details":{"account_number":"0012345678","bank_code":"DBSSSGSGXXX","country_code":"SG","currency":"SGD","account_name":"Atlas Event Co Pte Ltd"}}'

# 3. the request
curl -X POST "$API/v1/beneficiary-changes" ... \
-d '{"seller_id":"slr_…","new_beneficiary_id":"bnf_…"}'

Adding and verifying a channel needs a dashboard session with a fresh second factor; it cannot be done with an API key.

What the approver should read before approving​

On the change page: the From and To destinations (masked account, token, name match and its method), the cooling-off state (must read elapsed), the out-of-band notification rows (both SENT), and the Gate decision with its reason codes. A change with no notification recorded is itself worth asking about before approving.

What refuses​

RefusalWhy
validation_failed: seller has no verified notification channelRegister and verify a channel first.
ato_session_blocked (403)The requester or approver changed credentials in the last 24 hours.
cooling_off_active (409)The window has not elapsed, or a notice is still undelivered.
approver_must_differThe requester tried to approve.
step_up_requiredThe approver's second factor is older than five minutes.
beneficiary_fingerprint_conflictThe same account is already registered for this workspace.