braintree Transactions API

Operations for creating, capturing, voiding, refunding, and retrieving payment transactions.

OpenAPI Specification

braintree-transactions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Braintree Payments Add-Ons Transactions API
  description: The Braintree Payments API is the core server-side interface for accepting and processing payments through Braintree's gateway. It enables developers to create and manage transactions, handle authorizations and captures, and process refunds and voids. The API supports a wide range of payment methods including credit and debit cards, PayPal, Apple Pay, Google Pay, and Venmo. Authentication uses HTTP Basic auth with the merchant's public key as the username and private key as the password. All requests and responses use XML or JSON depending on the SDK and endpoint variant used.
  version: '1.0'
  contact:
    name: Braintree Developer Support
    url: https://developer.paypal.com/braintree/docs/
  termsOfService: https://www.braintreepayments.com/legal
servers:
- url: https://api.braintreegateway.com/merchants/{merchantId}
  description: Production Server
  variables:
    merchantId:
      description: The unique identifier for the merchant account.
      default: your_merchant_id
- url: https://api.sandbox.braintreegateway.com/merchants/{merchantId}
  description: Sandbox Server
  variables:
    merchantId:
      description: The unique identifier for the sandbox merchant account.
      default: your_merchant_id
security:
- basicAuth: []
tags:
- name: Transactions
  description: Operations for creating, capturing, voiding, refunding, and retrieving payment transactions.
