openapi: 3.0.3 info: title: Shift4 Payments Blacklist Charges API description: The Shift4 Payments API enables merchants and platforms to accept and manage payments, including one-time charges, refunds, customers, cards, tokenization, subscriptions, plans, payment methods, payment links, checkout sessions, fraud warnings, blacklist rules, disputes, file uploads, payouts, webhook endpoints, and events. Endpoints, parameters, and resource shapes are extracted from the public Shift4 documentation at https://dev.shift4.com/docs/api and the official open-source Shift4 SDKs (Java, Node, Python, Ruby, PHP, .NET, iOS, Android, WooCommerce, Salesforce B2C) maintained at https://github.com/shift4developer. version: '1.0' contact: name: Shift4 Developer Support email: devsupport@shift4.com url: https://dev.shift4.com license: name: Documentation url: https://dev.shift4.com/docs servers: - url: https://api.shift4.com description: Production security: - BasicAuth: [] tags: - name: Charges description: Create, retrieve, update, capture, and list charges. paths: /charges: post: tags: - Charges summary: Create a Charge operationId: createCharge requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChargeRequest' responses: '200': description: Charge created. content: application/json: schema: $ref: '#/components/schemas/Charge' default: $ref: '#/components/responses/ErrorResponse' get: tags: - Charges summary: List Charges operationId: listCharges parameters: - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/StartingAfter' - $ref: '#/components/parameters/EndingBefore' responses: '200': description: A list of charges. content: application/json: schema: $ref: '#/components/schemas/ChargeList' /charges/{chargeId}: parameters: - name: chargeId in: path required: true schema: type: string get: tags: - Charges summary: Retrieve a Charge operationId: getCharge responses: '200': description: A charge object. content: application/json: schema: $ref: '#/components/schemas/Charge' post: tags: - Charges summary: Update a Charge operationId: updateCharge requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChargeUpdateRequest' responses: '200': description: Updated charge. content: application/json: schema: $ref: '#/components/schemas/Charge' /charges/{chargeId}/capture: parameters: - name: chargeId in: path required: true schema: type: string post: tags: - Charges summary: Capture a Charge operationId: captureCharge requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/CaptureRequest' responses: '200': description: Captured charge. content: application/json: schema: $ref: '#/components/schemas/Charge' components: parameters: EndingBefore: name: endingBefore in: query schema: type: string description: A cursor for use in pagination. StartingAfter: name: startingAfter in: query schema: type: string description: A cursor for use in pagination. Limit: name: limit in: query schema: type: integer minimum: 1 maximum: 100 default: 10 description: A limit on the number of objects to be returned. schemas: ChargeUpdateRequest: type: object properties: description: type: string metadata: type: object additionalProperties: type: string ChargeList: $ref: '#/components/schemas/ListResponseCharge' Billing: type: object properties: name: type: string email: type: string format: email address: $ref: '#/components/schemas/Address' vatNumber: type: string CaptureRequest: type: object properties: amount: type: integer minimum: 1 Address: type: object properties: line1: type: string line2: type: string zip: type: string city: type: string state: type: string country: type: string description: ISO 3166-1 alpha-2 country code. Refund: type: object properties: id: type: string created: type: integer format: int64 amount: type: integer currency: type: string charge: type: string reason: type: string enum: - FRAUDULENT - DUPLICATE - REQUESTED_BY_CUSTOMER status: type: string enum: - SUCCESSFUL - FAILED - PENDING metadata: type: object additionalProperties: type: string PaymentMethod: type: object properties: id: type: string customerId: type: string clientObjectId: type: string created: type: integer format: int64 type: type: string enum: - CARD - APPLE_PAY - GOOGLE_PAY - THREE_D_SECURE - IDEAL - P24 - EPS - BANCONTACT - GIROPAY - MULTIBANCO - SOFORT - BLIK - BLIK_REDIRECT - OTHER status: type: string enum: - REQUIRES_ACTION - CHARGEABLE - USED - DELETED - FAILED deleted: type: boolean billing: $ref: '#/components/schemas/Billing' applePay: type: object properties: cardBrand: type: string cardType: type: string first6: type: string last4: type: string amount: type: integer currency: type: string merchantTokenIdentifier: type: string googlePay: type: object properties: cardBrand: type: string cardType: type: string first6: type: string last4: type: string threeDSecure: type: object properties: currency: type: string amount: type: integer merchantAccountId: type: string metadata: type: object additionalProperties: type: string CardRequest: type: object properties: cardholderName: type: string number: type: string expMonth: type: string expYear: type: string cvc: type: string addressLine1: type: string addressLine2: type: string addressCity: type: string addressState: type: string addressZip: type: string addressCountry: type: string ErrorResponse: type: object properties: error: type: object properties: type: type: string enum: - invalid_request - gateway_error - processing_error - card_error - fraud - three_d_secure_error - blacklist_error code: type: string message: type: string chargeId: type: string creditId: type: string issuerDeclineCode: type: string ListResponseCharge: type: object properties: list: type: array items: $ref: '#/components/schemas/Charge' hasMore: type: boolean totalCount: type: integer Card: type: object properties: id: type: string created: type: integer format: int64 description: Unix timestamp. deleted: type: boolean first6: type: string last4: type: string fingerprint: type: string expMonth: type: string expYear: type: string cardholderName: type: string customerId: type: string brand: type: string description: Card brand. enum: - Visa - MasterCard - AmericanExpress - Discover - JCB - DinersClub - UnionPay - Other type: type: string enum: - Credit - Debit - Prepaid - Other country: type: string addressLine1: type: string addressLine2: type: string addressCity: type: string addressState: type: string addressZip: type: string addressCountry: type: string issuer: type: string merchantAccountId: type: string Shipping: type: object properties: name: type: string email: type: string format: email phoneNumber: type: string address: $ref: '#/components/schemas/Address' Charge: type: object properties: id: type: string clientObjectId: type: string created: type: integer format: int64 amount: type: integer description: Smallest currency unit (e.g., cents). amountRefunded: type: integer currency: type: string description: ISO 4217 currency code. description: type: string status: type: string enum: - SUCCESSFUL - FAILED - PENDING type: type: string enum: - FIRST_RECURRING - SUBSEQUENT_RECURRING - CARDHOLDER_INITIATED - MERCHANT_INITIATED card: $ref: '#/components/schemas/Card' paymentMethod: $ref: '#/components/schemas/PaymentMethod' customerId: type: string subscriptionId: type: string captured: type: boolean refunded: type: boolean refunds: type: array items: $ref: '#/components/schemas/Refund' disputed: type: boolean shipping: $ref: '#/components/schemas/Shipping' billing: $ref: '#/components/schemas/Billing' merchantAccountId: type: string metadata: type: object additionalProperties: type: string failureCode: type: string failureIssuerDeclineCode: type: string failureMessage: type: string ChargeRequest: type: object required: - amount - currency properties: amount: type: integer minimum: 1 currency: type: string description: type: string captured: type: boolean default: true customerId: type: string cardId: type: string card: oneOf: - $ref: '#/components/schemas/CardRequest' - type: string description: A token id (tok_...). billing: $ref: '#/components/schemas/Billing' shipping: $ref: '#/components/schemas/Shipping' metadata: type: object additionalProperties: type: string responses: ErrorResponse: description: An error response. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' securitySchemes: BasicAuth: type: http scheme: basic description: Use your secret API key as the username with an empty password.