In all Unreal SDKs, there's a bug in the Events API.
"PlayFab::EventsModels::FEventContents::writeJSON" uses the wrong method (WriteValue) to write out the PayloadJSON if it's set. It should be using the "WriteRawJSONValue" method on the jsonWriter. If using JSON events (that is, pre-creating a JSON object as a string to put in the PayloadJSON field), the request to write an event always fails with a 400, stating that the "PayloadJSON is not valid JSON"
An example in the 4.27 plugin: