text/plain request body the Payout Origination API accepts.
The API does not accept raw plaintext XML or JSON. You must Base64-encode the full source payload and send the encoded payload as the raw request body.
What you encode
Encode the complete payload you want Meridian to process. That means:- finish building the payload first
- validate the payload content before encoding
- encode the full payload as one artifact
- send the encoded result as-is
- wrap the source payload in another envelope before encoding
- split the message into separate fields
- encode only part of the payload
- modify the encoded payload after it is produced
Recommended flow
1
Build the final payload
Produce the exact payload Meridian should process.If you need the expected message shape for your format, review Supported formats.
2
Encode the payload as Base64
Base64-encode the full payload and produce a single ASCII string.Send the encoded payload directly as the HTTP request body.
3
Submit with the correct headers
Send the body with:
Content-Type: text/plain- Meridian HMAC authentication headers
- a separate
Idempotency-Keyheader
Encoding guidance
Apply Base64 to the exact bytes of the source payload you want Meridian to process. That means:- use a stable character encoding such as UTF-8 for the source payload
- Base64-encode the entire payload in one step
- hash and sign the exact Base64 string that you send
- avoid inserting extra whitespace, line wrapping, or formatting changes after encoding
Example payloads
Example XML to encode:Handling guidance
- Keep the source payload in a stable encoding such as UTF-8 before Base64-encoding it.
- Treat the Base64 output as an opaque string.
- Send the encoded payload as the raw request body, not as a JSON property.
- Log identifiers such as
messageIdand your own business reference instead of logging raw payment contents. - Reuse the same Base64 payload only when retrying the same logical submission with the same idempotency intent.
Common mistakes
Relationship to retrieval
After Meridian accepts the request, you can query the latest processing state withGET /v1/transactions, GET /v1/transactions?messageId=..., or GET /v1/transactions/{id}.
These GET endpoints return transaction records and status information. They do not return the stored Base64 payload, and they do not replace your responsibility to manage the original source payload safely in your own systems where required.