Skip to main content
POST
Validate a credit before execution

Authorizations

Authorization
string
header
required

Assume OAuth 2.0 client credentials issued by the bank, presented as a bearer token. Meridian can adapt to the bank's preferred authentication scheme during onboarding.

Body

application/json

A credit (payout) instruction from Meridian to the bank.

transactionId
string
required

Meridian's unique identifier for this credit and the idempotency key. Stable across retries and across the validate/commit/status lifecycle of one transaction.

Maximum string length: 64
Example:

"mrdn-9f2c1e4a-71bd-4c5e-a2f3-8d6b0c9e1a27"

amount
object
required
recipient
object
required

The customer being credited at the home bank.

sender
object

Originator of the funds (KYC data). Included on commit for compliance screening. Field-level availability is confirmed during onboarding, and some corridors add further compliance fields (for example the sender's relationship to the recipient, or source of income) that Meridian agrees with the bank at that time.

purpose
string

Human-readable purpose / remittance information for the transfer.

Maximum string length: 140
Example:

"Wallet withdrawal payout"

metadata
object

Additional key/value context supplied by Meridian (e.g. a customer-facing reference to print on statements). Banks should persist and echo these where their core allows, but must not require fields beyond those agreed at onboarding.

Response

Validation outcome (both eligible and ineligible accounts return 200).

Outcome of a validate, commit, or status call. One shape for all three.

transactionId
string
required

Echo of Meridian's transaction identifier.

status
enum<string>
required

Transaction state machine:

  • RECEIVED — registered; nothing checked and nothing moved
  • VALIDATED — the recipient account passed eligibility checks
  • PROCESSING — money movement is underway
  • COMPLETED — terminal; the funds reached the recipient
  • FAILED — terminal; the credit will not be delivered
  • UNKNOWN — outcome not yet determinable, for example a timeout in your core system or an unreachable downstream rail; not terminal

Status moves only forward through that order, though skipping steps is fine, and terminal statuses must never change once reported. UNKNOWN is exempt from the ordering and may be followed by any status. Prefer it over guessing FAILED, since a terminal status can never be walked back.

Available options:
RECEIVED,
VALIDATED,
PROCESSING,
COMPLETED,
FAILED,
UNKNOWN
bankReference
string

The bank's own reference for the transfer, if one exists. Meridian stores this for reconciliation and support. Include it on every response after commit.

Maximum string length: 64
errorCode
string

Machine-readable failure code. Required whenever status is FAILED. Use a stable, documented set; Meridian maps these to customer-facing outcomes. Recommended baseline:

  • ACCOUNT_NOT_FOUND
  • ACCOUNT_INACTIVE
  • NAME_MISMATCH
  • LIMIT_EXCEEDED
  • INVALID_AMOUNT
  • COMPLIANCE_REJECTED
  • INSUFFICIENT_FUNDS (sponsored account)
  • DUPLICATE_TRANSACTION
  • BANK_SYSTEM_ERROR
errorMessage
string

Human-readable detail for the failure. Not shown to customers verbatim.

Maximum string length: 500
completedAt
string<date-time>

RFC 3339 timestamp when the credit reached a final status.