openapi: 3.0.3 info: title: Culqi API v2 3DS Refunds API description: Culqi is a Peruvian online payments platform (a Grupo Credicorp / Krealo company) that lets businesses accept card, Yape, PagoEfectivo, mobile wallet and Cuotealo (installment) payments. The REST API v2 exposes tokenization, charges (cargos), orders, refunds, customers, cards, plans, subscriptions, webhook events, card-BIN (iin) lookup and transfers. Card data is tokenized client-side against the PCI-scoped secure host; all money-movement and management operations run against the server host with a secret key. Amounts are integers in the currency minor unit (cents); supported currencies are PEN (Peruvian Sol) and USD. termsOfService: https://culqi.com/terminos_y_condiciones/ contact: name: Culqi Developer Support url: https://docs.culqi.com/ version: '2.0' servers: - url: https://api.culqi.com/v2 description: Server-side host for charges, orders, refunds, customers, cards, plans, subscriptions, events, iins and transfers (authenticated with a secret key, sk_). - url: https://secure.culqi.com/v2 description: PCI-scoped host for card tokenization and 3DS charge confirmation (authenticated with a public key, pk_). tags: - name: Refunds description: Full or partial refunds (devoluciones) of a charge. paths: /refunds: post: operationId: createRefund tags: - Refunds summary: Create a refund description: Refunds all or part of a charge. amount is an integer in the currency minor unit. security: - secretKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateRefundRequest' responses: '201': description: Refund created content: application/json: schema: $ref: '#/components/schemas/Refund' '400': $ref: '#/components/responses/Error' get: operationId: listRefunds tags: - Refunds summary: List refunds security: - secretKey: [] parameters: - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Before' - $ref: '#/components/parameters/After' responses: '200': description: A paginated list of refunds content: application/json: schema: $ref: '#/components/schemas/RefundList' /refunds/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getRefund tags: - Refunds summary: Retrieve a refund security: - secretKey: [] responses: '200': description: Refund object content: application/json: schema: $ref: '#/components/schemas/Refund' '404': $ref: '#/components/responses/Error' patch: operationId: updateRefund tags: - Refunds summary: Update refund metadata security: - secretKey: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MetadataUpdate' responses: '200': description: Updated refund content: application/json: schema: $ref: '#/components/schemas/Refund' components: parameters: ResourceId: name: id in: path required: true description: The unique resource identifier. schema: type: string Limit: name: limit in: query required: false description: Number of records to return (max 100). schema: type: integer default: 10 maximum: 100 Before: name: before in: query required: false description: Cursor - return records created before this id. schema: type: string After: name: after in: query required: false description: Cursor - return records created after this id. schema: type: string schemas: Metadata: type: object description: Arbitrary key/value metadata attached to a resource. additionalProperties: type: string MetadataUpdate: type: object properties: metadata: $ref: '#/components/schemas/Metadata' Refund: type: object properties: object: type: string example: refund id: type: string example: ref_test_xxxxxxxxxxxx amount: type: integer charge_id: type: string reason: type: string creation_date: type: integer metadata: $ref: '#/components/schemas/Metadata' CreateRefundRequest: type: object required: - amount - charge_id - reason properties: amount: type: integer description: Amount to refund in minor units. Omit or match charge amount for a full refund. charge_id: type: string reason: type: string enum: - duplicado - fraudulento - solicitud_comprador metadata: $ref: '#/components/schemas/Metadata' PaginatedList: type: object properties: object: type: string example: list data: type: array items: type: object additionalProperties: true paging: type: object properties: previous: type: string nullable: true next: type: string nullable: true cursors: type: object properties: before: type: string nullable: true after: type: string nullable: true Error: type: object properties: object: type: string example: error type: type: string example: card_error merchant_message: type: string user_message: type: string param: type: string code: type: string RefundList: $ref: '#/components/schemas/PaginatedList' responses: Error: description: Error response content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: secretKey: type: http scheme: bearer bearerFormat: sk_live_/sk_test_ secret key description: 'Server-side secret key sent as an HTTP Bearer token in the Authorization header, e.g. `Authorization: Bearer sk_live_...`.' publicKey: type: http scheme: bearer bearerFormat: pk_live_/pk_test_ public key description: 'Public key sent as an HTTP Bearer token for tokenization and 3DS confirm on the secure host, e.g. `Authorization: Bearer pk_live_...`.'