openapi: 3.0.1 info: title: Sezzle API v2 Bearer Authentication Customer API description: This Sezzle API is for merchants who want to accept Sezzle as a payment option termsOfService: https://legal.sezzle.com version: 2.0.0 x-logo: url: https://media.sezzle.com/branding/2.0/png/Logo_WhiteWordmark_500x126.png backgroundColor: '#392558' servers: - url: https://sandbox.gateway.sezzle.com/v2 description: development server, usa, ca - url: https://gateway.sezzle.com/v2 description: production server, usa, ca security: - Bearer: [] tags: - name: Customer paths: /customer: get: tags: - Customer summary: Get list of customers operationId: getV2CustomerList responses: '200': description: Successful operation content: application/json: schema: type: array items: type: object properties: uuid: type: string expiration: type: string format: date-time links: type: array items: $ref: '#/components/schemas/Link' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /customer/{customer_uuid}: get: tags: - Customer summary: Get customer operationId: getV2Customer parameters: - name: customer_uuid in: path description: Customer UUID required: true schema: type: string responses: '200': description: Successful operation content: application/json: schema: allOf: - $ref: '#/components/schemas/SessionStatus' - $ref: '#/components/schemas/Customer' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: tags: - Customer summary: Delete customer operationId: deleteV2Token parameters: - name: customer_uuid in: path description: Customer UUID required: true schema: type: string responses: '204': description: Deleted '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /customer/{customer_uuid}/preapprove: post: tags: - Customer summary: Preapprove amount by customer operationId: preapproveV2Token parameters: - name: customer_uuid in: path description: Customer UUID required: true schema: type: string requestBody: description: Preapproval request content: application/json: schema: $ref: '#/components/schemas/Price' responses: '200': description: Successful operation content: application/json: schema: type: object properties: uuid: type: string approved: type: boolean '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/Unprocessable' /customer/{customer_uuid}/order: post: tags: - Customer summary: Create order by customer operationId: postV2CustomerOrder parameters: - name: customer_uuid in: path description: Customer UUID required: true schema: type: string - name: Sezzle-Request-Id in: header description: Unique client-generated ID to enforce idempotency required: false schema: type: string requestBody: description: Order request content: application/json: schema: allOf: - type: object properties: intent: $ref: '#/components/schemas/Intent' reference_id: type: string order_amount: $ref: '#/components/schemas/Price' financing_options: description: '*The financing options of the order. Only one option can be included.* ' type: array items: $ref: '#/components/schemas/InstallmentPlan' responses: '200': description: Successful operation content: application/json: schema: allOf: - $ref: '#/components/schemas/SessionStatus' - type: object properties: intent: type: string reference_id: type: string order_amount: $ref: '#/components/schemas/Price' authorization: $ref: '#/components/schemas/OrderAuthorization' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/Unprocessable' components: schemas: Link: type: object properties: href: type: string method: type: string rel: type: string Capture: type: object properties: uuid: type: string amount: $ref: '#/components/schemas/Price' Address: required: - city - country_code - postal_code - state - street type: object properties: city: type: string country_code: type: string name: type: string nullable: true phone: type: string nullable: true postal_code: type: string state: type: string street: type: string street2: type: string nullable: true Customer: type: object properties: email: type: string first_name: type: string last_name: type: string phone: type: string dob: type: string token_expiration: type: string format: date-time billing_address: $ref: '#/components/schemas/Address' shipping_address: $ref: '#/components/schemas/Address' Refund: type: object properties: uuid: type: string amount: $ref: '#/components/schemas/Price' Price: required: - amount_in_cents - currency type: object properties: amount_in_cents: type: integer format: int32 currency: type: string InstallmentPlan: type: string enum: - 4-pay-biweekly - 4-pay-monthly - 6-pay-monthly Error: type: array items: type: object properties: code: type: string location: type: string message: type: string debug_uuid: type: string OrderAuthorization: type: object properties: authorization_amount: $ref: '#/components/schemas/Price' authorization_amount_in_user_currency: $ref: '#/components/schemas/Price' description: 'Authorization amount denominated in the shopper''s currency. Sezzle always settles in the shopper''s local currency, so this is the amount actually authorized against the shopper''s account. Only populated after the shopper has completed checkout and the order has been created; the field is omitted on pre-order calls and on the rare upstream regression. ' approved: type: boolean expiration: type: string format: date-time financing_option: type: string sezzle_order_id: type: string description: Internal Sezzle Order ID (in Merchant Dashboard) releases: type: array items: $ref: '#/components/schemas/Capture' captures: type: array items: $ref: '#/components/schemas/Capture' refunds: type: array items: $ref: '#/components/schemas/Refund' SessionStatus: type: object properties: uuid: type: string links: type: array items: $ref: '#/components/schemas/Link' Intent: type: string enum: - AUTH - CAPTURE responses: BadRequest: description: Invalid request content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/Error' Unprocessable: description: Unable to process the request entity content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: Bearer: type: apiKey name: Authorization in: header externalDocs: description: Sezzle API guides and tutorials url: https://docs.sezzle.com/sezzle-integration