How Versioning Works
The Decisionly API uses URL-based versioning. You specify the API version directly in the URL path of your requests. We will bump the API version for breaking changes. Non-breaking changes, such as adding new fields or endpoints, will not trigger a version bump. All API endpoints are versioned by including the version in the URL path. For example:https://api.decisionly.com/v2/issuer/caseshttps://api.decisionly.com/v1/issuer/cases
Version History
- v2 (Current)
- v1 (Legacy)
v2 Changes
Terminal Statuses
Terminal case states are now represented as distinct status values instead of using a genericclosed status with a closed_reason field:
v1 behavior:
- Terminal cases had
status: "closed"with aclosed_reasonfield indicating the specific outcome - A single
case.closedwebhook was triggered for all terminal states
- Terminal states are now first-class status values:
accepted,rejected,expired,withdrawn,merchant_credited - The
closed_reasonfield has been removed - Each terminal status has its own dedicated webhook event:
case.accepted,case.rejected,case.expired,case.withdrawn,case.merchant_credited - The
case.closedwebhook is deprecated
File endpoint
Cases are now filed using a dedicated file endpoint.Evidence Structure Changes
Theissuer_evidence object has been reorganized in v2 for better clarity and consistency:
Field groupings:
- Amount corrections:
correct_amountandcorrect_currency→amount_correction.amountandamount_correction.currency - Return shipping:
return.shipping_carrierandreturn.shipping_tracking→return.shipping.carrierandreturn.shipping.tracking_number - Service end date:
service_end_date→service.end_date - Resolution: Previously flat resolution fields are now organized into specific resolution type objects:
- Product resolution fields →
productobject (order_id, description, condition, type) - Cancellation fields →
cancellationobject (id, date, description, policy_provided) - Refund fields →
refundobject (was_promised, promise_date, description) - Return fields →
returnobject (date, was_successful, description, policy_provided, shipping) - Delivery fields →
deliveryobject (date, expected_date) - Service fields →
serviceobject (end_date) - Card fraud fields →
cardobject (lost_date, is_active, cardholder_has_possession, possession_at_transaction)
- Product resolution fields →
merchant_contact.success→merchant_contact.was_successfulreturn.success→return.was_successfulrefund.promised→refund.was_promisedcard.active→card.is_active
cardholder_message→cardholder_explanationexplanation→issuer_explanationmerchant_contact.prohibited_description→merchant_contact.prohibited_reason