PayFacto API - v2.0 - POST /refunds/{refundId}/voids

PayFacto API - v2.0 - POST /refunds/{refundId}/voids

PayFacto API - v2.0 - POST /refunds/{refundId}/voids

Voids an unbatched refund before it is included in settlement. The refund must not yet be part of a closed batch.

1

Prerequisites

πŸ”‘

Authentication β€” HTTP Basic Auth

All v2.0 endpoints use HTTP Basic Authentication. Set Authorization: Basic base64(username:password). Contact PayFacto for credentials.

πŸ“‹

Content-Type

All request bodies require Content-Type: application/json.

πŸ”„

Idempotency

Include Idempotency-Key header (max 64 chars) on POST requests. 200 = duplicate; 201 = newly created.

πŸ’΅

Amounts

All monetary amounts are positive integers in cents. $12.99 = 1299.

2

Request

POST   https://uat.ca.api.payfacto.cloud/payments/v1/refunds/{refundId}/voids
⚠️

If the batch is already closed, the refund cannot be voided.

Path parameter

ParameterTypeDescription
refundIdstring (UUID) Β· requiredID of the refund to void.

Request body fields

FieldConstraintDescription
reasonstring Β· requiredREQUESTED_BY_CUSTOMER, REQUESTED_BY_MERCHANT, DUPLICATE, FRAUDULENT, or ERROR_CORRECTION.
terminalobject Β· optionalRequired for terminal flows. Must include terminalId.
3

Request β€” Code Example

JSON β€” Void refund
{
"reason": "REQUESTED_BY_CUSTOMER"
}
JSON β€” Terminal void refund
{
"reason": "REQUESTED_BY_CUSTOMER",
"terminal": { "terminalId": "3a2049fb-6c9f-433d-9cef-701b6843f0cd" }
}
4

Response

Response fields (refund object)

FieldTypeDescription
idstring (UUID)Unique refund identifier.
amountintegerRefund amount in cents.
chargeIdstring (UUID)The charge that was refunded.
failureReasonstringIf failed: LOST_OR_STOLEN_CARD, EXPIRED_OR_CANCELLED_CARD, UNKNOWN.
metadataobjectKey-value pairs.
originalTransactionTimestring (ISO 8601)UTC timestamp of original charge.
paymentMethodobjectPayment method used for the refund.
reasonstringRefund reason from request.
resultobjectAuth result including authCode.
statusstringSUCCEEDED, FAILED, or VOIDED.
transactionTimestring (ISO 8601)UTC timestamp when this refund was created.
voidDetailobjectVoid details if voided.
errorobjectError object on failure.
5

Response β€” Code Examples

JSON β€” 200 Voided
{
"id": "3a2049fb-6c9f-433d-9cef-701b6843f0cd",
"amount": 1299,
"status": "VOIDED",
"originalTransactionTime": "2024-05-15T17:00:01Z",
"transactionTime": "2024-05-15T18:00:01Z"
}
JSON β€” 422 Cannot Void
{
"error": { "code": "INVALID_STATE", "type": "INVALID_REQUEST_ERROR", "message": "The refund is in a state that can not be voided." }
}
6

Error / HTTP Status Codes

HTTP StatusMeaningRecommended Action
200OK β€” Previously created (same idempotency key)Check status field in response body
201Created β€” New resource createdStore the id for future operations
400Bad Request β€” Invalid payloadCheck error.details and error.invalidFields
402Payment Required β€” Issuer declinedCheck result.declineCode β€” do not retry automatically
404Not FoundVerify the ID in the request path
422Unprocessable β€” Invalid stateCheck error.message
500Internal Server ErrorRetry with backoff; contact PayFacto Support if persistent