Rainforest Deposit Methods API
Resources for deposit method functions.
Resources for deposit method functions.
openapi: 3.1.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