Payment methods

Create cash-in or cash-out

Create a cash-in or cash-out payment operation. The type of operation depends on the processing code (credit for cash-in and debit for cash-out).

  • For cash-in operations, the processing code must be of credit type. When creating a processing code, ensure that the balance_impact is 1 (credit).
  • For cash-out operations, the processing code must be of debit type. When creating a processing code, ensure that the balance_impact is -1 (debit).

With this endpoint, you have the following additional options.

  • Specify the authentication method and details.
  • Set pre_authorization to true for operations that require additional confirmation and then call the Confirm pre-authorized cash-in or cash-out endpoint.
  • Set validation_rules to control the rules in this flow, such as disabling a rule, changing the response code and denial code, and forcing a rule.

Refer to the Payment methods and Payment configurations guides for additional information.

This endpoint generates a Platform authorization created event.

Note: This is a PCI endpoint, use the https://gw-pci.pismolabs.io environment.

post/payment-methods/v2/payments

Request

  • Base URL
    https://sandbox.pismolabs.io
  • URL
    https://sandbox.pismolabs.io/payment-methods/v2/payments
  • Auth
    HTTP bearer

Request body

account_idinteger required

Pismo account ID.

beneficiary_idstring

UUID for the beneficiary related to the account.

amountnumber float required

Credit or debit amount.

currency_codestring

ISO-4217 alphabetic or numeric (3 characters) authorization currency code. For example, either BRL or 986 for Brazilian real. If you don't provide the currency, the platform uses the currency registered in the Pismo hierarchy (first looking at the account, then program, and then Org levels).

processing_codestring required

Unique processing code that identifies the credit or debit operation.

tracking_idstring required

Unique tracking ID for this operation.

descriptionstring

Optional text that describes the operation.

metadataMetadata

This optional user-defined key-value object field can be used with external operations to provide additional context or supplementary custom information for the operation.

The Pismo platform does not perform any validation or processing on this field but passes this object to the acquirer in transactions involving calls to the acquirer and sends it in the events related to the stream of data produced at the end of the request.

Note: This field must not be used to send Personally Identifiable Information (PII), Payment Card Industry (PCI) data, or any sensitive/regulated information. Metadata fields are intended for operational, non-sensitive data only. For sensitive data, use the specific parameters designed for that purpose. For more information, refer to Get started with Pismo APIs.

payment_datetimestring date-time

Effective payment date in the UTC-0 RFC3339 format, which includes milliseconds (yyyy-MM-ddThh:mm:ss.SSSZ). Payments can be backdated but future dates are not allowed.

pre_authorizationboolean

If set to true, this flag indicates that the operation is pre-authorized and requires additional confirmation.

validation_rulesValidationRules

Validation rules performed in the flow. Each key is a rule name (such as ACCOUNT_STATUS or LEDGER) and the value is its configuration.

Example request

{
  "account_id": 8675309,
  "beneficiary_id": "2c298321-bc21-4039-9c45-780cc6d4ec46",
  "amount": 100.23,
  "currency_code": "BRL",
  "processing_code": "219803",
  "tracking_id": "0b6995e5-b417-9be4-92b3-3677f4440ebe",
  "authentication": {
    "method": "otp",
    "parameters": {
      "device_id": "abc",
      "token": "123456",
      "user_id": "123456789"
    }
  },
  "description": "Custom purchase.",
  "metadata": {
    "any-key": "any-value"
  },
  "payment_datetime": "2023-01-02T07:35:05.125Z",
  "validation_rules": {
    "ACCOUNT_STATUS": {
      "disable": false,
      "force": false,
      "denial_reasons": {
        "ACCOUNT_STATUS_NOT_PERMITTED": {
          "response_code": "57",
          "denial_code": "DAL"
        }
      }
    },
    "LEDGER": {
      "denial_reasons": {
        "LEDGER_INSUFFICIENT_FUNDS": {
          "response_code": "51",
          "denial_code": "DAL"
        },
        "LEDGER_NOT_ALLOWED_OPERATION": {
          "response_code": "57",
          "denial_code": "DAL"
        }
      }
    }
  },
  "authorization_validations": {
    "is_device_registered": true,
    "associated_ids": {
      "payment_id": "319d00f5-48de-4c71-ad47-40b1e9c4e37f",
      "origin_id": "CUSTOM_ORIGIN"
    }
  },
  "original_authorization": {
    "id": 101,
    "type": "NETWORK"
  }
}

Response

Request was processed successfully, existing authorization with the corresponding tracking_id returned.

amountnumber float required

Credit or debit amount.

authorization_idinteger required

Unique Pismo-generated ID of the authorization created for this request. Returned on 200 and 201 responses, including idempotent replays.

response_codestring required

Alphanumeric two-character standard card network response code or an alternative custom response code, which provides the precise reason for the success or denial of the operation by the card network, platform, or anti-fraud solution.

tracking_idstring required

Unique tracking ID for this operation.

account_idinteger

Pismo account ID.

denial_codestring

Denial code.

Example response