paths:
  /transactions:
    post:
      operationId: createTransaction
      summary: Create a transaction
      description: Creates a new payment transaction (sale) through the Braintree gateway. Requires either a payment_method_nonce for a one-time payment method, a payment_method_token referencing a vaulted payment method, or a customer_id to use the customer's default vaulted payment method. The amount must be a positive decimal value matching the currency format. Optionally submit the transaction immediately for settlement or hold it in an authorized state for later capture.
      tags:
      - Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionRequest'
      responses:
        '201':
          description: Transaction created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /transactions/{transactionId}:
    get:
      operationId: getTransaction
      summary: Get a transaction
      description: Retrieves the full details of a specific transaction by its unique identifier. Returns the complete transaction object including current status, payment method details, billing and shipping addresses, descriptor information, and any associated disbursement data.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      responses:
        '200':
          description: Transaction retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /transactions/{transactionId}/submit_for_settlement:
    put:
      operationId: submitTransactionForSettlement
      summary: Submit transaction for settlement
      description: Submits a previously authorized transaction for settlement, initiating the transfer of funds to the merchant. An optional amount may be specified for partial settlement if less than the full authorized amount is desired. The transaction must be in the authorized state to be eligible for settlement submission.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: string
                  description: Amount to submit for settlement. If omitted, the full authorized amount is submitted. Must be less than or equal to the authorized amount.
                  example: '10.00'
      responses:
        '200':
          description: Transaction submitted for settlement successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /transactions/{transactionId}/void:
    put:
      operationId: voidTransaction
      summary: Void a transaction
      description: Voids an authorized or submitted-for-settlement transaction, preventing it from being settled. Voiding cancels the payment before funds are transferred. A transaction can only be voided if it is in the authorized, submitted_for_settlement, or settlement_pending status. Once voided, a transaction cannot be captured or refunded.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      responses:
        '200':
          description: Transaction voided successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /transactions/{transactionId}/refund:
    post:
      operationId: refundTransaction
      summary: Refund a transaction
      description: Issues a full or partial refund on a settled transaction. Partial refunds may be issued multiple times until the cumulative refunded amount equals the settled amount. A new transaction of type "credit" is created representing the refund. The original transaction must be in a settled or settling status to be eligible for refund.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/TransactionId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: string
                  description: Amount to refund. If omitted, the full settled amount is refunded. Must be a positive decimal value less than or equal to the settled amount.
                  example: '5.00'
                order_id:
                  type: string
                  description: An order identifier to associate with this refund transaction for merchant reference.
                  maxLength: 255
      responses:
        '201':
          description: Refund transaction created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    LineItem:
      type: object
      description: A line item representing a single product or service in a transaction, used for Level 3 processing data.
      required:
      - name
      - quantity
      - unit_amount
      - total_amount
      - kind
      properties:
        name:
          type: string
          description: Name or description of the product or service.
          maxLength: 127
        description:
          type: string
          description: Additional description of the line item.
          maxLength: 127
        kind:
          type: string
          description: Whether this item is a debit (charge) or credit (discount).
          enum:
          - debit
          - credit
        quantity:
          type: string
          description: Quantity of the line item as a decimal string.
          example: '1.0000'
        unit_amount:
          type: string
          description: Unit price of the line item as a decimal string.
          example: '5.00'
        total_amount:
          type: string
          description: Total amount for this line item (quantity * unit_amount) as a decimal.
          example: '5.00'
        unit_of_measure:
          type: string
          description: Unit of measure for the quantity, such as "each" or "kg".
          maxLength: 12
        commodity_code:
          type: string
          description: Commodity code for Level 3 processing.
          maxLength: 12
        tax_amount:
          type: string
          description: Tax amount for this line item as a decimal string.
    Address:
      type: object
      description: A billing or shipping address associated with a transaction or customer.
      properties:
        first_name:
          type: string
          description: First name of the address holder.
          maxLength: 255
        last_name:
          type: string
          description: Last name of the address holder.
          maxLength: 255
        company:
          type: string
          description: Company or organization name at this address.
          maxLength: 255
        street_address:
          type: string
          description: Primary street address line.
          maxLength: 255
        extended_address:
          type: string
          description: Secondary address line such as apartment or suite number.
          maxLength: 255
        locality:
          type: string
          description: City or locality of the address.
          maxLength: 255
        region:
          type: string
          description: State, province, or region code of the address.
          maxLength: 255
        postal_code:
          type: string
          description: Postal or ZIP code of the address.
          maxLength: 9
        country_code_alpha2:
          type: string
          description: Two-letter ISO 3166-1 alpha-2 country code.
          pattern: ^[A-Z]{2}$
    TransactionOptions:
      type: object
      description: Configuration options that modify transaction processing behavior.
      properties:
        submit_for_settlement:
          type: boolean
          description: If true, the transaction is automatically submitted for settlement after authorization. Defaults to false.
          default: false
        store_in_vault:
          type: boolean
          description: If true, the payment method is stored in the Braintree Vault after the transaction is created.
          default: false
        store_in_vault_on_success:
          type: boolean
          description: If true, the payment method is stored in the Vault only if the transaction is successfully authorized.
          default: false
        skip_avs:
          type: boolean
          description: Skip the address verification check for this transaction.
          default: false
        skip_cvv:
          type: boolean
          description: Skip the CVV verification check for this transaction.
          default: false
        hold_in_escrow:
          type: boolean
          description: If true, funds are held in escrow rather than disbursed immediately. Applicable to Braintree Marketplace transactions only.
          default: false
    CreditCardDetails:
      type: object
      description: Details of the credit or debit card used in a transaction, with sensitive fields masked.
      properties:
        bin:
          type: string
          description: First six digits of the card number identifying the issuing bank.
          pattern: ^\d{6}$
        last_4:
          type: string
          description: Last four digits of the card number.
          pattern: ^\d{4}$
        card_type:
          type: string
          description: The card network or type, such as Visa, MasterCard, American Express, or Discover.
        expiration_month:
          type: string
          description: Two-digit expiration month of the card.
          pattern: ^\d{2}$
        expiration_year:
          type: string
          description: Four-digit expiration year of the card.
          pattern: ^\d{4}$
        cardholder_name:
          type: string
          description: Name of the cardholder as it appears on the card.
        country_of_issuance:
          type: string
          description: Two-letter ISO 3166-1 country code of the card-issuing country.
    Transaction:
      type: object
      description: Represents a payment transaction in the Braintree gateway. A transaction captures the full lifecycle from authorization through settlement, refund, or void.
      properties:
        id:
          type: string
          description: Unique identifier for the transaction assigned by Braintree.
        status:
          type: string
          description: The current processing status of the transaction.
          enum:
          - authorization_expired
          - authorized
          - authorizing
          - settlement_confirmed
          - settlement_declined
          - settlement_pending
          - settled
          - settling
          - submitted_for_settlement
          - voided
          - processor_declined
          - failed
          - gateway_rejected
        amount:
          type: string
          description: The transaction amount as a decimal string.
          example: '10.00'
        currency_iso_code:
          type: string
          description: ISO 4217 three-letter currency code for the transaction.
          example: USD
        type:
          type: string
          description: The type of transaction. "sale" for a charge, "credit" for a refund.
          enum:
          - sale
          - credit
        order_id:
          type: string
          description: Merchant-provided order identifier associated with this transaction.
        merchant_account_id:
          type: string
          description: The merchant account used to process this transaction.
        created_at:
          type: string
          format: date-time
          description: Timestamp when the transaction was created, in ISO 8601 format.
        updated_at:
          type: string
          format: date-time
          description: Timestamp when the transaction was last updated, in ISO 8601 format.
        payment_method_nonce:
          type: string
          description: The payment method nonce used for the transaction, if applicable.
        payment_method_token:
          type: string
          description: The token of the vaulted payment method used for the transaction, if applicable.
        customer_id:
          type: string
          description: The identifier of the customer associated with this transaction, if applicable.
        billing:
          $ref: '#/components/schemas/Address'
        shipping:
          $ref: '#/components/schemas/Address'
        customer_details:
          $ref: '#/components/schemas/Customer'
        credit_card_details:
          $ref: '#/components/schemas/CreditCardDetails'
        descriptor:
          $ref: '#/components/schemas/Descriptor'
        refund_ids:
          type: array
          description: List of transaction identifiers for refund transactions associated with this transaction.
          items:
            type: string
        processor_response_code:
          type: string
          description: The processor-specific response code returned when the transaction was processed.
        processor_response_text:
          type: string
          description: Human-readable text description of the processor response code.
        tax_amount:
          type: string
          description: The tax amount included in this transaction.
        shipping_amount:
          type: string
          description: The shipping amount included in this transaction.
    Descriptor:
      type: object
      description: Dynamic descriptor fields that appear on the customer's bank or credit card statement to identify the merchant and transaction.
      properties:
        name:
          type: string
          description: Merchant name as it appears on the customer's statement. Maximum 22 characters total; name and phone combined must be 22 characters or less with an asterisk separator.
          maxLength: 22
        phone:
          type: string
          description: Merchant phone number as it appears on the customer's statement. Must be 10–14 digits.
          maxLength: 14
        url:
          type: string
          description: Merchant URL as it appears on the customer's statement. Maximum 13 characters.
          maxLength: 13
    Customer:
      type: object
      description: Represents a customer record stored in the Braintree Vault. Customers serve as containers for vaulted payment methods and provide a way to associate transaction history with individuals.
      properties:
        id:
          type: string
          description: Unique identifier for the customer assigned by Braintree.
        first_name:
          type: string
          description: Customer's first name.
        last_name:
          type: string
          description: Customer's last name.
        email:
          type: string
          description: Customer's email address.
        phone:
          type: string
          description: Customer's phone number.
        company:
          type: string
          description: Customer's company or organization name.
        website:
          type: string
          description: Customer's website URL.
        created_at:
          type: string
          format: date-time
          description: Timestamp when the customer was created, in ISO 8601 format.
        updated_at:
          type: string
          format: date-time
          description: Timestamp when the customer was last updated, in ISO 8601 format.
        payment_methods:
          type: array
          description: Collection of vaulted payment methods associated with this customer.
          items:
            $ref: '#/components/schemas/PaymentMethod'
        addresses:
          type: array
          description: Collection of addresses associated with this customer.
          items:
            $ref: '#/components/schemas/Address'
        custom_fields:
          type: object
          description: Custom key-value pairs associated with this customer.
          additionalProperties:
            type: string
    CustomerRequest:
      type: object
      description: Request body for creating or updating a customer record in the Braintree Vault. All fields are optional.
      properties:
        id:
          type: string
          description: Custom customer identifier. If omitted, Braintree generates a unique ID. Alphanumeric, hyphens, and underscores only.
          maxLength: 36
          pattern: ^[a-zA-Z0-9_-]+$
        first_name:
          type: string
          description: Customer's first name.
          maxLength: 255
        last_name:
          type: string
          description: Customer's last name.
          maxLength: 255
        email:
          type: string
          format: email
          description: Customer's email address. ASCII characters only.
          maxLength: 255
        phone:
          type: string
          description: Customer's phone number.
          maxLength: 255
        company:
          type: string
          description: Customer's company or organization name.
          maxLength: 255
        website:
          type: string
          format: uri
          description: Customer's website URL. Must be a well-formed URL.
          maxLength: 255
        fax:
          type: string
          description: Customer's fax number.
          maxLength: 255
        payment_method_nonce:
          type: string
          description: A one-time nonce representing a payment method to vault for the customer at creation time.
        custom_fields:
          type: object
          description: Custom key-value pairs. Keys must be pre-configured in the Braintree Control Panel.
          additionalProperties:
            type: string
    PaymentMethod:
      type: object
      description: Represents a payment method stored in the Braintree Vault. This is a polymorphic object that may represent a credit card, PayPal account, Venmo account, or other supported payment type.
      properties:
        token:
          type: string
          description: Unique token identifying this vaulted payment method. Used as a reference for future transactions.
        customer_id:
          type: string
          description: The identifier of the customer who owns this payment method.
        default:
          type: boolean
          description: Indicates whether this is the customer's default payment method.
        image_url:
          type: string
          format: uri
          description: URL of an image representing the payment method type.
        created_at:
          type: string
          format: date-time
          description: Timestamp when this payment method was vaulted, in ISO 8601 format.
        updated_at:
          type: string
          format: date-time
          description: Timestamp when this payment method was last updated, in ISO 8601 format.
    TransactionRequest:
      type: object
      description: Request body for creating a new payment transaction. Either payment_method_nonce, payment_method_token, or customer_id is required.
      properties:
        amount:
          type: string
          description: The billing amount for the transaction as a decimal string. Must be greater than 0 and match the currency decimal format.
          example: '10.00'
        payment_method_nonce:
          type: string
          description: A one-time-use reference to payment information collected by the Braintree client SDK. Consumed upon transaction creation.
        payment_method_token:
          type: string
          description: The token of a vaulted payment method to charge for this transaction.
        customer_id:
          type: string
          description: The identifier of a customer whose default vaulted payment method will be used for this transaction.
          maxLength: 36
        order_id:
          type: string
          description: A merchant-defined order identifier associated with this transaction for reconciliation.
          maxLength: 255
        merchant_account_id:
          type: string
          description: The identifier of the merchant account to process this transaction. If omitted, the default merchant account is used.
        device_data:
          type: string
          description: Customer device data string collected by the Braintree data collector for fraud prevention analysis.
        descriptor:
          $ref: '#/components/schemas/Descriptor'
        billing:
          $ref: '#/components/schemas/Address'
        shipping:
          $ref: '#/components/schemas/Address'
        options:
          $ref: '#/components/schemas/TransactionOptions'
        tax_amount:
          type: string
          description: The tax amount included in the transaction total for Level 2 and Level 3 processing.
          example: '1.00'
        shipping_amount:
          type: string
          description: The shipping amount included in the transaction total for Level 3 processing.
          example: '2.00'
        customer:
          $ref: '#/components/schemas/CustomerRequest'
        line_items:
          type: array
          description: Line items for Level 3 processing. Up to 249 line items may be included.
          maxItems: 249
          items:
            $ref: '#/components/schemas/LineItem'
        transaction_source:
          type: string
          description: Indicates the origin of this transaction for network reporting.
          enum:
          - recurring
          - recurring_first
          - unscheduled
          - moto
    Error:
      type: object
      description: Standard error response returned by the Braintree API.
      properties:
        message:
          type: string
          description: Human-readable description of the error.
        errors:
          type: object
          description: Nested object containing field-level validation errors organized by resource type.
          additionalProperties: true
  responses:
    Unauthorized:
      description: Unauthorized. Authentication credentials are missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnprocessableEntity:
      description: Unprocessable entity. The request was well-formed but the transaction was declined or failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Bad request. The request body or parameters are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Not found. The requested resource does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    TransactionId:
      name: transactionId
      in: path
      required: true
      description: The unique identifier of the transaction.
      schema:
        type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic Authentication using the merchant's public API key as the username and private API key as the password, Base64-encoded per RFC 7617.
externalDocs:
  description: Braintree Payments API Reference
  url: https://developer.paypal.com/braintree/docs/guides/overview