Rainforest Deposit Methods API
Resources for deposit method functions.
Resources for deposit method functions.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/rainforest-deposit-methods-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Authentication ACH Returns Deposit Methods API
version: 1.0.0
description: This resource is used for authentication actions
contact:
name: Rainforest
email: support@rainforestpay.com
url: https://rainforestpay.com
servers:
- url: https://api.sandbox.rainforestpay.com
description: Sandbox server
- url: https://api.rainforestpay.com
description: Production server
security:
- BearerAuth: []
tags:
- name: Deposit Methods
description: Resources for deposit method functions.
paths:
/v1/deposit_methods/{deposit_method_id}:
get:
operationId: get_deposit_method
summary: Get deposit method
description: Get deposit method details by the deposit method ID.
parameters:
- $ref: '#/paths/~1v1~1deposits/get/parameters/0'
- in: path
required: true
name: deposit_method_id
schema:
type: string
description: "The unique deposit method identifier. \n\nPrefix is \"dmt\" in production and \"sbx_dmt\" in sandbox."
examples:
production:
value: dmt_2DrDRpyAdp5MPUJnrJmoZcMmtfF
sandbox:
value: sbx_dmt_2DrDRpyAdp5MPUJnrJmoZcMmtfF
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
status:
$ref: '#/paths/~1v1~1deposits/get/responses/200/content/application~1json/schema/properties/status'
data:
$ref: '#/paths/~1v1~1deposit_methods/post/responses/200/content/application~1json/schema/properties/data'
errors:
$ref: '#/paths/~1v1~1deposits/get/responses/200/content/application~1json/schema/properties/errors'
'400':
$ref: '#/paths/~1v1~1deposits/get/responses/400'
'401':
$ref: '#/paths/~1v1~1deposits/get/responses/401'
'403':
$ref: '#/paths/~1v1~1deposits/get/responses/403'
'404':
$ref: '#/paths/~1v1~1deposits~1%7Bdeposit_id%7D/get/responses/404'
5XX:
$ref: '#/paths/~1v1~1deposits/get/responses/5XX'
tags:
- Deposit Methods
/v1/deposit_methods/{deposit_method_id}/payin:
post:
operationId: create_deposit_method_payin
summary: Create payin from deposit method
description: 'Create and process a payin using a payin configuration and a deposit method. The merchant status must be ACTIVE to create a payin.
The deposit method details (i.e bank account number and billing contact) will be duplicated to a payment method and a payin will process against the newly created payment method. Metadata, method metadata, and new billing contact details can be defined on the [Payin Config](ref:create_payin_config).
This endpoint requires Rainforest approval.'
parameters:
- in: header
name: Rainforest-Api-Version
schema:
type: string
default: '2024-10-16'
enum:
- '2024-10-16'
- $ref: '#/paths/~1v1~1deposit_methods~1%7Bdeposit_method_id%7D/get/parameters/1'
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
payin_config_id:
description: 'The unique payin config identifier. A payin must be configured prior to this request. See "Create a Payin Config" if a payin configuration has not been created yet.
Prefix is "cfg" in production and "sbx_cfg" in sandbox.'
type: string
example: cfg_2A4d6U0tMyovzTbVT1ktmRzdRaD
required:
- payin_config_id
example:
payin_config_id: cfg_2A4d6U0tMyovzTbVT1ktmRzdRaD
responses:
'200':
description: OK
content:
application/json:
schema:
properties:
status:
$ref: '#/paths/~1v1~1deposits/get/responses/200/content/application~1json/schema/properties/status'
data:
description: The payin details.
type: object
properties:
payin_id:
description: "The unique payin identifier. \n\nPrefix is \"pyi\" in production and \"sbx_pyi\" in sandbox."
type: string
example: pyi_2DrDKk5NIMbpuNGqm109SkpGDHh
payin_config_id:
$ref: '#/paths/~1v1~1deposit_methods~1%7Bdeposit_method_id%7D~1payin/post/responses/200/content/application~1json/schema/properties/data/properties/threeds_attempt/properties/payin_config_id'
readOnly: true
merchant_id:
description: "The unique merchant identifier. \n\nPrefix is \"mid\" in production and \"sbx_mid\" in sandbox."
type: string
example: mid_2DrDFJPutxE5AIbJSopAnqniEbr
payment_method_id:
description: "The unique payment method identifier. \n\nPrefix is \"mtd\" in production and \"sbx_mtd\" in sandbox."
type: string
example: mtd_2DrDRpyAdp5MPUJnrJmoZcMmtfF
payment_method_config_id:
readOnly: true
description: "The unique payment method config identifier. \n\nPrefix is \"pmc\" in production and \"sbx_pmc\" in sandbox."
type: string
example: pmc_2DrDPKzdQypRudLd8DhQKZX27dA
device_registration_id:
description: 'The unique device registration identifier.
Prefix is "dvc" in production and "sbx_dvc" in sandbox.'
type: string
example: dvc_2DrDKk5NIMbpuNGqm109SkpGDHh
threeds_attempt_id:
nullable: true
description: "The unique threeds attempt identifier. \n\nPrefix is \"tds\" in production and \"sbx_tds\" in sandbox."
type: string
example: tds_2DrDFJPutxE5AIbJSopAnqniEbr
idempotency_key:
$ref: '#/paths/~1v1~1deposit_method_configs/post/requestBody/content/application~1json/schema/properties/idempotency_key'
billing_type:
$ref: '#/paths/~1v1~1deposits~1%7Bdeposit_id%7D/get/responses/200/content/application~1json/schema/properties/data/properties/billing_type'
amount:
description: 'The amount of the payin, in minor units.
For example, 1000 is 10.00 USD.'
type: integer
example: 100
currency_code:
$ref: '#/paths/~1v1~1deposits~1%7Bdeposit_id%7D/get/responses/200/content/application~1json/schema/properties/data/properties/currency_code'
is_partially_authorized:
description: Boolean indicating if payin was authorized for a partial amount.
type: boolean
authorized_amount:
description: 'The amount of the payin that was authorized, in minor units.
For example, 1000 is 10.00 USD.'
type: integer
example: 100
readOnly: true
captured_amount:
description: 'The amount of the payin that was captured, in minor units.
For example, 1000 is 10.00 USD.'
type: integer
example: 100
readOnly: true
refundable_amount:
description: 'The amount of the payin that can still be refunded, in minor units.
For example, 1000 is 10.00 USD.'
type: integer
example: 100
readOnly: true
non_refundable_reason_code:
description: Why the payin is nonrefundable. Provided when refundable_amount is 0.
type: string
nullable: true
readOnly: true
enum:
- VOIDED
- FAILED
- FULLY_REFUNDED
- HAS_CHARGEBACKS
- HAS_ACH_RETURN
- IN_ACH_RETURN_WINDOW
- IN_SETTLEMENT_WINDOW
status:
description: The status of the payin.
type: string
enum:
- AUTHORIZED
- CANCELED
- CREATED
- FAILED
- IN_REVIEW
- PRESENTING
- PROCESSING
- RETURNED
- SUCCEEDED
example: PROCESSING
refusal_code:
description: 'The code explaining the reason for the refusal if the payin or refund failed to process.
This value will be `null` if the payin or refund succeeded.'
type: string
enum:
- null
- AUTHORIZATION_EXPIRED
- DECLINED
- DO_NOT_HONOR
- EXPIRED_CARD
- FRAUDULENT_CARD
- INCORRECT_PAYMENT_INFORMATION
- INSUFFICIENT_FUNDS
- INVALID_CARD_SECURITY_CODE
- INVALID_EXPIRATION_DATE
- INVALID_PIN
- LOST_CARD
- NO_CARD_NUMBER_ON_FILE_WITH_ISSUER
- NO_SUCH_CARD_ISSUER
- OVER_LIMIT
- PROCESSING_ERROR
- RESTRICTED_CARD_TYPE
- RETRY
- RETRY_WITH_THREEDS
- RISK_DECLINE
- STOLEN_CARD
- THREEDS_CHALLENGE_FAILED
- UNEXPECTED_PAYIN_TOKEN
- UNSUPPORTED_CARD_TYPE
readOnly: true
refusal_desc:
description: 'The description explaining the reason for the refusal if the payin or refund failed to process. This will be a human-readable value that may be presented to the end user.
This value will be `null` if the payin or refund succeeded.'
type: string
enum:
- null
- Authorization expired
- Declined
- Do not honor
- Expired card
- Fraudulent card
- Incorrect payment information
- Insufficient funds
- Invalid card security code
- Invalid expiration date
- Invalid PIN
- Lost card
- No card number on file with issuer
- No such card issuer
- Over limit
- Processing error
- Restricted card type
- Retry
- Retry with 3DS
- Risk decline
- Stolen card
- 3DS challenge failed
- Unexpected payin token
- Unsupported card type
readOnly: true
detailed_refusal_code:
description: 'The detailed refusal code that could be more descriptive than the refusal code. It may take up to 5 minutes for the detailed refusal code to populate after the payment fails.
This value will be `null` if the payment succeeded.'
type: string
enum:
- null
- AUTHORIZATION_EXPIRED
- DECLINED
- DO_NOT_HONOR
- EXPIRED_CARD
- FRAUDULENT_CARD
- INCORRECT_PAYMENT_INFORMATION
- INSUFFICIENT_FUNDS
- INVALID_CARD_SECURITY_CODE
- INVALID_EXPIRATION_DATE
- INVALID_PIN
- LOST_CARD
- NO_CARD_NUMBER_ON_FILE_WITH_ISSUER
- NO_SUCH_CARD_ISSUER
- OVER_LIMIT
- PROCESSING_ERROR
- RESTRICTED_CARD_TYPE
- RETRY
- RETRY_WITH_THREEDS
- RISK_DECLINE
- STOLEN_CARD
- THREEDS_CHALLENGE_FAILED
- UNEXPECTED_PAYIN_TOKEN
- UNSUPPORTED_CARD_TYPE
readOnly: true
detailed_refusal_desc:
description: 'The description explaining the detailed refusal reason if the payin or refund failed to process. This will be a human-readable value that may be presented to the end user.
This value will be `null` if the payment succeeded.'
type: string
enum:
- null
- Authorization expired
- Declined
- Do not honor
- Expired card
- Fraudulent card
- Incorrect payment information
- Insufficient funds
- Invalid card security code
- Invalid expiration date
- Invalid PIN
- Lost card
- No card number on file with issuer
- No such card issuer
- Over limit
- Processing error
- Restricted card type
- Retry
- Retry with 3DS
- Risk decline
- Stolen card
- 3DS challenge failed
- Unexpected payin token
- Unsupported card type
readOnly: true
auth_code:
description: The authorization code if the payin was approved.
type: string
example: '12345'
avs_result_code:
description: The address verification service result code.
type: string
example: Y
cvc_result_code:
description: The card verification code result code.
type: string
example: M
amount_splits:
description: 'Represents how the payin amount was allocated to the originating merchant, the platform and one or more other merchants.<br/><br/>
A `PLATFORM` split defines a platform fee on the payin.<br/><br/>
A `MERCHANT` split allocates a portion of the payin to the specified merchant.<br/><br/>
Any remaining amount not specified by the amount splits was allocated to the originating merchant associated with the payin.'
type: array
items:
type: object
properties:
amount:
description: 'The amount allocated, in minor units.
For example, 1000 is 10.00 USD.'
type: integer
example: 3
currency_code:
$ref: '#/paths/~1v1~1deposits~1%7Bdeposit_id%7D/get/responses/200/content/application~1json/schema/properties/data/properties/currency_code'
type:
description: 'The type of receiver for this split.<br/><br/>
`PLATFORM` allocates the split amount to the platform. `MERCHANT` allocates the split amount to the merchant specified by merchant_id.'
type: string
enum:
- PLATFORM
- MERCHANT
merchant_id:
description: 'Required when type is `MERCHANT`.<br/><br/>
The unique identifier of the merchant receiving this split. The merchant must be fully onboarded and in an ACTIVE status.<br/><br/>
Must not match the merchant_id of the originating merchant on the payin. Must not be duplicated within the same amount_splits array. Not valid when object type is `PLATFORM`.<br/><br/>
Prefix: mid in production, sbx_mid in sandbox.'
type: string
example: mid_abc123
platform:
description: The minimal representation of the platform receiving this split. Present when type is `PLATFORM`.
type: object
properties:
platform_id:
$ref: '#/paths/~1v1~1deposit_method_configs/post/requestBody/content/application~1json/schema/properties/platform_id'
readOnly: true
name:
readOnly: true
description: The platform name.
type: string
example: Platform Name
merchant:
description: The minimal representation of the merchant receiving this split. Present when type is `MERCHANT`.
$ref: '#/paths/~1v1~1deposits~1%7Bdeposit_id%7D~1activity/get/responses/200/content/application~1json/schema/properties/data/properties/activities/items/properties/merchant'
required:
- amount
- currency_code
- type
example:
- amount: 3
currency_code: USD
type: PLATFORM
merchant_fees:
description: The amount of the payin billed to the merchant.
type: object
properties:
total_amount:
description: The total amount of fees billed to the merchant.
type: object
properties:
amount:
description: 'The amount, in minor units.
For example, 1000 is 10.00 USD.'
type: integer
minimum: 0
currency_code:
$ref: '#/paths/~1v1~1deposits~1%7Bdeposit_id%7D/get/responses/200/content/application~1json/schema/properties/data/properties/currency_code'
example:
total_amount:
amount: 2
currency_code: USD
method_type:
description: The type of payment method.
type: string
enum:
- CARD
- APPLE_PAY
- ACH
- PLAID_ACH
- PAYPAL_WALLET
- VENMO
- PAYPAL_PAYLATER
card:
description: Card payment method details.
type: object
properties:
type:
description: Card type.
type: string
enum:
- CREDIT
- DEBIT
- PREPAID
brand:
description: Card brand.
type: string
example: MASTERCARD
enum:
- VISA
- MASTERCARD
- DISCOVER
- AMERICAN_EXPRESS
- OTHER
brand_desc:
description: Card brand in a friendly language.
type: string
example: Mastercard
enum:
- Visa
- Mastercard
- Discover
- American Express
- Other
last_4:
description: Last 4 digits of the card number.
type: string
example: '4444'
exp_month:
description: The card expiration month.
type: integer
example: 12
maximum: 12
minimum: 1
exp_year:
description: The card expiration year, in 4-digits.
type: integer
example: 2027
maximum: 2099
minimum: 2000
apple_pay:
description: Apple Pay payment method details.
type: object
properties:
type:
$ref: '#/paths/~1v1~1deposit_methods~1%7Bdeposit_method_id%7D~1payin/post/responses/200/content/application~1json/schema/properties/data/properties/card/properties/type'
brand:
$ref: '#/paths/~1v1~1deposit_methods~1%7Bdeposit_method_id%7D~1payin/post/responses/200/content/application~1json/schema/properties/data/properties/card/properties/brand'
brand_desc:
$ref: '#/paths/~1v1~1deposit_methods~1%7Bdeposit_method_id%7D~1payin/post/responses/200/content/application~1json/schema/properties/data/properties/card/properties/brand_desc'
description:
description: A human-readable description of the payment method provided by Apple.
type: string
example: Visa 1234
ach:
description: ACH payment method details.
type: object
properties:
account_number_last_4:
description: The last 4 digits of the account number.
type: string
example: '5678'
routing_number:
$ref: '#/paths/~1v1~1deposit_methods/post/requestBody/content/application~1json/schema/properties/ach/properties/routing_number'
bank_name:
description: The bank name.
type: string
example: Wells Fargo Bank
account_type:
$ref: '#/paths/~1v1~1deposit_methods/post/requestBody/content/application~1json/schema/properties/ach/properties/account_type'
account_holder_type:
$ref: '#/paths/~1v1~1deposit_methods/post/requestBody/content/application~1json/schema/properties/ach/properties/account_holder_type'
plaid_ach:
$ref: '#/paths/~1v1~1deposit_methods/post/responses/200/content/application~1json/schema/properties/data/properties/plaid_ach'
description: ACH payment method details from Plaid.
paypal_wallet:
description: PayPal Wallet payment method. Required for method_type PAYPAL_WALLET.
type: object
properties:
email:
description: The email address of the PayPal user
type: string
example: janesmith@example.com
venmo:
description: Venmo payment method. Required for method_type VENMO.
type: object
properties:
email:
description: The email address of the Venmo user
type: string
example: janesmith@example.com
paypal_paylater:
description: PayPal PayLater payment method. Required for method_type PAYPAL_PAYLATER.
type: object
properties:
email:
description: The email address of the PayPal user
type: string
example: janesmith@example.com
billing_contact:
$ref: '#/paths/~1v1~1deposit_methods/post/requestBody/content/application~1json/schema/properties/billing_contact'
device_data:
description: Device data
type: object
properties:
application_identifier:
description: Identifies the application that the device used on the payin or payment method as described in ISO/IEC 7816-5.
type: string
example: A0000000031010
application_label:
description: The human-readable name associated with the application identifier according to ISO/IEC 7816-5.
type: string
example: VISA CREDIT
application_preferred_name:
description: The human-readable name associated with the application identifier in the cardholder’s local language.
type: string
example: VISA CREDIT
transaction_status_information:
description: A collection of indicators that the device will set to show what processing steps have been performed on the current transaction (e.g. Cardholder Verification, Data Authentication).
type: string
example: E800
application_pan_sequence_number:
description: Identifies and differentiates cards with the same PAN.
type: string
example: 1
entry_type:
description: The entry type used on the device.
type: string
example: TAPPED
enum:
- TAPPED
- SWIPED
- DIPPED
- KEYED
- INVALID
- UNKNOWN
verification_type:
description: 'The verification type for verifying the user processing the payment is the cardholder.
Types:
* `SIGNATURE` - The user provided a signature on the device.
* `OFFLINE_PIN` - The user entered their pin on the device and it was verified by the EMV chip card.
* `ONLINE_PIN` - The user entered their pin on the device and it was verified by the card issuer.
* `OFFLINE_PIN_SIGNATURE` - The user entered their PIN and provided a signature on the device.
* `NONE` - The user could not be verified.'
type: string
enum:
- SIGNATURE
- OFFLINE_PIN
- ONLINE_PIN
- OFFLINE_PIN_SIGNATURE
- NONE
signature:
description: A signature image, formatted as a base64 encoded data URI
type: string
readOnly: true
method_metadata:
$ref: '#/paths/~1v1~1deposit_method_configs/post/requestBody/content/application~1json/schema/properties/metadata'
metadata:
$ref: '#/paths/~1v1~1deposit_methods/post/responses/200/content/application~1json/schema/properties/data/properties/metadata'
refunds:
type: array
items:
description: The refund details.
type: object
properties:
refund_id:
description: "The unique refund identifier. \n\nPrefix is \"rfd\" in production and \"sbx_rfd\" in sandbox."
type: string
example: rfd_2DrDU206kzAhclm1WrZbuwDERRk
payin_id:
description: "The unique payin identifier that was voided or refunded. \n\nPrefix is \"pyi\" in production and \"sbx_pyi\" in sandbox."
type: string
example: pyi_2DrDKk5NIMbpuNGqm109SkpGDHh
merchant_id:
$ref: '#/paths/~1v1~1deposit_methods~1%7Bdeposit_method_id%7D~1payin/post/responses/200/content/application~1json/schema/properties/data/properties/merchant_id'
billing_type:
$ref: '#/paths/~1v1~1deposits~1%7Bdeposit_id%7D/get/responses/200/content/application~1json/schema/properties/data/properties/billing_type'
amount:
description: 'The amount refunded, in minor units.
For example, 1000 is 10.00 USD.'
type: integer
example: 100
currency_code:
$ref: '#/paths/~1v1~1deposits~1%7Bdeposit_id%7D/get/responses/200/content/application~1json/schema/properties/data/properties/currency_code'
merchant_fees:
description: The refund fee b
# --- truncated at 32 KB (94 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rainforest/refs/heads/main/openapi/rainforest-deposit-methods-api-openapi.yml