openapi: 3.2.0 info: title: Zepto Refunds API contact: email: support@zepto.com.au description: Zepto allows you to make, get and manage payments using nothing but bank accounts. version: '1.0' servers: - url: https://api.sandbox.zeptopayments.com description: Sandbox API server - url: https://api.zeptopayments.com description: Production API server security: - bearerAuth: [] tags: - name: Refunds description: ' Refunds can be issued for any successfully completed Payment Request transaction. This includes: 1. Payment Requests for direct debit payments **(Collections)**: 2. Payment Requests for funds received via DE/NPP **(Receivables)**: This allows you to return any funds that were previously collected or received into one of your bank/float accounts. ' paths: /credits/{credit_ref}/refunds: parameters: - $ref: '#/components/parameters/ZeptoAPIVersion' post: tags: - Refunds summary: Issue a Refund description: "Certain rules apply to the issuance of a refund:\n\n\n" operationId: IssueARefund parameters: - name: Idempotency-Key in: header description: Idempotency key to support safe retries for 24h required: true schema: type: string example: '{unique-uuid-per-refund}' - name: credit_ref in: path description: The credit reference number e.g C.625v required: true style: simple schema: type: string example: C.625v requestBody: description: '' content: application/json: schema: $ref: '#/components/schemas/IssueARefundRequest' required: true responses: '200': description: Created content: application/json: schema: $ref: '#/components/schemas/IssueARefundResponse' /refunds/outgoing: parameters: - $ref: '#/components/parameters/ZeptoAPIVersion' get: tags: - Refunds summary: List Refunds description: '' operationId: ListOutgoingRefunds parameters: - name: page in: query description: Page of results to return, single value, exact match style: form schema: type: string example: '1' - name: per_page in: query description: Number of results per page, single value, exact match style: form schema: type: string example: '100' responses: '200': description: OK headers: Link: $ref: '#/components/headers/Link' Per-Page: $ref: '#/components/headers/Per-Page' content: application/json: schema: $ref: '#/components/schemas/ListOutgoingRefundsResponse' /refunds/{refund_ref}: parameters: - $ref: '#/components/parameters/ZeptoAPIVersion' get: tags: - Refunds summary: Retrieve a Refund description: Get a single Refund by its reference operationId: RetrieveARefund parameters: - name: refund_ref in: path description: Single value, exact match required: true style: simple schema: type: string example: PRF.75f responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RetrieveARefundResponse' components: headers: Per-Page: schema: type: integer description: Contains the current maximum items in collection. Defaults to 25 example: 25 Link: schema: type: string description: Contains pagination link for next page of collection, if next page exists. example: ; rel="next" schemas: Metadata: title: Metadata type: object description: Use for your custom data and certain Zepto customisations. properties: {} example: custom_key: Custom string another_custom_key: Maybe a URL IssueARefundResponse: title: Issue a Refund (response) type: object required: - data properties: data: type: object required: - ref - for_ref - debit_ref - your_bank_account_id - created_at - amount - reason properties: ref: type: string description: 'The Refund request reference (PRF.*) (Min: 5 - Max: 9)' for_ref: type: string description: The associated credit reference (C.*) debit_ref: type: string description: The associated debit reference (C.*) your_bank_account_id: type: string format: uuid description: The source bank/float account (UUID) created_at: type: string format: date-time description: The date-time when the Payment Request was created example: '2021-06-01T08:30:12Z' amount: type: integer description: 'The amount value provided (Min: 1 - Max: 99999999999)' channels: type: array description: The requested payment channel(s) to be used, in order. (new_payments_platform, direct_entry, or both) reason: type: string description: Reason for the refund contacts: type: object properties: source_contact_id: type: string description: The original 'Receivable Contact' ID (only visible when refunding Receivables) target_contact_id: type: string description: The new Contact ID receiving the funds (only visible when refunding Receivables) example: data: ref: PRF.7f4 for_ref: C.1gf22 debit_ref: D.63hgf your_bank_account_id: 9c70871d-8e36-4c3e-8a9c-c0ee20e7c679 created_at: '2021-06-01T07:20:24Z' amount: 500 channels: - direct_entry reason: Subscription refund contacts: source_contact_id: 194b0237-6c2c-4705-b4fb-308274b14eda target_contact_id: 3694ff53-32ea-40ae-8392-821e48d7bd5a metadata: custom_key: Custom string another_custom_key: Maybe a URL RetrieveARefundResponse: title: Retrieve a Refund (response) required: - data type: object properties: data: type: object example: data: ref: PRF.1 for_ref: C.59 debit_ref: D.hi your_bank_account_id: 9c70871d-8e36-4c3e-8a9c-c0ee20e7c679 created_at: '2017-05-08T07:20:24Z' amount: 500 reason: Because reason metadata: custom_key: Custom string another_custom_key: Maybe a URL ListOutgoingRefundsResponse: title: List outgoing Refunds (response) required: - data type: object properties: data: type: array items: type: object description: '' example: data: - ref: PRF.2 for_ref: C.5 debit_ref: D.5a your_bank_account_id: 9c70871d-8e36-4c3e-8a9c-c0ee20e7c679 created_at: '2017-05-09T04:45:26Z' amount: 5 reason: Because reason metadata: custom_key: Custom string another_custom_key: Maybe a URL IssueARefundRequest: title: Issue a Refund (request) required: - amount type: object properties: amount: type: integer minimum: 1 maximum: 99999999999 description: 'Amount in cents refund (Min: 1 - Max: 99999999999)' example: 500 channels: description: Specify the payment channel to be used, in order. (new_payments_platform, direct_entry, or both) type: array reason: type: string pattern: ^[ -~]+$ description: The first 8 characters are visible if funds are sent via direct credit / BECS, and up to 270 characters if sent via NPP example: Because reason your_bank_account_id: type: string format: uuid description: Specify where we should take the funds for this transaction. If omitted, your primary bank account will be used. metadata: $ref: '#/components/schemas/Metadata' example: amount: 500 channels: - direct_entry reason: Because reason your_bank_account_id: 9c70871d-8e36-4c3e-8a9c-c0ee20e7c679 metadata: custom_key: Custom string another_custom_key: Maybe a URL parameters: ZeptoAPIVersion: name: Zepto-API-Version in: header required: false schema: type: string pattern: ^\d{8}$ default: '20250101' example: '20260101' description: API version in YYYYMMDD format. Defaults to 20250101 (legacy) when omitted. securitySchemes: bearerAuth: type: oauth2 flows: authorizationCode: authorizationUrl: /oauth/authorize tokenUrl: /oauth/token refreshUrl: /oauth/token scopes: public: Access your public information contacts: Manage your contacts payments: Manage your payments payment_requests: Manage your payment requests refunds: Manage your refunds agreements: Manage your agreements transactions: Access your transaction history open_agreements: Manage your open agreements transfers: Manage your Transfers