Transfer between accounts
Transfers funds from the given account (remitter) to another account within the same merchant (beneficiary), identified by beneficiary_account_number. Both accounts must be active. The transfer is processed synchronously and returns success on HTTP 200. Requires request signature headers (verify.signature-internal).
Idempotency: send an optional merchant_ref_no unique per merchant. If a value already used by the same merchant is submitted again, the original transfer is returned (HTTP 200) and no new movement is created — regardless of which of the merchant’s accounts is the remitter. If merchant_ref_no is omitted or empty, the platform auto-generates a unique reference (format AM-<timestamp>-<random>), so the transfer always proceeds and the generated reference is returned in the response.
Authorizations
JWT issued by POST /api/v1.1/access-token/b2b. Send Authorization: Bearer <token>.
Merchant API key (Credential.api_key). Required on every request.
Path Parameters
ULID of the source (remitter) account.
Body
Transfer amount in IDR. Must be at least 1 and not exceed the remitter account available balance.
500000
12-digit account number of the destination account. Must belong to the same merchant and be active.
"123456789012"
Optional merchant-supplied idempotency reference. Unique per merchant across all account movements: reusing a value already used by the same merchant returns the original transfer (HTTP 200) without creating a duplicate. If omitted or empty, the platform auto-generates a unique reference (format AM-<timestamp>-<random>) and returns it in the response — a generated reference is unique per request and therefore provides no replay protection. A different merchant may reuse the same value.
191"MOVE-20260702-001"
Response
Transfer completed successfully. The data object contains the created transfer record.
