Payment methods

Create transfer

Create a transfer operation between two accounts on the Pismo platform.

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 transfer endpoint.
  • Set validation_rules in the From object 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 guide 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/transfers

Request

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

Request body

amountnumber float required

Credit or debit amount.

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.

Example request

{
  "amount": 100.23,
  "from": {
    "account_id": 8675309,
    "currency": "BRL",
    "processing_code": "219803",
    "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"
      }
    }
  },
  "to": {
    "account_id": 8675309,
    "beneficiary_id": "2c298321-bc21-4039-9c45-780cc6d4ec46",
    "currency": "BRL",
    "processing_code": "219803",
    "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": {
      "associated_ids": {
        "payment_id": "319d00f5-48de-4c71-ad47-40b1e9c4e37f",
        "origin_id": "CUSTOM_ORIGIN"
      }
    }
  },
  "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"
}

Response

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

tracking_idstring

Unique tracking ID for this operation.

response_codestring

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.

denial_codestring

Denial code.

Example response

{
  "tracking_id": "0b6995e5-b417-9be4-92b3-3677f4440ebe",
  "response_code": "57",
  "denial_code": "DAL",
  "from": {
    "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."
      }
    ]
  },
  "to": {
    "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.