> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anglpay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List payment options

This endpoint requires the `payment-options.read` or `embed` scope.


## OpenAPI

````yaml openapi.speakeasy.json POST /payment-options
openapi: 3.0.0
info:
  title: Gr4vy API
  version: 1.1.0-beta
  contact:
    name: Gr4vy Support
    email: code@gr4vy.com
    url: https://gr4vy.com
  termsOfService: https://gr4vy.com
  license:
    name: MIT
    url: https://raw.githubusercontent.com/gr4vy/gr4vy-openapi/main/LICENSE
  description: |-
    Welcome to the Gr4vy API reference documentation.
    Our API is still very much a work in product and subject to change.
servers:
  - url: https://api.sandbox.{id}.gr4vy.app
    x-speakeasy-server-id: sandbox
    variables:
      id:
        default: example
        description: The subdomain for your Gr4vy instance.
  - url: https://api.{id}.gr4vy.app
    x-speakeasy-server-id: production
    variables:
      id:
        default: example
        description: The subdomain for your Gr4vy instance.
security:
  - bearerAuth: []
tags:
  - name: Account Updater
    description: >-
      An Account Updater is a service provided by credit card issuers

      (such as banks and financial institutions) to merchants who accept

      recurring payments from customers. Its primary purpose is to help

      merchants maintain accurate and up-to-date payment information for

      their customers' credit or debit card accounts.


      In Gr4vy, the Account Updater service is provided in an on-demand

      and asynchronous fashion:


      1. A merchant requests an update for a set of stored cards.

      2. A request is submitted to a third-party service.

      3. When results are ready, new card details are stored and left in
      standby.

      4. Card details are updated when it gets determined that the original card
         is no longer valid (e.g. has expired).
  - name: Anti-Fraud Services
    description: >-
      In Gr4vy, an anti-fraud service represents a configured anti-fraud service

      provider (`Sift`, `CyberSource`, etc). This third-party services will be

      used to screen transactions to determine the risk and prevents chargebacks

      and fraudulent transactions.


      The anti-fraud services API can be used to:


      * Provide Gr4vy with the API credentials for an anti-fraud service
      provider.

      * Set a display name for a anti-fraud provider.

      * Map anti-fraud service decisions to Gr4vy internal decisions.
    x-internal: true
  - name: Anti Fraud Service Definitions
    description: >-
      Anti fraud service definitions describe the fields required for a anti
      fraud

      service to be configured.
  - name: API Key Pairs
    description: >-
      In Gr4vy, an API key pair is used to sign and validate JSON Web Tokens
      (JWT).

      JWTs are used as a HTTP `bearer` token to authenticate to the API. For
      more

      information please visit our [in-depth
      authentication](/guides/authentication)

      guide.
    x-internal: true
  - name: API Logs
    description: >-
      API Logs provide an historic of 4XX and 5XX errors that happened in the
      API

      in the last 24 hours with a 250 result limit.
    x-internal: true
  - name: Apple Pay Certificates
    description: >-
      Apple Pay payment processing certificates are used by Apple to encrypt
      Apple

      Pay tokens. You must register and upload an Apple Pay payment processing

      certificate if you wish to use Apple Pay with Gr4vy's mobile SDKs.


      The Apple Pay certificates API can be used to:


      * Start a new Apple Pay certificate registration, providing you with a

      Certificate Signing Request (CSR).

      * Update the Apple Pay certificate record with the certificate received
      from

      Apple after creating a new payment processing certificate on your Apple

      Developer console and uploading a CSR.

      * List all Apple Pay certificates.
    x-internal: true
  - name: Audit Logs
    description: >-
      Audit Logs provide an historic record of changes made to your Gr4vy
      instance.
  - name: Buyers
    description: >-
      In Gr4vy, a buyer represents your customer, the shopper who's performing

      a checkout and making a purchase.


      A buyer can be used by you to:


      * Display a human readable name (`display_name`) for a buyer in the Gr4vy

      admin panel

      * Associate multiple stored payment methods with a single user

      * Initialize **Gr4vy Embed** with the buyer ID, automatically displaying
      the
        buyer's previously stored payment methods, allowing for faster checkout.
  - name: Card Details
    description: Endpoints to retrieve details of a card by utilising a BIN lookup table.
    x-internal: true
  - name: Card Scheme Definitions
    description: Card Scheme definitions provide display information to a card scheme.
  - name: Connections
    description: |-
      Endpoints to retrieve details of configured connections such as payment
      services, digital wallets, and anti-fraud services.
    x-internal: true
  - name: Connection Definitions
    description: |-
      Endpoints to retrieve details of various connections such as payment
      services, digital wallets, and anti-fraud services.
    x-internal: true
  - name: Checkout Sessions
    description: |-
      A Checkout Session represents the session of a user as they progress
      through an online checkout.
  - name: Digital Wallets
    description: |-
      In Gr4vy, a digital wallet represents a way for a buyer to pay using
      card details already stored on their device via a digital wallet service
      such as Apple Pay or Google Pay. The buyer will not have to fill in their
      card details on checkout.

      The digital wallets API can be used to:

      * Register with a digital wallet provider.
      * List digital wallets currently registered.
  - name: Gift Cards
    description: >-
      In Gr4vy, a gift card represents a stored value card that can be used to
      pay for

      a transaction.
  - name: Gift Card Services
    description: >-
      In Gr4vy, a gift card service represents a configured provider for
      processing

      gift cards.
  - name: Gift Card Service Definitions
    description: |-
      Gift card service definitions describe the fields required for a gift
      card service to be configured.
  - name: Health Dashboard
    description: Endpoints to retrieve the data used for the Health Dashboard.
    x-internal: true
  - name: Merchant Accounts
    description: |-
      In Gr4vy, a merchant account represents an individual merchant in an
      instance. Each instance has one or more merchant accounts, and each
      merchant account has its own connections, Flow rules, transactions, and
      more.
  - name: Metrics Explorer
    description: Endpoints to retrieve the data used for the Metrics Explorer.
    x-internal: true
  - name: Payment Methods
    description: |-
      In Gr4vy, a payment method represents a way in which a payment can be
      processed, for example a card, a PayPal account, or a bank account.

      The payment method API can be used to:

      * List all the available payment methods
      * Filter the available payment method for a buyer in a specific currency
      and country.
      * Store (also known as vault) a payment method for a buyer.
      * Fetch all previously stored payment methods for a buyer.
  - name: Payment Method Definitions
    description: >-
      Payment Method definitions provide display information to a payment
      method.
  - name: Payment Options
    description: |-
      In Gr4vy, a payment option represents a list of methods (card, PayPal,
      etc) that are available for a given locale.

      The payment options API can be used to:

      * Determine what types of payments can be processed in a specific locale.
      * Display a list options to a buyer to choose from.
  - name: Payment Service Definitions
    description: |-
      Payment service definitions describe the fields required for a payment
      service to be configured.
  - name: Payment Services
    description: |-
      In Gr4vy, a payment service represents a configured payment provider
      (Stripe, PayPal, Adyen, etc) for a specific payment type (card, bitcoin,
      etc)

      The payment services API can be used to:

      * Provide Gr4vy with the payment credentials for a payment provider.
      * Set a display name for a payment provider.
  - name: Payouts
    description: |-
      Payouts allow a merchant to send money from one of their own accounts to a
      third party.
  - name: Payment Links
    description: >-
      In Gr4vy, payment links allow a merchant to generate a link, send it to a

      customer via email, SMS, etc, and then have the customer pay without the
      need

      for the merchant hosting their own checkout.
  - name: Vault Forward Definitions
    description: >-
      Vault Forward definitions describe a third party service that has been
      vetted

      to receive requests containing PCI data.
  - name: Vault Forward Configurations
    description: |-
      A Vault Forward Configuration represents a third party service that is
      currently enabled to send requests containing PCI data.
  - name: Vault Forward
    description: |-
      Vault Forwarding is a way to perform requests where, provided a template,
      Gr4vy will evaluate it to inject PCI data and forward it to third party
      services that have been vetted to receive such data.
  - name: Reports
    description: |-
      In Gr4vy, a report represents the configuration details to extract or
      dump a set of data into a downloadable CSV file. The data extracted
      by a report is configured via the reports API where you can specify:

      * Which fields should be in the dataset.
      * How the dataset should be sorted.
      * How the dataset should be filtered.

      Once a report is created, it may be executed on a one-off or recurring
      basis. One-off reports are executed only once shortly after the report
      is created, while recurring reports are executed periodically based on
      its configured frequency, e.g. weekly or monthly.

      During a report execution, the data is extracted and loaded into
      a CSV file according to the report's configuration. The resulting file
      may then be downloaded.

      The reports API can be used to:

      * Create and configure new reports.
      * List all reports.
      * View the configuration details of a report.
      * List a report's executions.
      * Reconfigure an existing report.
      * Generate a temporary URL to download the result of a report execution
      in CSV format.
  - name: Sessions
    description: |-
      The sessions APIs are used to facilitate user authentication for the Gr4vy
      dashboard.
    x-internal: true
  - name: Transactions
    description: >-
      In Gr4vy, a transaction represents a payment in any state, either before
      it

      is authorized, once it is captured, or after it has been refunded.


      The transactions API can be used to:


      - Authorize, capture, and store cards.

      - Authorize, capture, and store alternative payment methods like PayPal.

      - Refund, void, and otherwise cancel existing transactions.
  - name: Users
    description: |-
      In Gr4vy, a user represents an employee of the merchant with access to the
      dashboard.
    x-internal: true
  - name: Webhooks
    description: |-
      Endpoints related to webhooks to integrate Gr4vy with payment services
      webhooks functionality.
    x-internal: true
  - name: Flow
    description: >-
      In Gr4vy, a rule can be created that triggers actions anywhere in the
      payment flow.
    x-internal: true
  - name: Roles
    description: >-
      In Gr4vy, users can be granted access to specific types of resources and
      permissions

      to perform certain actions by being assigned one or more roles.
  - name: Tokens
    description: Endpoints related to the Gr4vy tokenization service.
  - name: Webhook subscriptions
    description: >-
      Endpoints related to the management of subscriptions for endpoints to
      receive webhooks.
