Is there a way to credit (or send the money to) a different account that isn't mine (the default method), BUT I do have the CustomerProfileId and CustomerPaymentId to send the funds to so it's not just any account?
Solved! Go to Solution.
07-11-2018 11:08 AM
Hi SilkySully,
Expanded Credit Capabilities will allow you to credit any full card number for any amount, regardless of any of your previous transaction history, which is the risk in enabling it within your account as anyone who can access your account or integration source to process a credit could potentially credit themselves with any amount to their own card or another card fraudulently.
We would only recommend enabling this on an as needed basis and then disabling it.
Please contact our support staff via the "Contact Us" or "Live Help" links located that the top of your account upon login for further assistance with understanding your liability in enabling this feature.
Thank you,
Elaine
07-20-2018 11:49 AM
There is not a way to use customer profiles from one Authorize.Net in a different Authorize.Net account. Let me know if that is not what you mean when you said different account.
If you have the payment details (card number, expiration date, etc) then you can issue a credit using the second account using expanded credit cababilities. To have this setting enabled contact customer support.
07-11-2018 01:39 PM
It would be in the same Authorize.net account.
I know about Expanded Credit Capabilities, but my understanding is that it can only be used after 120 days of the transaction OR if the transaction didn't happen through Authorize.net.
Is this correct in my understanding of ECC?
07-11-2018 08:19 PM
Bump...
07-19-2018 08:54 AM
Hi SilkySully,
Expanded Credit Capabilities will allow you to credit any full card number for any amount, regardless of any of your previous transaction history, which is the risk in enabling it within your account as anyone who can access your account or integration source to process a credit could potentially credit themselves with any amount to their own card or another card fraudulently.
We would only recommend enabling this on an as needed basis and then disabling it.
Please contact our support staff via the "Contact Us" or "Live Help" links located that the top of your account upon login for further assistance with understanding your liability in enabling this feature.
Thank you,
Elaine
07-20-2018 11:49 AM
Yes, you can certainly send funds to a different account using the CustomerProfileId and CustomerPaymentId, provided you have access to a payment processing system or service that supports such transactions. Here's a general outline of how you might go about doing this:
1. **Payment Gateway Integration**: Ensure that you are using a payment gateway that supports the use of CustomerProfileId and CustomerPaymentId. Examples include Authorize.Net, Stripe, PayPal, etc.
2. **API Documentation**: Refer to the API documentation of your payment gateway for specific methods to charge or credit a customer using their profile and payment IDs. Most payment gateways provide APIs to handle these transactions securely.
3. **Setup Transaction**:
- **Authorize.Net**: For example, in Authorize.Net, you can use the `createTransactionRequest` method to charge a customer profile.
- **Stripe**: In Stripe, you can use the `paymentIntents` API to create a payment or a refund.
Here’s a high-level example of how this might look for Authorize.Net:
### Authorize.Net Example (Node.js)
```javascript
const { APIContracts, APIControllers } = require('authorizenet');
const merchantAuthenticationType = new APIContracts.MerchantAuthenticationType();
merchantAuthenticationType.setName('YOUR_API_LOGIN_ID');
merchantAuthenticationType.setTransactionKey('YOUR_TRANSACTION_KEY');
const profileToCharge = new APIContracts.CustomerProfilePaymentType();
profileToCharge.setCustomerProfileId('CUSTOMER_PROFILE_ID');
profileToCharge.setPaymentProfile(new APIContracts.PaymentProfile({
paymentProfileId: 'CUSTOMER_PAYMENT_PROFILE_ID'
}));
const transactionRequest = new APIContracts.TransactionRequestType();
transactionRequest.setTransactionType(APIContracts.TransactionTypeEnum.AUTHCAPTURETRANSACTION);
transactionRequest.setProfile(profileToCharge);
transactionRequest.setAmount('100.00'); // Amount to charge
const createRequest = new APIContracts.CreateTransactionRequest();
createRequest.setMerchantAuthentication(merchantAuthenticationType);
createRequest.setTransactionRequest(transactionRequest);
const ctrl = new APIControllers.CreateTransactionController(createRequest.getJSON());
ctrl.execute(() => {
const apiResponse = ctrl.getResponse();
const response = new APIContracts.CreateTransactionResponse(apiResponse);
if (response != null) {
if (response.getMessages().getResultCode() === APIContracts.MessageTypeEnum.OK) {
console.log('Transaction successful');
} else {
console.log('Transaction failed');
}
} else {
console.log('Null response received');
}
});
```
### Stripe Example (Node.js)
```javascript
const stripe = require('stripe')('YOUR_STRIPE_SECRET_KEY');
(async () => {
const paymentIntent = await stripe.paymentIntents.create({
amount: 10000, // Amount in cents
currency: 'usd',
customer: 'CUSTOMER_PROFILE_ID',
payment_method: 'CUSTOMER_PAYMENT_PROFILE_ID',
off_session: true,
confirm: true,
});
console.log(paymentIntent);
})();
```
### Key Points:
- **Security**: Ensure all API keys and sensitive data are securely managed and not exposed in your codebase.
- **Error Handling**: Implement robust error handling to manage any issues that arise during the transaction process.
- **Compliance**: Ensure compliance with all relevant regulations and standards, such as PCI-DSS for payment processing.
This approach allows you to direct funds to a specific customer profile using their stored payment information, making the process efficient and secure.
05-31-2024 12:34 PM