Paystack · Arazzo Workflow

Paystack Submit Dispute Evidence and Resolve

Version 1.0.0

Fetch a dispute, attach evidence to it, request an upload URL for supporting files, then resolve the dispute.

1 workflow 1 source API 1 provider
View Spec View on GitHub PaymentsAfricaFintechRecurring BillingMarketplacesPayoutsMobile MoneyStripeArazzoWorkflows

Provider

paystack

Workflows

dispute-evidence-and-resolve
Respond to a chargeback with evidence and a resolution.
Fetches the dispute, adds evidence, requests an upload URL, and resolves the dispute.
4 steps inputs: customer_email, customer_name, customer_phone, disputeId, message, refund_amount, resolution, service_details, uploaded_filename outputs: evidenceId, resolvedStatus, uploadUrl
1
fetchDispute
dispute_fetch
Fetch the dispute to read its current status before responding.
2
addEvidence
dispute_evidence
Attach structured evidence to the dispute.
3
getUploadUrl
dispute_uploadUrl
Request an upload URL so a supporting file can be attached.
4
resolveDispute
dispute_resolve
Resolve the dispute with the merchant's decision and supporting attachment.

Source API Descriptions

Arazzo Workflow Specification

paystack-dispute-evidence-and-resolve-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Paystack Submit Dispute Evidence and Resolve
  summary: Fetch a dispute, attach evidence to it, request an upload URL for supporting files, then resolve the dispute.
  description: >-
    The chargeback response flow. A dispute is fetched to read its current state,
    structured evidence is added, an upload URL is requested so a supporting file
    can be attached, and the dispute is then resolved with the merchant's
    decision. Every step spells out its request inline so the flow can be read and
    executed without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: refundsApi
  url: ../openapi/paystack-refunds-disputes-openapi.yml
  type: openapi
workflows:
- workflowId: dispute-evidence-and-resolve
  summary: Respond to a chargeback with evidence and a resolution.
  description: >-
    Fetches the dispute, adds evidence, requests an upload URL, and resolves the
    dispute.
  inputs:
    type: object
    required:
    - disputeId
    - customer_email
    - customer_name
    - customer_phone
    - service_details
    - resolution
    - message
    - refund_amount
    - uploaded_filename
    properties:
      disputeId:
        type: string
        description: Id of the dispute being responded to.
      customer_email:
        type: string
        description: Customer email for the evidence record.
      customer_name:
        type: string
        description: Customer name for the evidence record.
      customer_phone:
        type: string
        description: Customer mobile number for the evidence record.
      service_details:
        type: string
        description: Details of the service or goods offered.
      resolution:
        type: string
        description: Dispute resolution (merchant-accepted or declined).
      message:
        type: string
        description: Reason for resolving the dispute.
      refund_amount:
        type: string
        description: Amount to refund in the smallest currency unit, as a string.
      uploaded_filename:
        type: string
        description: Filename of the attachment returned by the upload URL response.
  steps:
  - stepId: fetchDispute
    description: Fetch the dispute to read its current status before responding.
    operationId: dispute_fetch
    parameters:
    - name: id
      in: path
      value: $inputs.disputeId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      disputeStatus: $response.body#/data/status
  - stepId: addEvidence
    description: Attach structured evidence to the dispute.
    operationId: dispute_evidence
    parameters:
    - name: id
      in: path
      value: $inputs.disputeId
    requestBody:
      contentType: application/json
      payload:
        customer_email: $inputs.customer_email
        customer_name: $inputs.customer_name
        customer_phone: $inputs.customer_phone
        service_details: $inputs.service_details
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      evidenceId: $response.body#/data/id
  - stepId: getUploadUrl
    description: Request an upload URL so a supporting file can be attached.
    operationId: dispute_uploadUrl
    parameters:
    - name: id
      in: path
      value: $inputs.disputeId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      uploadUrl: $response.body#/data/signedUrl
      fileName: $response.body#/data/fileName
  - stepId: resolveDispute
    description: Resolve the dispute with the merchant's decision and supporting attachment.
    operationId: dispute_resolve
    parameters:
    - name: id
      in: path
      value: $inputs.disputeId
    requestBody:
      contentType: application/json
      payload:
        resolution: $inputs.resolution
        message: $inputs.message
        refund_amount: $inputs.refund_amount
        uploaded_filename: $inputs.uploaded_filename
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      resolvedStatus: $response.body#/data/status
  outputs:
    evidenceId: $steps.addEvidence.outputs.evidenceId
    uploadUrl: $steps.getUploadUrl.outputs.uploadUrl
    resolvedStatus: $steps.resolveDispute.outputs.resolvedStatus