{
  "authorization_id": 123,
  "tracking_id": "634c43f2-5b7e-4a80-81c7-e6a7d5edc7fe",
  "account_id": 456,
  "amount": 1000,
  "response_code": "00",
  "denial_code": "LE003",
  "validation_results": [
    {
      "name": "ACCOUNT",
      "status": "APPROVED",
      "reason": "ACCOUNT_FOUND",
      "description": "Account was found.",
      "additional_data": {
        "account_id": 2417
      }
    },
    {
      "name": "ACCEPTANCE",
      "status": "APPROVED",
      "reason": "ACCEPTANCE_FOUND",
      "description": "Payment methods acceptances were found."
    },
    {
      "name": "CONFIG",
      "status": "APPROVED",
      "reason": "CONFIG_FOUND",
      "description": "Payment methods configuration was found."
    },
    {
      "name": "PAYMENT_DATE",
      "status": "SKIPPED",
      "reason": "PAYMENT_DATE_SKIPPED",
      "description": "Payment date validation was skipped.",
      "additional_data": {
        "cause": "Payment date not present."
      }
    },
    {
      "name": "PLATFORM_AUTHENTICATION",
      "status": "APPROVED",
      "reason": "PLATFORM_AUTHENTICATION_SUCCESSFUL",
      "description": "Request was authenticated successfully."
    },
    {
      "name": "ACCOUNT_ID",
      "status": "APPROVED",
      "reason": "ACCOUNT_ID_PERMITTED",
      "description": "Account ID is permitted.",
      "additional_data": {
        "document_number": "60XXXXXXXXX19",
        "external_id": "",
        "name": "Marcelito"
      }
    },
    {
      "name": "PROCESSING_CODE",
      "status": "APPROVED",
      "reason": "PROCESSING_CODE_FOUND",
      "description": "Processing code was found."
    },
    {
      "name": "PROCESSING_CODE_TYPE",
      "status": "APPROVED",
      "reason": "PROCESSING_CODE_TYPE_VALID",
      "description": "Processing code has a valid balance impact type."
    },
    {
      "name": "ACCOUNT_LIMITS",
      "status": "APPROVED",
      "reason": "ACCOUNT_LIMITS_FOUND",
      "description": "Account limits were found.",
      "additional_data": {
        "available_credit_limit": 746847632710983.1,
        "available_savings_account_limit": 93477.42,
        "available_total_installment_credit": -226,
        "available_withdrawal_credit": -175,
        "total_credit_limit": 1000,
        "total_installment_credit_limit": 200,
        "withdrawal_credit_limit": 300
      }
    },
    {
      "name": "ACCOUNT_STATUS",
      "status": "APPROVED",
      "reason": "ACCOUNT_STATUS_PERMITTED",
      "description": "Account status is permitted."
    },
    {
      "name": "PROGRAM",
      "status": "APPROVED",
      "reason": "PROGRAM_FOUND",
      "description": "Program was found.",
      "additional_data": {
        "program_type": "PRE-PAGO"
      }
    },
    {
      "name": "BALANCES_CONFIG",
      "status": "APPROVED",
      "reason": "BALANCES_CONFIG_FOUND",
      "description": "Balances configuration was found.",
      "additional_data": {
        "amount": "contract_amount",
        "amount_consider": "principal_amount",
        "consider": [
          "AvailableCreditLimit",
          "OverLimit"
        ],
        "impact": [
          "AvailableCreditLimit"
        ],
        "reset_limit": "last_installment"
      }
    },
    {
      "name": "CURRENCY",
      "status": "APPROVED",
      "reason": "CURRENCY_FOUND",
      "description": "Currency was found.",
      "additional_data": {
        "code": "BRL",
        "numeric_code": "986"
      }
    },
    {
      "name": "RATES",
      "status": "APPROVED",
      "reason": "RATES_APPROVED",
      "description": "Rates calculation was performed.",
      "additional_data": {
        "conversion": {
          "conversion_rate": 0,
          "destination": "986",
          "exchange_rate": 1,
          "origin": "986",
          "spread": 0
        }
      }
    },
    {
      "name": "FLEX_CONTROLS",
      "status": "APPROVED",
      "reason": "FLEX_CONTROLS_APPROVED",
      "description": "Authorization passed flex control evaluation.",
      "additional_data": {
        "dry_run": false,
        "evaluated_controls": [
          {
            "id": "bb975c75-ae31-48e8-ac0b-57c677fdd0e4",
            "name": "Purchase 1 Month credit card",
            "evaluation_result": true,
            "deny_code": "MAX_VALUE_P1M",
            "response_code": "63",
            "max_limit": 200000,
            "accumulated_limit": 135127,
            "available_limit": 64873
          }
        ]
      }
    },
    {
      "name": "LEDGER",
      "status": "APPROVED",
      "reason": "LEDGER_APPROVED",
      "description": "Ledger was impacted successfully.",
      "additional_data": {
        "dry_run": false,
        "validation_results": null,
        "account_id": 9999,
        "available_amounts": {
          "validation_status": "APPROVED",
          "details": {
            "result": {
              "available_credit_limit": 746847527710892.1,
              "available_installment_limit": -226,
              "available_savings_account_limit": 93477.42,
              "available_withdraw_limit": -175,
              "held_funds": 91.25,
              "additional_funds": 0,
              "overlimit": 2000000,
              "total_overdraft_limit": 0
            }
          }
        }
      },
      "ledger_operation_status": {
        "validation_status": "APPROVED"
      }
    },
    {
      "name": "AUTHORIZATION",
      "status": "APPROVED",
      "reason": "AUTHORIZATION_CREATED",
      "description": "Authorization was created successfully."
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.