Skip to navigation

Payment proof

Payment proof is a receipt image that the fiat payer attaches to a trade. Only the customer on a BUY uploads proof. On a SELL, the merchant is the fiat payer and the customer can only read it.

Upload a receipt

Call POST /v1/trades/{tradeId}/proof while the trade is CREATED, PAID or DISPUTED. Send the image as raw base64 in dataBase64, without a data: prefix, together with a contentType of image/png or image/jpeg. Uploading proof does not mark the trade as paid.

An identical upload returns the existing matching receipt. After an uncertain result, read the current proof before you change it.

Read the receipt

GET /v1/trades/{tradeId}/proof returns the original image bytes in dataBase64. The base64 field is only a blurred preview. Authenticated reads preserve the native files that merchants upload.

Replace the current receipt

Call PATCH /v1/trades/{tradeId}/proof with expectedProofId set to the current proof’s ID. If the proof has changed since you read it, the call returns 409 CONFLICT and leaves the active receipt unchanged. Do not retry different contents against a stale revision.

Remove the active receipt

Call DELETE /v1/trades/{tradeId}/proof with expectedProofId in the JSON body of the DELETE request. Sinbad keeps the evidence that is already in the chat history.

Errors

SituationResponse
A proof already exists, the revision changed, or the trade is closed409 CONFLICT. Read the trade and the proof again.
The customer is on a SELL and tries to upload or change proof403 FORBIDDEN. Only the fiat payer uploads.
No current proof or stored file exists404 NOT_FOUND on a read.

New uploads must be PNG or JPEG files of up to 3 MiB. Those limits do not restrict how Sinbad reads merchant files that already exist. See Limits and limitations.