paths:
  /payment-options:
    post:
      tags:
        - Payment Options
      summary: List payment options with POST
      description: >-
        Returns a list of available payment method options for the combination
        of

        amount, currency, country, metadata and list of cart items.


        If the amount is zero, payment options which do not support zero
        amounts,

        will be omitted in the response.


        Checkout flow rules are used to limit these result.
      operationId: post-list-payment-options
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentOptionsRequest'
      responses:
        '200':
          description: |-
            Returns a list of available payment options for the given query
            parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentOptions'
        '400':
          description: >-
            Returns an error if the request was badly formatted or missing
            required

            fields.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400BadRequest'
        '401':
          description: Returns an error if no valid authentication was provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401Unauthorized'
components:
  schemas:
    PaymentOptionsRequest:
      title: Payment Options (List)
      type: object
      description: A request to get list of payment options.
      x-tags:
        - Request Bodies
      properties:
        amount:
          nullable: true
          description: >-
            The monetary amount to create an authorization for, in the smallest

            currency unit for the given currency, for example `1299` cents to
            create

            an authorization for `$12.99`.


            If the `intent` is set to `capture`, an amount greater than zero
            must

            be supplied.
          type: integer
          example: 1299
        locale:
          type: string
          example: en-US
          pattern: ^[a-z]{2}(?:-[A-Z]{2})?$
          default: en
          nullable: true
          description: >-
            An ISO 639-1 Language Code and optional ISO 3166 Country Code. This
            locale

            determines the language for the labels returned for every payment
            option.
        currency:
          type: string
          example: USD
          nullable: true
          description: |
            A supported ISO-4217 currency code.

            For redirect requests, this value must match the one specified for
            `currency` in `payment_method`.
        country:
          type: string
          example: US
          nullable: true
          description: >
            Filters the results to only the items which support this country
            code. A

            country is formatted as 2-letter ISO country code.
        metadata:
          nullable: true
          description: >-
            Used by the Flow engine to filter available options based on various

            client-defined parameters. If present, this must be a string
            representing

            a valid JSON dictionary.
          type: object
          maxProperties: 20
          additionalProperties:
            type: string
          example:
            key: value
        cart_items:
          type: array
          nullable: true
          description: >-
            An array of cart items that represents the line items of a
            transaction.
          items:
            $ref: '#/components/schemas/CartItem'
          maxItems: 249
    PaymentOptions:
      title: A list of payment options
      type: object
      description: A list of payment options.
      x-tags:
        - Payment Options
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/PaymentOption'
    Error400BadRequest:
      title: Bad Request
      type: object
      description: Bad Request (HTTP 400).
      x-tags:
        - Errors
      properties:
        type:
          type: string
          description: '`error`.'
          enum:
            - error
          example: error
        code:
          type: string
          description: A short code that describes the reason for the error.
          example: bad_request
          enum:
            - bad_request
            - incorrect_json
            - invalid_credentials
        status:
          type: integer
          description: '`400`.'
          example: 400
          enum:
            - 400
        message:
          type: string
          description: A human-readable reason for the error.
          example: Missing '****' field
        details:
          type: array
          description: >-
            A list of detail objects that further clarify the reason for the
            error.
          items:
            $ref: '#/components/schemas/ErrorDetail'
    Error401Unauthorized:
      title: Unauthorized Error
      type: object
      description: Unauthorized Error (HTTP 401).
      x-tags:
        - Errors
      properties:
        type:
          type: string
          description: '`error`.'
          enum:
            - error
          example: error
        code:
          type: string
          description: '`unauthorized`.'
          example: unauthorized
          enum:
            - unauthorized
        status:
          type: integer
          description: '`401`.'
          example: 401
          enum:
            - 401
        message:
          type: string
          description: No valid API authentication found.
          example: No valid API authentication found
          enum:
            - No valid API authentication found
        details:
          type: array
          description: >-
            A list of detail objects that further clarify the reason for the
            error.

            Not every error supports more detail.
          example: []
          items:
            $ref: '#/components/schemas/ErrorDetail'
    CartItem:
      title: Cart Item
      type: object
      description: >-
        A cart item that represents a single cart line item for a transaction.

        Note that some optional properties are required for certain payment

        service providers. If no value is set for these properties, we will use

        their default value.


        If the total due to be paid for the item is required by the payment
        service

        provider, generally referred to as the "total amount", the formula below

        will usually be used to calculate this amount:


        `(unit_amount * quantity) - discount_amount + tax_amount`


        It's highly recommended that the total amount to pay for all items

        should match the transaction's amount to reduce the risk of the

        transaction being declined by the payment service provider.
      required:
        - name
        - quantity
        - unit_amount
      properties:
        name:
          type: string
          description: |-
            The name of the cart item. The value you set for this property may
            be truncated if the maximum length accepted by a payment service
            provider is less than 255 characters.
          example: GoPro HERO9 Camcorder
          maxLength: 255
        quantity:
          type: integer
          description: |-
            The quantity of this item in the cart. This value cannot be negative
            or zero.
          example: 1
          minimum: 1
          maximum: 99999999
        unit_amount:
          type: integer
          description: |-
            The amount for an individual item represented as a monetary amount
            in the smallest currency unit for the given currency, for example
            `1299` USD cents represents `$12.99`.
            The amount sent through to the payment processor as unitary amount
            will be calculated to include the discount and tax values sent
            as part of this cart item.
          example: 37999
          minimum: 0
          maximum: 99999999
        discount_amount:
          type: integer
          description: >-
            The amount discounted for this item represented as a monetary amount

            in the smallest currency unit for the given currency, for example
            `1299`

            USD cents represents `$12.99`.


            Please note that this amount is for the total of the cart item and
            not

            for an individual item. For example, if the quantity is 5, this
            value

            should be the total discount amount for 5 of the cart item.


            You might see unexpected failed transactions if the
            `discount_amount` can

            not be equally divided by the `quantity` value. This is due to the
            fact

            that some payment services require this amount to be specified per
            unit.


            In this situation we recommend splitting this item into separate
            items,

            each with their own specific discount.
          example: 0
          minimum: 0
          maximum: 99999999
          nullable: true
          default: 0
        tax_amount:
          type: integer
          description: >-
            The tax amount for this item represented as a monetary amount

            in the smallest currency unit for the given currency, for example
            `1299`

            USD cents represents `$12.99`.


            Please not that this amount is for the total of the cart item and
            not

            for an individual item. For example, if the quantity is 5, this
            value

            should be the total tax amount for 5 of the cart item.


            You might see unexpected failed transactions if the `tax_amount` can

            not be equally divided by the `quantity` value. This is due to the
            fact

            that some payment services require this amount to be specified per
            unit.


            In this situation we recommend splitting this item into separate
            items,

            each with their own specific tax amount.
          example: 0
          minimum: 0
          maximum: 99999999
          nullable: true
          default: 0
        external_identifier:
          type: string
          example: item-789123
          description: >-
            An external identifier for the cart item. This can be set to any
            value and is not sent to the payment service.
          nullable: true
          maxLength: 200
        sku:
          type: string
          example: sku-789123
          description: The SKU for the item.
          nullable: true
          maxLength: 200
        product_url:
          type: string
          format: url
          example: https://example.com/items/gopro
          description: The product URL for the item.
          nullable: true
          maxLength: 2083
        image_url:
          type: string
          format: url
          example: https://example.com/images/items/gopro.png
          description: The URL for the image of the item.
          nullable: true
          maxLength: 2083
        categories:
          type: array
          description: |-
            A list of strings containing product categories for the item.
            Max length per item: 50.
          items:
            type: string
            maxLength: 50
          nullable: true
          maxItems: 100
        product_type:
          type: string
          description: The product type of the cart item.
          nullable: true
          example: physical
          enum:
            - physical
            - discount
            - shipping_fee
            - sales_tax
            - digital
            - gift_card
            - store_credit
            - surcharge
            - null
        seller_country:
          type: string
          description: >-
            The country code of the seller of the item. For some connectors, if
            this country code

            does not match the `country` then the transaction will be marked to
            Visa as a foreign

            seller transaction to meet Marketplace reporting requirements.
          example: US
          pattern: ^[A-Z]{2}$
          nullable: true
    PaymentOption:
      title: Payment option
      type: object
      description: An available payment option for a locale.
      x-tags:
        - Payment Option
      properties:
        type:
          type: string
          description: '`payment-option`.'
          example: payment-option
          enum:
            - payment-option
        method:
          description: The type of payment method that is available.
          type: string
          example: card
          enum:
            - affirm
            - afterpay
            - alipay
            - alipayhk
            - applepay
            - bacs
            - bancontact
            - banked
            - becs
            - bitpay
            - boleto
            - boost
            - card
            - cashapp
            - chaseorbital
            - checkout-session
            - clearpay
            - click-to-pay
            - dana
            - dcb
            - dlocal
            - ebanx
            - efecty
            - eps
            - everydaypay
            - gcash
            - gem
            - gemds
            - gift-card
            - giropay
            - givingblock
            - gocardless
            - googlepay
            - googlepay_pan_only
            - gopay
            - grabpay
            - id
            - ideal
            - kakaopay
            - kcp
            - klarna
            - latitude
            - latitudeds
            - laybuy
            - linepay
            - linkaja
            - maybankqrpay
            - mercadopago
            - multibanco
            - multipago
            - netbanking
            - network-token
            - oney_3x
            - oney_4x
            - oney_6x
            - oney_10x
            - oney_12x
            - ovo
            - oxxo
            - payid
            - paymaya
            - paypal
            - paypalpaylater
            - payto
            - venmo
            - pix
            - pse
            - rabbitlinepay
            - razorpay
            - scalapay
            - sepa
            - shopeepay
            - singteldash
            - smartpay
            - sofort
            - spei
            - stripedd
            - thaiqr
            - touchngo
            - truemoney
            - trustly
            - trustlyeurope
            - upi
            - vipps
            - waave
            - webpay
            - wechat
            - zippay
        icon_url:
          type: string
          nullable: true
          description: An icon to display for the payment option.
          example: https://cdn.gr4vy.app/card.svg
        mode:
          description: The mode to use with this payment option.
          type: string
          example: card
          enum:
            - card
            - redirect
            - applepay
            - googlepay
            - click-to-pay
            - checkout-session
        label:
          type: string
          description: >-
            A label that describes this payment option. This label is returned
            in the

            language defined by the `locale` query parameter. The label can be
            used

            to display a list of payment options to the buyer in their language.
          example: Pay by Card
        can_store_payment_method:
          type: boolean
          description: A flag to indicate if storing the payment method is supported.
        can_delay_capture:
          type: boolean
          description: A flag to indicate if delayed capture is supported.
        context:
          type: object
          description: |-
            Additional context specific to the payment option.
            This is currently only returned for Apple Pay and Google Pay.
          properties:
            gateway:
              type: string
              description: Gateway used for Google Pay payments.
            gateway_merchant_id:
              type: string
              description: Gateway merchant identifier used for Google Pay payments.
            merchant_name:
              type: string
              description: >-
                Display name of the merchant as registered with the digital
                wallet

                provider.
            supported_schemes:
              type: array
              description: Card schemes supported by the digital wallet provider.
              items:
                $ref: '#/components/schemas/PaymentOptionCardScheme'
            approval_ui:
              $ref: '#/components/schemas/PaymentOptionApprovalUI'
            required_fields:
              $ref: '#/components/schemas/RequiredFields'
    ErrorDetail:
      title: Error details
      description: Additional detail about the part of a request body that caused an issue.
      type: object
      x-tags:
        - Errors
      properties:
        location:
          type: string
          example: body
          description: The location where the error caused an issue.
          enum:
            - query
            - body
            - path
            - header
        type:
          type: string
          example: value_error.missing
          description: A unique identifier for the type of error that occurred.
        pointer:
          type: string
          example: /payment_method/number
          description: >-
            The exact item for which the validation did not succeed. This is a
            JSON

            pointer for request bodies, while for query, path, and header
            parameters

            it is the name of the parameter.
        message:
          type: string
          example: field required
          description: A human readable message for this error detail.
    PaymentOptionCardScheme:
      type: string
      title: The scheme of the transaction
    PaymentOptionApprovalUI:
      title: Payment Option Approval UI
      type: object
      description: >-
        Configuration for the approval interface that should be shown to the
        buyer.
      properties:
        height:
          type: string
          description: >-
            Height of the approval interface in either pixels or view height
            (vh).
          example: 300px
        width:
          type: string
          description: Width of the approval interface in either pixels or view width (vw).
          example: 300px
    RequiredFields:
      title: Required Fields
      type: object
      description: >-
        The fields that are required to process a transaction for this payment
        option.
      properties:
        first_name:
          type: boolean
          description: The first (given) name of the buyer.
          readOnly: true
        last_name:
          type: boolean
          description: The last (family) name of the buyer.
          readOnly: true
        email_address:
          type: boolean
          description: The email address of the buyer.
          readOnly: true
        phone_number:
          type: boolean
          description: The phone number of the buyer.
          readOnly: true
        address:
          type: object
          description: The billing address of the buyer.
          properties:
            city:
              type: boolean
              description: The city for the billing address.
              readOnly: true
            country:
              type: boolean
              description: The country for the billing address.
              readOnly: true
            postal_code:
              type: boolean
              description: The postal code or zip code for the billing address.
              readOnly: true
            state:
              type: boolean
              description: The state, county, or province for the billing address.
              readOnly: true
            house_number_or_name:
              type: boolean
              description: >-
                The house number or name for the billing address. Not all
                payment

                services use this field but some do.
              readOnly: true
            line1:
              type: boolean
              description: The first line of the billing address.
              readOnly: true
        tax_id:
          type: boolean
          description: The tax id code associated with the billing details.
          readOnly: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````