# Post float cash-in (Pismo account ID) Enable users to submit float cash-in payments to the Pismo platform. It supports posting credits to an account, as well as facilitating fund transfers between accounts. To post a credit, you must provide a valid `processing_code` for the credit operation and the recipient's `external_account_id`. See the Examples drop-down menu for a sample payload. For more information about payments operations, see [Corporate Banking Launch Reference](doc:corporate-banking-launch-reference). NOTES: - This endpoint requires an account-specific access token. Getting an account token requires you to call the [Get OpenID access token endpoint](https://developers.pismo.io/pismo-docs/reference/post-passport-v1-oauth2-token-1) with an external account ID. Tokens can expire quickly, which can result in an Unauthorized message. Each payment created generates the following events: - [Float payment status change](https://developers.pismo.io/events/docs/corporate-float-payment-status-change-1) - [Authorization created](https://developers.pismo.io/events/docs/authorization-authorization-event-1) - [Account balance changed](https://developers.pismo.io/events/docs/account-balances-balance-change-1). - [Account balance changed (Availables)](https://developers.pismo.io/events/docs/availables-change-available-1) - [Transaction created](https://developers.pismo.io/events/docs/transaction-creation-1). - [Accounting entry created](https://developers.pismo.io/events/docs/accounting-entry-creation-1) - If flex controls are configured, the event is triggered: - [Flex control evaluated](https://developers.pismo.io/events/docs/rules-evaluation-requested-1) See [Data and reporting](doc:data-reporting-overview) for more information about events and setting up event notifications. # OpenAPI definition ```json { "openapi": "3.0.0", "info": { "title": "Banking - Transaction banking", "version": "0.9.0", "description": "Transaction banking API", "contact": { "name": "API Support", "url": "https://developers.pismo.io/support/" }, "license": { "name": "Copyright Pismo" } }, "servers": [ { "url": "https://sandbox.pismolabs.io", "description": "Sandbox API server for testing" } ], "security": [ { "BearerAuth": [] } ], "tags": [ { "name": "Payments (Pismo account ID)", "description": "Payment endpoints" } ], "components": { "schemas": { "CreditProcessingCode": { "type": "string", "description": "Processing code for posting credit transactions. The code must have a credit balance impact. You can retrieve a list of the organization processing codes using [List processing codes](https://developers.pismo.io/pismo-docs/reference/get-processing-code-by-tenant).", "maxLength": 6, "example": "220035" }, "Currency2": { "type": "string", "description": "3-letter, ISO-4217 standard alphabetic code for the currency used in the total and float amounts.", "maxLength": 3, "example": "USD" }, "DeferredPaymentStatus": { "type": "string", "description": "Status of the deferred payment\n", "enum": [ "CREATED", "UNSETTLED", "SETTLED", "FAILED" ], "example": "CREATED" }, "ErrorCode": { "description": "Error code\n`minLength: 1`\n`maxLength: 12`\n", "type": "string", "minLength": 1, "maxLength": 12, "example": "WPMT0017" }, "ErrorMessage": { "description": "Error message\n`minLength: 1`\n`maxLength: 1000`\n", "type": "string", "minLength": 1, "maxLength": 1000, "example": "Invalid JSON payload received: Error unmarshalling request" }, "ErrorResponse": { "type": "object", "properties": { "code": { "$ref": "#/components/schemas/ErrorCode" }, "message": { "$ref": "#/components/schemas/ErrorMessage" } } }, "ExternalAccountId2": { "type": "string", "description": "External ID of the account to which the transaction is posted.", "maxLength": 60, "minLength": 1, "example": "289", "pattern": "^[a-zA-Z0-9-]+$" }, "FloatAmount": { "type": "number", "format": "float", "description": "Part of the total amount that is deferred to settle on the `settlement_date`. If it is equal to or greater than `total_amount`, a bad request error is returned.\n", "maximum": 100000000000000000, "example": 300.52, "minimum": 0.01 }, "FloatPaymentRequest": { "title": "FloatPaymentRequest", "type": "object", "required": [ "external_account_id", "currency", "total_amount", "float_amount", "settlement_date", "tracking_id" ], "properties": { "external_account_id": { "$ref": "#/components/schemas/ExternalAccountId2" }, "currency": { "$ref": "#/components/schemas/Currency2" }, "total_amount": { "$ref": "#/components/schemas/TransactionAmount" }, "float_amount": { "$ref": "#/components/schemas/FloatAmount" }, "tracking_id": { "$ref": "#/components/schemas/TrackingID" }, "settlement_date": { "$ref": "#/components/schemas/SettlementDate" }, "processing_code": { "$ref": "#/components/schemas/CreditProcessingCode" }, "description": { "$ref": "#/components/schemas/TransactionDescription" }, "metadata": { "$ref": "#/components/schemas/FloatMetadata" } } }, "FloatPaymentResponse": { "title": "FloatPaymentResponse", "type": "object", "properties": { "tracking_id": { "$ref": "#/components/schemas/TrackingID" }, "status": { "$ref": "#/components/schemas/DeferredPaymentStatus" } } }, "FloatMetadata": { "type": "object", "description": "Key-value pairs containing data intended for storage in the Pismo system.
\nNOTES:\n - The `metadata` includes a `corporate_metadata` object with the following subfields:\n - `credit_external_account_id`\n - `authorization_type`\n - `business_date`\n - `float_amount`\n - `settlement_date`\n - The `corporate_metadata` field must be an object. A type mismatch results in an error as mapped in the responses section.\n" }, "SettlementDate": { "type": "string", "format": "date", "description": "Future date on which the `float_amount` is settled. Corresponds to the cycle closing date relative to the payment date.
\nNotes:\n - The settlement date is in ISO 8601 format.\n - It's similar to the `business_date` attribute for regular payment operations.\n", "example": "2023-03-09" }, "TrackingID": { "type": "string", "description": "A unique payment tracking number provided by the client. If an existing `tracking_id` already exists in the system, the API returns a `409` error.\n\nThis field is:\n - Unique within the Organization.\n - Immutable — It can't be updated.\n - Not recyclable — You can't reuse a `tracking_id`.\n", "minLength": 1, "maxLength": 43, "example": "0a50c88a-ade8-4bcc-a639-9a0b0f11e244" }, "TransactionAmount": { "type": "number", "format": "float", "description": "Transaction amount", "maximum": 100000000000000000, "example": 1000.52, "minimum": 0.01 }, "TransactionDescription": { "type": "string", "description": "A brief description that appears on the bank statement to help identify a particular transaction.", "example": "ACME Inc. - Invoice 2938", "maxLength": 100 } }, "responses": { "403Forbidden": { "description": "The request has been lost" }, "500InternalServer": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Generic internal error": { "value": { "code": "ECMN9999", "message": "Internal error" } } } } } } }, "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } } }, "paths": { "/corporate/v1/corporate-float-cashin": { "post": { "summary": "Post float cash-in (Pismo account ID)", "description": "Enable users to submit float cash-in payments to the Pismo platform. It supports posting credits to an account, as well as facilitating fund transfers between accounts.\n\nTo post a credit, you must provide a valid `processing_code` for the credit operation and the recipient's `external_account_id`.\n\nSee the Examples drop-down menu for a sample payload.\n\nFor more information about payments operations, see [Corporate Banking Launch Reference](https://developers.pismo.io/pismo-docs/docs/corporate-banking-launch-reference).\n\nNOTES:\n - This endpoint requires an account-specific access token. Getting an account token requires you to call the [Get OpenID access token endpoint](https://developers.pismo.io/pismo-docs/reference/post-passport-v1-oauth2-token-1) with an external account ID. Tokens can expire quickly, which can result in an Unauthorized message.\n\nEach payment created generates the following events:\n- [Float payment status change](https://developers.pismo.io/events/docs/corporate-float-payment-status-change-1)\n- [Authorization created](https://developers.pismo.io/events/docs/authorization-authorization-event-1)\n- [Account balance changed](https://developers.pismo.io/events/docs/account-balances-balance-change-1).\n- [Account balance changed (Availables)](https://developers.pismo.io/events/docs/availables-change-available-1)\n- [Transaction created](https://developers.pismo.io/events/docs/transaction-creation-1).\n- [Accounting entry created](https://developers.pismo.io/events/docs/accounting-entry-creation-1)\n- If flex controls are configured, the event is triggered:\n - [Flex control evaluated](https://developers.pismo.io/events/docs/rules-evaluation-requested-1)\n\nSee [Data and reporting](https://developers.pismo.io/pismo-docs/docs/data-reporting-overview) for more information about events and setting up event notifications.", "parameters": [], "operationId": "post-corporate-float-cash-in", "tags": [ "Payments (Pismo account ID)" ], "requestBody": { "description": "Request body", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FloatPaymentRequest" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FloatPaymentResponse" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Invalid JSON payload": { "value": { "code": "WCFC0001", "message": "Invalid JSON payload received: Error unmarshalling request" } }, "Processing code exceed size": { "value": { "code": "WCFC0002", "message": "processing_code must be a maximum of 6 characters in length" } }, "External Account ID exceed size": { "value": { "code": "WCFC0002", "message": "external_account_id must be a maximum of 60 characters in length" } }, "External Account ID required": { "value": { "code": "WCFC0002", "message": "external_account_id is a required field" } }, "Float Amount value zero": { "value": { "code": "WCFC0002", "message": "value must be greater than 0" } }, "Float Amount value exceed": { "value": { "code": "WCFC0002", "message": "value must be 999,999,999,999.99 or less" } }, "Float Amount value required": { "value": { "code": "WCFC0002", "message": "value is a required field" } }, "Total Amount value zero": { "value": { "code": "WCFC0002", "message": "value must be greater than 0" } }, "Total Amount value exceed": { "value": { "code": "WCFC0002", "message": "value must be 999,999,999,999.99 or less" } }, "Total Amount value required": { "value": { "code": "WCFC0002", "message": "value is a required field" } }, "Tracking ID exceed size": { "value": { "code": "WCFC0002", "message": "tracking_id must be a maximum of 36 characters in length" } }, "External account ID contains characters not permitted": { "value": { "code": "WCFC0002", "message": "external_account_id contains characters not permitted: [characters]" } }, "Tracking ID required": { "value": { "code": "WCFC0002", "message": "tracking_id is a required field" } }, "Currency required": { "value": { "code": "WCFC0002", "message": "currency is a required field" } }, "Amount has invalid decimal places for currency": { "value": { "code": "WCFC0002", "message": "The number of decimal places is not compatible with the specified currency" } }, "Invalid amount values": { "value": { "code": "WCFC0003", "message": "Invalid values for float_amount and total_amount" } }, "Currency mismatch": { "description": "At the moment, the platform can only accept the currency that is configured for the account", "value": { "code": "WCFC0005", "message": "Cannot perform conversion between account currency and provided currency" } }, "Holiday error": { "value": { "code": "WCFC0006", "message": "Cannot post transaction on holidays" } }, "Weekend error": { "value": { "code": "WCFC0007", "message": "Cannot post transaction on weekends" } }, "Invalid credit processing code": { "value": { "code": "WCFC0008", "message": "Invalid credit processing code" } }, "Invalid account status": { "description": "This error occurs when the account is in an invalid state, an example is when the account cannot be credited or debited", "value": { "code": "WCFC0009", "message": "Invalid account status" } }, "Insufficient funds": { "value": { "code": "WCFC0010", "message": "Insufficient funds" } }, "Account closed error": { "description": "This error occurs when the client sends a force post payment and the account has been closed", "value": { "code": "WCFC0011", "message": "Action not permitted on a closed account" } }, "Orgs operation not found or parameterized": { "value": { "code": "WCFC0012", "message": "Orgs operations not found or parameters are incorrect or invalid" } }, "Invalid account program type": { "value": { "code": "WCFC0013", "message": "The account's program type is invalid" } }, "Invalid settlement date": { "value": { "code": "WCFC0014", "message": "settlement_date must be after the current business date" } }, "Invalid currency": { "description": "The currency must be specified in the ISO 4217 3-letter code", "value": { "code": "WCFC0016", "message": "Invalid currency" } }, "Corporate Metadata must be an object": { "value": { "code": "WCMN0002", "message": "corporate_metadata is reserved and must be an object" } }, "Unrecognized account ID type": { "value": { "code": "WCAC0010", "message": "Token contains an unrecognized account ID type" } }, "Transaction using this tracking ID in progress": { "description": "This error occurs when multiple payment requests with the same `tracking_id` are made simultaneously.", "value": { "code": "WCFC0022", "message": "transaction using this tracking_id is in progress, please try again later" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Unauthorized account": { "value": { "code": "WCAC0001", "message": "Account not authorized" } } } } } }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Tracking ID already in use": { "description": "This error occurs when the client sends a duplicate tracking ID for the payment", "value": { "code": "WCFC0004", "message": "tracking_id is already in use" } }, "Invalid time zone": { "value": { "code": "WCFC0015", "message": "Division {id} is set with an invalid timezone ({timezone})" } } } } } }, "500": { "$ref": "#/components/responses/500InternalServer" } } } } } } ```